608060405261141e600a55669536c708910000600b55669536c708910000600c556009600d5573034ff4c93efd09cc00f93ba35d79539d49924134600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600e60146101000a81548160ff02191690836003811115620000c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b02179055506001600e60156101000a81548160ff0219169083151502179055506040518060400160405280600581526020017f2e6a736f6e0000000000000000000000000000000000000000000000000000008152506011908051906020019062000134929190620003f9565b503480156200014257600080fd5b506040518060400160405280600c81526020017f556e69636f726e20436c756200000000000000000000000000000000000000008152506040518060400160405280600581526020017f55434c55420000000000000000000000000000000000000000000000000000008152508160029080519060200190620001c7929190620003f9565b508060039080519060200190620001e0929190620003f9565b50620001f16200025160201b60201c565b6000819055505050620002196200020d6200025660201b60201c565b6200025e60201b60201c565b60016009819055506200024b60405180606001604052806036815260200162005abb603691396200032460201b60201c565b62000591565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620003346200025660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200035a620003cf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003aa90620004d0565b60405180910390fd5b80600f9080519060200190620003cb929190620003f9565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620004079062000503565b90600052602060002090601f0160209004810192826200042b576000855562000477565b82601f106200044657805160ff191683800117855562000477565b8280016001018555821562000477579182015b828111156200047657825182559160200191906001019062000459565b5b5090506200048691906200048a565b5090565b5b80821115620004a55760008160009055506001016200048b565b5090565b6000620004b8602083620004f2565b9150620004c58262000568565b602082019050919050565b60006020820190508181036000830152620004eb81620004a9565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200051c57607f821691505b6020821081141562000533576200053262000539565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61551a80620005a16000396000f3fe6080604052600436106102875760003560e01c80636f9e621f1161015a578063c6275255116100c1578063e985e9c51161007a578063e985e9c51461092e578063ec5a2d451461096b578063f2c4ce1e14610982578063f2fde38b146109ab578063f9020e33146109d4578063ff501885146109ff57610287565b8063c62752551461083f578063c87b56dd14610868578063d5abeb01146108a5578063d63ba149146108d0578063e01de972146108ec578063e3eedde51461090357610287565b8063a22cb46511610113578063a22cb46514610766578063a89eb2381461078f578063a945bf80146107ab578063add5a4fa146107d6578063b88d4fde146107ff578063c23ee0ee1461082857610287565b80636f9e621f1461068e57806370a08231146106a5578063715018a6146106e25780638da5cb5b146106f95780638ff662ad1461072457806395d89b411461073b57610287565b80633ccfd60b116101fe57806355f804b3116101b757806355f804b3146105825780636352211e146105ab57806367243482146105e85780636c0360eb146106115780636c19e7831461063c5780636f8b44b01461066557610287565b80633ccfd60b1461047257806341c7145a1461048957806342842e0e146104c65780634f50b1c1146104ef578063518302271461052c5780635503a0e81461055757610287565b8063095ea7b311610250578063095ea7b31461038757806316ba10e0146103b057806318160ddd146103d957806323b872dd146104045780632db115441461042d5780633549345e1461044957610287565b80620e7fa81461028c57806301ffc9a7146102b757806306fdde03146102f4578063081812fc1461031f578063081c8c441461035c575b600080fd5b34801561029857600080fd5b506102a1610a3c565b6040516102ae9190614d25565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190614539565b610a42565b6040516102eb9190614b48565b60405180910390f35b34801561030057600080fd5b50610309610ad4565b6040516103169190614bc3565b60405180910390f35b34801561032b57600080fd5b50610346600480360381019061034191906145cc565b610b66565b6040516103539190614ae1565b60405180910390f35b34801561036857600080fd5b50610371610be2565b60405161037e9190614bc3565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190614488565b610c70565b005b3480156103bc57600080fd5b506103d760048036038101906103d2919061458b565b610db1565b005b3480156103e557600080fd5b506103ee610e47565b6040516103fb9190614d25565b60405180910390f35b34801561041057600080fd5b5061042b60048036038101906104269190614382565b610e5e565b005b610447600480360381019061044291906145cc565b611183565b005b34801561045557600080fd5b50610470600480360381019061046b91906145cc565b611333565b005b34801561047e57600080fd5b506104876113b9565b005b34801561049557600080fd5b506104b060048036038101906104ab919061431d565b611629565b6040516104bd9190614d25565b60405180910390f35b3480156104d257600080fd5b506104ed60048036038101906104e89190614382565b611641565b005b3480156104fb57600080fd5b506105166004803603810190610511919061431d565b611661565b6040516105239190614b48565b60405180910390f35b34801561053857600080fd5b50610541611681565b60405161054e9190614b48565b60405180910390f35b34801561056357600080fd5b5061056c611694565b6040516105799190614bc3565b60405180910390f35b34801561058e57600080fd5b506105a960048036038101906105a4919061458b565b611722565b005b3480156105b757600080fd5b506105d260048036038101906105cd91906145cc565b6117b8565b6040516105df9190614ae1565b60405180910390f35b3480156105f457600080fd5b5061060f600480360381019061060a91906144c4565b6117ca565b005b34801561061d57600080fd5b506106266119d9565b6040516106339190614bc3565b60405180910390f35b34801561064857600080fd5b50610663600480360381019061065e919061431d565b611a67565b005b34801561067157600080fd5b5061068c600480360381019061068791906145cc565b611b97565b005b34801561069a57600080fd5b506106a3611c62565b005b3480156106b157600080fd5b506106cc60048036038101906106c7919061431d565b611d31565b6040516106d99190614d25565b60405180910390f35b3480156106ee57600080fd5b506106f7611dea565b005b34801561070557600080fd5b5061070e611e72565b60405161071b9190614ae1565b60405180910390f35b34801561073057600080fd5b50610739611e9c565b005b34801561074757600080fd5b50610750611f6b565b60405161075d9190614bc3565b60405180910390f35b34801561077257600080fd5b5061078d6004803603810190610788919061444c565b611ffd565b005b6107a960048036038101906107a491906145f5565b612175565b005b3480156107b757600080fd5b506107c0612878565b6040516107cd9190614d25565b60405180910390f35b3480156107e257600080fd5b506107fd60048036038101906107f89190614488565b61287e565b005b34801561080b57600080fd5b50610826600480360381019061082191906143d1565b612956565b005b34801561083457600080fd5b5061083d6129c9565b005b34801561084b57600080fd5b50610866600480360381019061086191906145cc565b612a98565b005b34801561087457600080fd5b5061088f600480360381019061088a91906145cc565b612b1e565b60405161089c9190614bc3565b60405180910390f35b3480156108b157600080fd5b506108ba612cb2565b6040516108c79190614d25565b60405180910390f35b6108ea60048036038101906108e591906145f5565b612cb8565b005b3480156108f857600080fd5b506109016130d8565b005b34801561090f57600080fd5b506109186131a7565b6040516109259190614d25565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190614346565b6131ad565b6040516109629190614b48565b60405180910390f35b34801561097757600080fd5b50610980613241565b005b34801561098e57600080fd5b506109a960048036038101906109a4919061458b565b6132e9565b005b3480156109b757600080fd5b506109d260048036038101906109cd919061431d565b61337f565b005b3480156109e057600080fd5b506109e9613477565b6040516109f69190614ba8565b60405180910390f35b348015610a0b57600080fd5b50610a266004803603810190610a21919061431d565b61348a565b604051610a339190614d25565b60405180910390f35b600b5481565b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610a9d57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610acd5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b606060028054610ae390614ffd565b80601f0160208091040260200160405190810160405280929190818152602001828054610b0f90614ffd565b8015610b5c5780601f10610b3157610100808354040283529160200191610b5c565b820191906000526020600020905b815481529060010190602001808311610b3f57829003601f168201915b5050505050905090565b6000610b71826134a2565b610ba7576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60108054610bef90614ffd565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1b90614ffd565b8015610c685780601f10610c3d57610100808354040283529160200191610c68565b820191906000526020600020905b815481529060010190602001808311610c4b57829003601f168201915b505050505081565b6000610c7b826117b8565b90508073ffffffffffffffffffffffffffffffffffffffff16610c9c613501565b73ffffffffffffffffffffffffffffffffffffffff1614610cff57610cc881610cc3613501565b6131ad565b610cfe576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610db9613509565b73ffffffffffffffffffffffffffffffffffffffff16610dd7611e72565b73ffffffffffffffffffffffffffffffffffffffff1614610e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2490614ce5565b60405180910390fd5b8060119080519060200190610e439291906140ad565b5050565b6000610e51613511565b6001546000540303905090565b6000610e6982613516565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ed0576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610edc846135e4565b91509150610ef28187610eed613501565b613606565b610f3e57610f0786610f02613501565b6131ad565b610f3d576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415610fa5576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610fb2868686600161364a565b8015610fbd57600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001019190508190555061108b85611067888887613650565b7c020000000000000000000000000000000000000000000000000000000017613678565b600460008681526020019081526020016000208190555060007c020000000000000000000000000000000000000000000000000000000084161415611113576000600185019050600060046000838152602001908152602001600020541415611111576000548114611110578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461117b86868660016136a3565b505050505050565b600260095414156111c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c090614d05565b60405180910390fd5b600260098190555060038081111561120a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600e60149054906101000a900460ff166003811115611252577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14611289576040517fb7b2409700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5481611295610e47565b61129f9190614e2a565b11156112d7576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600c54816112e59190614eb1565b34101561131e576040517fd0afc53400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61132833826136a9565b600160098190555050565b61133b613509565b73ffffffffffffffffffffffffffffffffffffffff16611359611e72565b73ffffffffffffffffffffffffffffffffffffffff16146113af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a690614ce5565b60405180910390fd5b80600b8190555050565b6113c1613509565b73ffffffffffffffffffffffffffffffffffffffff166113df611e72565b73ffffffffffffffffffffffffffffffffffffffff1614611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142c90614ce5565b60405180910390fd5b60004790506000735c3bd2f60ced2c1ce8823697665e61fe030230b073ffffffffffffffffffffffffffffffffffffffff16612710611356846114789190614eb1565b6114829190614e80565b60405161148e90614a95565b60006040518083038185875af1925050503d80600081146114cb576040519150601f19603f3d011682016040523d82523d6000602084013e6114d0565b606091505b50509050600073866d8ec5e7072d9ed50b3e535d3de7afd51f689a73ffffffffffffffffffffffffffffffffffffffff16612710611356856115129190614eb1565b61151c9190614e80565b60405161152890614a95565b60006040518083038185875af1925050503d8060008114611565576040519150601f19603f3d011682016040523d82523d6000602084013e61156a565b606091505b505090506000736884efd53b2650679996d3ea206d116356da08a973ffffffffffffffffffffffffffffffffffffffff166127106064866115ab9190614eb1565b6115b59190614e80565b6040516115c190614a95565b60006040518083038185875af1925050503d80600081146115fe576040519150601f19603f3d011682016040523d82523d6000602084013e611603565b606091505b505090508280156116115750815b801561161a5750805b61162357600080fd5b50505050565b60146020528060005260406000206000915090505481565b61165c83838360405180602001604052806000815250612956565b505050565b60136020528060005260406000206000915054906101000a900460ff1681565b600e60159054906101000a900460ff1681565b601180546116a190614ffd565b80601f01602080910402602001604051908101604052809291908181526020018280546116cd90614ffd565b801561171a5780601f106116ef5761010080835404028352916020019161171a565b820191906000526020600020905b8154815290600101906020018083116116fd57829003601f168201915b505050505081565b61172a613509565b73ffffffffffffffffffffffffffffffffffffffff16611748611e72565b73ffffffffffffffffffffffffffffffffffffffff161461179e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179590614ce5565b60405180910390fd5b80600f90805190602001906117b49291906140ad565b5050565b60006117c382613516565b9050919050565b6117d2613509565b73ffffffffffffffffffffffffffffffffffffffff166117f0611e72565b73ffffffffffffffffffffffffffffffffffffffff1614611846576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183d90614ce5565b60405180910390fd5b81819050848490501461188e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188590614c65565b60405180910390fd5b60005b848490508110156119d257600a546118a7610e47565b8484848181106118e0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201356118f19190614e2a565b1115611929576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119bf858583818110611965577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061197a919061431d565b8484848181106119b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201356136a9565b80806119ca90615060565b915050611891565b5050505050565b600f80546119e690614ffd565b80601f0160208091040260200160405190810160405280929190818152602001828054611a1290614ffd565b8015611a5f5780601f10611a3457610100808354040283529160200191611a5f565b820191906000526020600020905b815481529060010190602001808311611a4257829003601f168201915b505050505081565b611a6f613509565b73ffffffffffffffffffffffffffffffffffffffff16611a8d611e72565b73ffffffffffffffffffffffffffffffffffffffff1614611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada90614ce5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4a90614ca5565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b9f613509565b73ffffffffffffffffffffffffffffffffffffffff16611bbd611e72565b73ffffffffffffffffffffffffffffffffffffffff1614611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90614ce5565b60405180910390fd5b600a54811115611c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4f90614c25565b60405180910390fd5b80600a8190555050565b611c6a613509565b73ffffffffffffffffffffffffffffffffffffffff16611c88611e72565b73ffffffffffffffffffffffffffffffffffffffff1614611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd590614ce5565b60405180910390fd5b6002600e60146101000a81548160ff02191690836003811115611d2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b0217905550565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d99576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b611df2613509565b73ffffffffffffffffffffffffffffffffffffffff16611e10611e72565b73ffffffffffffffffffffffffffffffffffffffff1614611e66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5d90614ce5565b60405180910390fd5b611e70600061387d565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611ea4613509565b73ffffffffffffffffffffffffffffffffffffffff16611ec2611e72565b73ffffffffffffffffffffffffffffffffffffffff1614611f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0f90614ce5565b60405180910390fd5b6001600e60146101000a81548160ff02191690836003811115611f64577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b0217905550565b606060038054611f7a90614ffd565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa690614ffd565b8015611ff35780601f10611fc857610100808354040283529160200191611ff3565b820191906000526020600020905b815481529060010190602001808311611fd657829003601f168201915b5050505050905090565b612005613501565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561206a576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000612077613501565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612124613501565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516121699190614b48565b60405180910390a35050565b600260095414156121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290614d05565b60405180910390fd5b6002600981905550600082336040516020016121d8929190614aaa565b604051602081830303815290604052805190602001209050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166122448361223684613943565b61397390919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1614612291576040517f99c69e4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160038111156122cd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600e60149054906101000a900460ff166003811115612315577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1461234c576040517fb7b2409700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b548561235a9190614eb1565b341015612393576040517fd0afc53400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8385601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123df9190614e2a565b1115612417576040517fc3b708de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124669190614e2a565b92505081905550600d54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061250e576001601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414801561259d5750600d54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054105b1561260657601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906125f290615060565b9190505550808061260290615060565b9150505b6001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480156126965750600d54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156126ff57601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906126eb90615060565b919050555080806126fb90615060565b9150505b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414801561278f5750600d54601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156127fb576002601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127e49190614e2a565b925050819055506002816127f89190614e2a565b90505b600a548186612808610e47565b6128129190614e2a565b61281c9190614e2a565b1115612854576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6128693382876128649190614e2a565b6136a9565b50506001600981905550505050565b600c5481565b612886613509565b73ffffffffffffffffffffffffffffffffffffffff166128a4611e72565b73ffffffffffffffffffffffffffffffffffffffff16146128fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f190614ce5565b60405180910390fd5b600a54612905610e47565b826129109190614e2a565b1115612948576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61295282826136a9565b5050565b612961848484610e5e565b60008373ffffffffffffffffffffffffffffffffffffffff163b146129c35761298c8484848461399a565b6129c2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6129d1613509565b73ffffffffffffffffffffffffffffffffffffffff166129ef611e72565b73ffffffffffffffffffffffffffffffffffffffff1614612a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3c90614ce5565b60405180910390fd5b6003600e60146101000a81548160ff02191690836003811115612a91577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b0217905550565b612aa0613509565b73ffffffffffffffffffffffffffffffffffffffff16612abe611e72565b73ffffffffffffffffffffffffffffffffffffffff1614612b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0b90614ce5565b60405180910390fd5b80600c8190555050565b606060001515600e60159054906101000a900460ff1615151415612bce5760108054612b4990614ffd565b80601f0160208091040260200160405190810160405280929190818152602001828054612b7590614ffd565b8015612bc25780601f10612b9757610100808354040283529160200191612bc2565b820191906000526020600020905b815481529060010190602001808311612ba557829003601f168201915b50505050509050612cad565b6000600f8054612bdd90614ffd565b80601f0160208091040260200160405190810160405280929190818152602001828054612c0990614ffd565b8015612c565780601f10612c2b57610100808354040283529160200191612c56565b820191906000526020600020905b815481529060010190602001808311612c3957829003601f168201915b505050505090506000815111612c7b5760405180602001604052806000815250612ca9565b80612c8584613afa565b6011604051602001612c9993929190614a07565b6040516020818303038152906040525b9150505b919050565b600a5481565b60026009541415612cfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf590614d05565b60405180910390fd5b60026009819055506000808333604051602001612d1c929190614a5e565b604051602081830303815290604052805190602001209050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612d8884612d7a84613943565b61397390919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff1614612dd5576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115612e0f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600e60149054906101000a900460ff166003811115612e57577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14612e8e576040517fb7b2409700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b5485612e9c9190614eb1565b341015612ed5576040517fd0afc53400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8385601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f219190614e2a565b1115612f59576040517fc3b708de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612fa89190614e2a565b925050819055506000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561305b57601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061304790615060565b9190505550818061305790615060565b9250505b600a548286613068610e47565b6130729190614e2a565b61307c9190614e2a565b11156130b4576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130c93383876130c49190614e2a565b6136a9565b50506001600981905550505050565b6130e0613509565b73ffffffffffffffffffffffffffffffffffffffff166130fe611e72565b73ffffffffffffffffffffffffffffffffffffffff1614613154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161314b90614ce5565b60405180910390fd5b6000600e60146101000a81548160ff021916908360038111156131a0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b0217905550565b600d5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b613249613509565b73ffffffffffffffffffffffffffffffffffffffff16613267611e72565b73ffffffffffffffffffffffffffffffffffffffff16146132bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132b490614ce5565b60405180910390fd5b600e60159054906101000a900460ff1615600e60156101000a81548160ff021916908315150217905550565b6132f1613509565b73ffffffffffffffffffffffffffffffffffffffff1661330f611e72565b73ffffffffffffffffffffffffffffffffffffffff1614613365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335c90614ce5565b60405180910390fd5b806010908051906020019061337b9291906140ad565b5050565b613387613509565b73ffffffffffffffffffffffffffffffffffffffff166133a5611e72565b73ffffffffffffffffffffffffffffffffffffffff16146133fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133f290614ce5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561346b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161346290614c45565b60405180910390fd5b6134748161387d565b50565b600e60149054906101000a900460ff1681565b60126020528060005260406000206000915090505481565b6000816134ad613511565b111580156134bc575060005482105b80156134fa575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b600033905090565b600090565b60008082905080613525613511565b116135ad576000548110156135ac5760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821614156135aa575b60008114156135a0576004600083600190039350838152602001908152602001600020549050613575565b80925050506135df565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000806000600690508360005280602052604060002092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8613667868684613b54565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613716576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415613751576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61375e600084838561364a565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055506137d5836137c66000866000613650565b6137cf85613b5d565b17613678565b60046000838152602001908152602001600020819055506000819050600083830190505b818060010192508573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48082106137f95780600081905550505061387860008483856136a3565b505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000816040516020016139569190614a38565b604051602081830303815290604052805190602001209050919050565b60008060006139828585613b6d565b9150915061398f81613bf0565b819250505092915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026139c0613501565b8786866040518563ffffffff1660e01b81526004016139e29493929190614afc565b602060405180830381600087803b1580156139fc57600080fd5b505af1925050508015613a2d57506040513d601f19601f82011682018060405250810190613a2a9190614562565b60015b613aa7573d8060008114613a5d576040519150601f19603f3d011682016040523d82523d6000602084013e613a62565b606091505b50600081511415613a9f576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606080604051019050806040528082600183039250600a81066030018353600a810490505b8015613b4057600183039250600a81066030018353600a81049050613b20565b508181036020830392508083525050919050565b60009392505050565b60006001821460e11b9050919050565b600080604183511415613baf5760008060006020860151925060408601519150606086015160001a9050613ba387828585613f41565b94509450505050613be9565b604083511415613be0576000806020850151915060408501519050613bd586838361404e565b935093505050613be9565b60006002915091505b9250929050565b60006004811115613c2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115613c63577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613c6e57613f3e565b60016004811115613ca8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115613ce1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d1990614be5565b60405180910390fd5b60026004811115613d5c577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115613d95577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dcd90614c05565b60405180910390fd5b60036004811115613e10577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115613e49577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e8190614c85565b60405180910390fd5b600480811115613ec3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b816004811115613efc577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b1415613f3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f3490614cc5565b60405180910390fd5b5b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115613f7c576000600391509150614045565b601b8560ff1614158015613f945750601c8560ff1614155b15613fa6576000600491509150614045565b600060018787878760405160008152602001604052604051613fcb9493929190614b63565b6020604051602081039080840390855afa158015613fed573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561403c57600060019250925050614045565b80600092509250505b94509492505050565b60008060007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60001b841690506000601b60ff8660001c901c6140919190614e2a565b905061409f87828885613f41565b935093505050935093915050565b8280546140b990614ffd565b90600052602060002090601f0160209004810192826140db5760008555614122565b82601f106140f457805160ff1916838001178555614122565b82800160010185558215614122579182015b82811115614121578251825591602001919060010190614106565b5b50905061412f9190614133565b5090565b5b8082111561414c576000816000905550600101614134565b5090565b600061416361415e84614d65565b614d40565b90508281526020810184848401111561417b57600080fd5b614186848285614fbb565b509392505050565b60006141a161419c84614d96565b614d40565b9050828152602081018484840111156141b957600080fd5b6141c4848285614fbb565b509392505050565b6000813590506141db81615488565b92915050565b60008083601f8401126141f357600080fd5b8235905067ffffffffffffffff81111561420c57600080fd5b60208301915083602082028301111561422457600080fd5b9250929050565b60008083601f84011261423d57600080fd5b8235905067ffffffffffffffff81111561425657600080fd5b60208301915083602082028301111561426e57600080fd5b9250929050565b6000813590506142848161549f565b92915050565b600081359050614299816154b6565b92915050565b6000815190506142ae816154b6565b92915050565b600082601f8301126142c557600080fd5b81356142d5848260208601614150565b91505092915050565b600082601f8301126142ef57600080fd5b81356142ff84826020860161418e565b91505092915050565b600081359050614317816154cd565b92915050565b60006020828403121561432f57600080fd5b600061433d848285016141cc565b91505092915050565b6000806040838503121561435957600080fd5b6000614367858286016141cc565b9250506020614378858286016141cc565b9150509250929050565b60008060006060848603121561439757600080fd5b60006143a5868287016141cc565b93505060206143b6868287016141cc565b92505060406143c786828701614308565b9150509250925092565b600080600080608085870312156143e757600080fd5b60006143f5878288016141cc565b9450506020614406878288016141cc565b935050604061441787828801614308565b925050606085013567ffffffffffffffff81111561443457600080fd5b614440878288016142b4565b91505092959194509250565b6000806040838503121561445f57600080fd5b600061446d858286016141cc565b925050602061447e85828601614275565b9150509250929050565b6000806040838503121561449b57600080fd5b60006144a9858286016141cc565b92505060206144ba85828601614308565b9150509250929050565b600080600080604085870312156144da57600080fd5b600085013567ffffffffffffffff8111156144f457600080fd5b614500878288016141e1565b9450945050602085013567ffffffffffffffff81111561451f57600080fd5b61452b8782880161422b565b925092505092959194509250565b60006020828403121561454b57600080fd5b60006145598482850161428a565b91505092915050565b60006020828403121561457457600080fd5b60006145828482850161429f565b91505092915050565b60006020828403121561459d57600080fd5b600082013567ffffffffffffffff8111156145b757600080fd5b6145c3848285016142de565b91505092915050565b6000602082840312156145de57600080fd5b60006145ec84828501614308565b91505092915050565b60008060006060848603121561460a57600080fd5b600061461886828701614308565b935050602061462986828701614308565b925050604084013567ffffffffffffffff81111561464657600080fd5b614652868287016142b4565b9150509250925092565b61466581614f0b565b82525050565b61467c61467782614f0b565b6150a9565b82525050565b61468b81614f1d565b82525050565b61469a81614f29565b82525050565b6146b16146ac82614f29565b6150bb565b82525050565b60006146c282614ddc565b6146cc8185614df2565b93506146dc818560208601614fca565b6146e5816151cc565b840191505092915050565b6146f981614fa9565b82525050565b600061470a82614de7565b6147148185614e0e565b9350614724818560208601614fca565b61472d816151cc565b840191505092915050565b600061474382614de7565b61474d8185614e1f565b935061475d818560208601614fca565b80840191505092915050565b6000815461477681614ffd565b6147808186614e1f565b9450600182166000811461479b57600181146147ac576147df565b60ff198316865281860193506147df565b6147b585614dc7565b60005b838110156147d7578154818901526001820191506020810190506147b8565b838801955050505b50505092915050565b60006147f5601883614e0e565b9150614800826151ea565b602082019050919050565b6000614818601f83614e0e565b915061482382615213565b602082019050919050565b600061483b601c83614e1f565b91506148468261523c565b601c82019050919050565b600061485e601583614e0e565b915061486982615265565b602082019050919050565b6000614881602683614e0e565b915061488c8261528e565b604082019050919050565b60006148a4601183614e0e565b91506148af826152dd565b602082019050919050565b60006148c7602283614e0e565b91506148d282615306565b604082019050919050565b60006148ea601383614e0e565b91506148f582615355565b602082019050919050565b600061490d602283614e0e565b91506149188261537e565b604082019050919050565b6000614930600783614e1f565b915061493b826153cd565b600782019050919050565b6000614953602083614e0e565b915061495e826153f6565b602082019050919050565b6000614976600083614e03565b91506149818261541f565b600082019050919050565b6000614999601f83614e0e565b91506149a482615422565b602082019050919050565b60006149bc600283614e1f565b91506149c78261544b565b600282019050919050565b6149db81614f92565b82525050565b6149f26149ed82614f92565b6150d7565b82525050565b614a0181614f9c565b82525050565b6000614a138286614738565b9150614a1f8285614738565b9150614a2b8284614769565b9150819050949350505050565b6000614a438261482e565b9150614a4f82846146a0565b60208201915081905092915050565b6000614a6982614923565b9150614a7582856149e1565b602082019150614a85828461466b565b6014820191508190509392505050565b6000614aa082614969565b9150819050919050565b6000614ab5826149af565b9150614ac182856149e1565b602082019150614ad1828461466b565b6014820191508190509392505050565b6000602082019050614af6600083018461465c565b92915050565b6000608082019050614b11600083018761465c565b614b1e602083018661465c565b614b2b60408301856149d2565b8181036060830152614b3d81846146b7565b905095945050505050565b6000602082019050614b5d6000830184614682565b92915050565b6000608082019050614b786000830187614691565b614b8560208301866149f8565b614b926040830185614691565b614b9f6060830184614691565b95945050505050565b6000602082019050614bbd60008301846146f0565b92915050565b60006020820190508181036000830152614bdd81846146ff565b905092915050565b60006020820190508181036000830152614bfe816147e8565b9050919050565b60006020820190508181036000830152614c1e8161480b565b9050919050565b60006020820190508181036000830152614c3e81614851565b9050919050565b60006020820190508181036000830152614c5e81614874565b9050919050565b60006020820190508181036000830152614c7e81614897565b9050919050565b60006020820190508181036000830152614c9e816148ba565b9050919050565b60006020820190508181036000830152614cbe816148dd565b9050919050565b60006020820190508181036000830152614cde81614900565b9050919050565b60006020820190508181036000830152614cfe81614946565b9050919050565b60006020820190508181036000830152614d1e8161498c565b9050919050565b6000602082019050614d3a60008301846149d2565b92915050565b6000614d4a614d5b565b9050614d56828261502f565b919050565b6000604051905090565b600067ffffffffffffffff821115614d8057614d7f61519d565b5b614d89826151cc565b9050602081019050919050565b600067ffffffffffffffff821115614db157614db061519d565b5b614dba826151cc565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614e3582614f92565b9150614e4083614f92565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614e7557614e746150e1565b5b828201905092915050565b6000614e8b82614f92565b9150614e9683614f92565b925082614ea657614ea5615110565b5b828204905092915050565b6000614ebc82614f92565b9150614ec783614f92565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614f0057614eff6150e1565b5b828202905092915050565b6000614f1682614f72565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6000819050614f6d82615474565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614fb482614f5f565b9050919050565b82818337600083830152505050565b60005b83811015614fe8578082015181840152602081019050614fcd565b83811115614ff7576000848401525b50505050565b6000600282049050600182168061501557607f821691505b602082108114156150295761502861516e565b5b50919050565b615038826151cc565b810181811067ffffffffffffffff821117156150575761505661519d565b5b80604052505050565b600061506b82614f92565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561509e5761509d6150e1565b5b600182019050919050565b60006150b4826150c5565b9050919050565b6000819050919050565b60006150d0826151dd565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f43616e277420496e63726561736520537570706c790000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f417272617973204d757374204d61746368000000000000000000000000000000600082015250565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f43414e2754205055542030204144445245535300000000000000000000000000600082015250565b7f45434453413a20696e76616c6964207369676e6174757265202776272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b7f50524553414c4500000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f4f47000000000000000000000000000000000000000000000000000000000000600082015250565b600481106154855761548461513f565b5b50565b61549181614f0b565b811461549c57600080fd5b50565b6154a881614f1d565b81146154b357600080fd5b50565b6154bf81614f33565b81146154ca57600080fd5b50565b6154d681614f92565b81146154e157600080fd5b5056fea2646970667358221220cab984fc455e3e3cc6d24d33d5418e4b5470b97eaf88d5b604fe3458bbccfff164736f6c63430008040033697066733a2f2f516d56726632646f3556674d414c634471646650796f5966583565426f4c32783675666d524a477a6631353332762f