60806040526000600560006101000a81548160ff021916908315150217905550733fc91a3afd70395cd496c647d5a6cc9d4b2b7fad600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620186a0600b55670de0b6b3a7640000600c556c0c9f2c9cd04674edea40000000600d55600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200015d57600080fd5b506040518060400160405280600781526020017f50696b61636875000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f50434855000000000000000000000000000000000000000000000000000000008152508181620001ec620001e06200026960201b60201c565b6200027160201b60201c565b816006908051906020019062000204929190620004b7565b5080600790805190602001906200021d929190620004b7565b50505050506200026333620002376200033560201b60201c565b600a62000245919062000701565b64174876e80062000257919062000752565b6200033e60201b60201c565b62000926565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620003b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003a89062000814565b60405180910390fd5b620003c560008383620004ad60201b60201c565b8060046000828254620003d9919062000836565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200048d9190620008a4565b60405180910390a3620004a960008383620004b260201b60201c565b5050565b505050565b505050565b828054620004c590620008f0565b90600052602060002090601f016020900481019282620004e9576000855562000535565b82601f106200050457805160ff191683800117855562000535565b8280016001018555821562000535579182015b828111156200053457825182559160200191906001019062000517565b5b50905062000544919062000548565b5090565b5b808211156200056357600081600090555060010162000549565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005f557808604811115620005cd57620005cc62000567565b5b6001851615620005dd5780820291505b8081029050620005ed8562000596565b9450620005ad565b94509492505050565b600082620006105760019050620006e3565b81620006205760009050620006e3565b816001811462000639576002811462000644576200067a565b6001915050620006e3565b60ff84111562000659576200065862000567565b5b8360020a91508482111562000673576200067262000567565b5b50620006e3565b5060208310610133831016604e8410600b8410161715620006b45782820a905083811115620006ae57620006ad62000567565b5b620006e3565b620006c38484846001620005a3565b92509050818404811115620006dd57620006dc62000567565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200070e82620006ea565b91506200071b83620006f4565b92506200074a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005fe565b905092915050565b60006200075f82620006ea565b91506200076c83620006ea565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007a857620007a762000567565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620007fc601f83620007b3565b91506200080982620007c4565b602082019050919050565b600060208201905081810360008301526200082f81620007ed565b9050919050565b60006200084382620006ea565b91506200085083620006ea565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000888576200088762000567565b5b828201905092915050565b6200089e81620006ea565b82525050565b6000602082019050620008bb600083018462000893565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200090957607f821691505b6020821081141562000920576200091f620008c1565b5b50919050565b61366b80620009366000396000f3fe6080604052600436106101bb5760003560e01c80637e7aaf37116100ec578063b79c48e51161008a578063dd62ed3e11610064578063dd62ed3e14610647578063e6bd3c0d14610684578063f2fde38b146106ad578063fb92b180146106d6576101fb565b8063b79c48e5146105de578063beabacc814610607578063c78052c614610630576101fb565b806399fda493116100c657806399fda49314610512578063a1c617f51461053b578063a457c2d714610564578063a9059cbb146105a1576101fb565b80637e7aaf37146104935780638da5cb5b146104bc57806395d89b41146104e7576101fb565b806339509351116101595780637111a994116101335780637111a99414610401578063715018a61461042a57806377a1736b146104415780637aac697b1461046a576101fb565b8063395093511461034a5780634551a9de1461038757806370a08231146103c4576101fb565b80631d63c093116101955780631d63c0931461029057806323b872dd146102b9578063313ce567146102f657806338bf3cfa14610321576101fb565b806306fdde03146101fd578063095ea7b31461022857806318160ddd14610265576101fb565b366101fb577f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587433346040516101f1929190612578565b60405180910390a1005b005b34801561020957600080fd5b506102126106ff565b60405161021f919061263a565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a91906126c8565b610791565b60405161025c9190612723565b60405180910390f35b34801561027157600080fd5b5061027a6107b4565b604051610287919061273e565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906126c8565b6107be565b005b3480156102c557600080fd5b506102e060048036038101906102db9190612759565b610aa4565b6040516102ed9190612723565b60405180910390f35b34801561030257600080fd5b5061030b610ad3565b60405161031891906127c8565b60405180910390f35b34801561032d57600080fd5b50610348600480360381019061034391906127e3565b610adc565b005b34801561035657600080fd5b50610371600480360381019061036c91906126c8565b610b28565b60405161037e9190612723565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a991906127e3565b610b5f565b6040516103bb9190612723565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e691906127e3565b610bb5565b6040516103f8919061273e565b60405180910390f35b34801561040d57600080fd5b50610428600480360381019061042391906128cb565b610bfe565b005b34801561043657600080fd5b5061043f610cf4565b005b34801561044d57600080fd5b506104686004803603810190610463919061297f565b610d08565b005b34801561047657600080fd5b50610491600480360381019061048c91906129cc565b610e92565b005b34801561049f57600080fd5b506104ba60048036038101906104b591906126c8565b61101e565b005b3480156104c857600080fd5b506104d161128f565b6040516104de9190612a40565b60405180910390f35b3480156104f357600080fd5b506104fc6112b8565b604051610509919061263a565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190612a5b565b61134a565b005b34801561054757600080fd5b50610562600480360381019061055d91906129cc565b61136c565b005b34801561057057600080fd5b5061058b600480360381019061058691906126c8565b6114f7565b6040516105989190612723565b60405180910390f35b3480156105ad57600080fd5b506105c860048036038101906105c391906126c8565b61156e565b6040516105d59190612723565b60405180910390f35b3480156105ea57600080fd5b50610605600480360381019061060091906126c8565b611591565b005b34801561061357600080fd5b5061062e60048036038101906106299190612759565b611847565b005b34801561063c57600080fd5b506106456118b1565b005b34801561065357600080fd5b5061066e60048036038101906106699190612aae565b611902565b60405161067b919061273e565b60405180910390f35b34801561069057600080fd5b506106ab60048036038101906106a6919061297f565b611989565b005b3480156106b957600080fd5b506106d460048036038101906106cf91906127e3565b611a36565b005b3480156106e257600080fd5b506106fd60048036038101906106f89190612aee565b611aba565b005b60606006805461070e90612b9e565b80601f016020809104026020016040519081016040528092919081815260200182805461073a90612b9e565b80156107875780601f1061075c57610100808354040283529160200191610787565b820191906000526020600020905b81548152906001019060200180831161076a57829003601f168201915b5050505050905090565b60008061079c611dfb565b90506107a9818585611e03565b600191505092915050565b6000600454905090565b6000600267ffffffffffffffff8111156107db576107da612bd0565b5b6040519080825280602002602001820160405280156108095781602001602082028036833780820191505090505b509050308160008151811061082157610820612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190612c43565b81600181518110610900576108ff612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061096930600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54611e03565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5600c5460018430426040518663ffffffff1660e01b81526004016109cf959493929190612d73565b6000604051808303816000875af11580156109ee573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610a179190612ef1565b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a97919061273e565b60405180910390a3505050565b600080610aaf611dfb565b9050610abc858285611fce565b610ac785858561205a565b60019150509392505050565b60006012905090565b610ae46123d2565b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080610b33611dfb565b9050610b54818585610b458589611902565b610b4f9190612f69565b611e03565b600191505092915050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60005b86869050811015610ceb57848482818110610c1f57610c1e612bff565b5b9050602002016020810190610c3491906127e3565b73ffffffffffffffffffffffffffffffffffffffff16878783818110610c5d57610c5c612bff565b5b9050602002016020810190610c7291906127e3565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef858585818110610cbc57610cbb612bff565b5b90506020020135604051610cd0919061273e565b60405180910390a38080610ce390612fbf565b915050610c01565b50505050505050565b610cfc6123d2565b610d066000612450565b565b610d106123d2565b60005b82829050811015610e8d57600160026000858585818110610d3757610d36612bff565b5b9050602002016020810190610d4c91906127e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16838383818110610de957610de8612bff565b5b9050602002016020810190610dfe91906127e3565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925610e65868686818110610e4b57610e4a612bff565b5b9050602002016020810190610e6091906127e3565b610bb5565b604051610e72919061273e565b60405180910390a38080610e8590612fbf565b915050610d13565b505050565b60005b8484905081101561101757848482818110610eb357610eb2612bff565b5b9050602002016020810190610ec891906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822600086866000604051610f4e9493929190613043565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16858583818110610fa257610fa1612bff565b5b9050602002016020810190610fb791906127e3565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610ffc919061273e565b60405180910390a3808061100f90612fbf565b915050610e95565b5050505050565b6000600267ffffffffffffffff81111561103b5761103a612bd0565b5b6040519080825280602002602001820160405280156110695781602001602082028036833780820191505090505b509050308160008151811061108157611080612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190612c43565b816001815181106111605761115f612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506111a5833084611e03565b6111b083308461205a565b6111dd30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e03565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe58360018430426040518663ffffffff1660e01b8152600401611241959493929190612d73565b6000604051808303816000875af1158015611260573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906112899190612ef1565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546112c790612b9e565b80601f01602080910402602001604051908101604052809291908181526020018280546112f390612b9e565b80156113405780601f1061131557610100808354040283529160200191611340565b820191906000526020600020905b81548152906001019060200180831161132357829003601f168201915b5050505050905090565b6113526123d2565b82600b8190555081600c8190555080600d81905550505050565b60005b848490508110156114f05784848281811061138d5761138c612bff565b5b90506020020160208101906113a291906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080876040516114279493929190613088565b60405180910390a384848281811061144257611441612bff565b5b905060200201602081019061145791906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114d5919061273e565b60405180910390a380806114e890612fbf565b91505061136f565b5050505050565b600080611502611dfb565b905060006115108286611902565b905083811015611555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154c9061313f565b60405180910390fd5b6115628286868403611e03565b60019250505092915050565b600080611579611dfb565b905061158681858561205a565b600191505092915050565b6000600267ffffffffffffffff8111156115ae576115ad612bd0565b5b6040519080825280602002602001820160405280156115dc5781602001602082028036833780820191505090505b509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116709190612c43565b8160008151811061168457611683612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505030816001815181106116d3576116d2612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab5600b5460018487426040518663ffffffff1660e01b8152600401611772949392919061315f565b60006040518083038185885af1158015611790573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f820116820180604052508101906117ba9190612ef1565b508273ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161183a919061273e565b60405180910390a3505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118a4919061273e565b60405180910390a3505050565b6118b96123d2565b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156118ff573d6000803e3d6000fd5b50565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6119916123d2565b60005b82829050811015611a31576000600260008585858181106119b8576119b7612bff565b5b90506020020160208101906119cd91906127e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611a2990612fbf565b915050611994565b505050565b611a3e6123d2565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa59061321d565b60405180910390fd5b611ab781612450565b50565b6000600267ffffffffffffffff811115611ad757611ad6612bd0565b5b604051908082528060200260200182016040528015611b055781602001602082028036833780820191505090505b509050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b999190612c43565b81600081518110611bad57611bac612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611bfc57611bfb612bff565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060005b85859050811015611df357600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637ff36ab5600b546001858a8a87818110611c9b57611c9a612bff565b5b9050602002016020810190611cb091906127e3565b426040518663ffffffff1660e01b8152600401611cd0949392919061315f565b60006040518083038185885af1158015611cee573d6000803e3d6000fd5b50505050506040513d6000823e3d601f19601f82011682018060405250810190611d189190612ef1565b50858582818110611d2c57611d2b612bff565b5b9050602002016020810190611d4191906127e3565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef868685818110611dc457611dc3612bff565b5b90506020020135604051611dd8919061273e565b60405180910390a38080611deb90612fbf565b915050611c39565b505050505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611e73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6a906132af565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eda90613341565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fc1919061273e565b60405180910390a3505050565b6000611fda8484611902565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146120545781811015612046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203d906133ad565b60405180910390fd5b6120538484848403611e03565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c19061343f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561213a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612131906134d1565b60405180910390fd5b612145838383612514565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c390613563565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123005750600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561235c5760011515600560009054906101000a900460ff1615151461235b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612352906135a9565b60405180910390fd5b5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123b9919061273e565b60405180910390a36123cc848484612519565b50505050565b6123da611dfb565b73ffffffffffffffffffffffffffffffffffffffff166123f861128f565b73ffffffffffffffffffffffffffffffffffffffff161461244e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244590613615565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125498261251e565b9050919050565b6125598161253e565b82525050565b6000819050919050565b6125728161255f565b82525050565b600060408201905061258d6000830185612550565b61259a6020830184612569565b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125db5780820151818401526020810190506125c0565b838111156125ea576000848401525b50505050565b6000601f19601f8301169050919050565b600061260c826125a1565b61261681856125ac565b93506126268185602086016125bd565b61262f816125f0565b840191505092915050565b600060208201905081810360008301526126548184612601565b905092915050565b6000604051905090565b600080fd5b600080fd5b6126798161253e565b811461268457600080fd5b50565b60008135905061269681612670565b92915050565b6126a58161255f565b81146126b057600080fd5b50565b6000813590506126c28161269c565b92915050565b600080604083850312156126df576126de612666565b5b60006126ed85828601612687565b92505060206126fe858286016126b3565b9150509250929050565b60008115159050919050565b61271d81612708565b82525050565b60006020820190506127386000830184612714565b92915050565b60006020820190506127536000830184612569565b92915050565b60008060006060848603121561277257612771612666565b5b600061278086828701612687565b935050602061279186828701612687565b92505060406127a2868287016126b3565b9150509250925092565b600060ff82169050919050565b6127c2816127ac565b82525050565b60006020820190506127dd60008301846127b9565b92915050565b6000602082840312156127f9576127f8612666565b5b600061280784828501612687565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261283557612834612810565b5b8235905067ffffffffffffffff81111561285257612851612815565b5b60208301915083602082028301111561286e5761286d61281a565b5b9250929050565b60008083601f84011261288b5761288a612810565b5b8235905067ffffffffffffffff8111156128a8576128a7612815565b5b6020830191508360208202830111156128c4576128c361281a565b5b9250929050565b600080600080600080606087890312156128e8576128e7612666565b5b600087013567ffffffffffffffff8111156129065761290561266b565b5b61291289828a0161281f565b9650965050602087013567ffffffffffffffff8111156129355761293461266b565b5b61294189828a0161281f565b9450945050604087013567ffffffffffffffff8111156129645761296361266b565b5b61297089828a01612875565b92509250509295509295509295565b6000806020838503121561299657612995612666565b5b600083013567ffffffffffffffff8111156129b4576129b361266b565b5b6129c08582860161281f565b92509250509250929050565b600080600080606085870312156129e6576129e5612666565b5b600085013567ffffffffffffffff811115612a0457612a0361266b565b5b612a108782880161281f565b94509450506020612a23878288016126b3565b9250506040612a34878288016126b3565b91505092959194509250565b6000602082019050612a556000830184612550565b92915050565b600080600060608486031215612a7457612a73612666565b5b6000612a82868287016126b3565b9350506020612a93868287016126b3565b9250506040612aa4868287016126b3565b9150509250925092565b60008060408385031215612ac557612ac4612666565b5b6000612ad385828601612687565b9250506020612ae485828601612687565b9150509250929050565b60008060008060408587031215612b0857612b07612666565b5b600085013567ffffffffffffffff811115612b2657612b2561266b565b5b612b328782880161281f565b9450945050602085013567ffffffffffffffff811115612b5557612b5461266b565b5b612b6187828801612875565b925092505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bb657607f821691505b60208210811415612bca57612bc9612b6f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612c3d81612670565b92915050565b600060208284031215612c5957612c58612666565b5b6000612c6784828501612c2e565b91505092915050565b6000819050919050565b6000819050919050565b6000612c9f612c9a612c9584612c70565b612c7a565b61255f565b9050919050565b612caf81612c84565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612cea8161253e565b82525050565b6000612cfc8383612ce1565b60208301905092915050565b6000602082019050919050565b6000612d2082612cb5565b612d2a8185612cc0565b9350612d3583612cd1565b8060005b83811015612d66578151612d4d8882612cf0565b9750612d5883612d08565b925050600181019050612d39565b5085935050505092915050565b600060a082019050612d886000830188612569565b612d956020830187612ca6565b8181036040830152612da78186612d15565b9050612db66060830185612550565b612dc36080830184612569565b9695505050505050565b612dd6826125f0565b810181811067ffffffffffffffff82111715612df557612df4612bd0565b5b80604052505050565b6000612e0861265c565b9050612e148282612dcd565b919050565b600067ffffffffffffffff821115612e3457612e33612bd0565b5b602082029050602081019050919050565b600081519050612e548161269c565b92915050565b6000612e6d612e6884612e19565b612dfe565b90508083825260208201905060208402830185811115612e9057612e8f61281a565b5b835b81811015612eb95780612ea58882612e45565b845260208401935050602081019050612e92565b5050509392505050565b600082601f830112612ed857612ed7612810565b5b8151612ee8848260208601612e5a565b91505092915050565b600060208284031215612f0757612f06612666565b5b600082015167ffffffffffffffff811115612f2557612f2461266b565b5b612f3184828501612ec3565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f748261255f565b9150612f7f8361255f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612fb457612fb3612f3a565b5b828201905092915050565b6000612fca8261255f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ffd57612ffc612f3a565b5b600182019050919050565b6000819050919050565b600061302d61302861302384613008565b612c7a565b61255f565b9050919050565b61303d81613012565b82525050565b60006080820190506130586000830187613034565b6130656020830186612569565b6130726040830185612569565b61307f6060830184613034565b95945050505050565b600060808201905061309d6000830187612569565b6130aa6020830186613034565b6130b76040830185613034565b6130c46060830184612569565b95945050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006131296025836125ac565b9150613134826130cd565b604082019050919050565b600060208201905081810360008301526131588161311c565b9050919050565b60006080820190506131746000830187612ca6565b81810360208301526131868186612d15565b90506131956040830185612550565b6131a26060830184612569565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132076026836125ac565b9150613212826131ab565b604082019050919050565b60006020820190508181036000830152613236816131fa565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132996024836125ac565b91506132a48261323d565b604082019050919050565b600060208201905081810360008301526132c88161328c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061332b6022836125ac565b9150613336826132cf565b604082019050919050565b6000602082019050818103600083015261335a8161331e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000613397601d836125ac565b91506133a282613361565b602082019050919050565b600060208201905081810360008301526133c68161338a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134296025836125ac565b9150613434826133cd565b604082019050919050565b600060208201905081810360008301526134588161341c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134bb6023836125ac565b91506134c68261345f565b604082019050919050565b600060208201905081810360008301526134ea816134ae565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061354d6026836125ac565b9150613558826134f1565b604082019050919050565b6000602082019050818103600083015261357c81613540565b9050919050565b50565b60006135936000836125ac565b915061359e82613583565b600082019050919050565b600060208201905081810360008301526135c281613586565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135ff6020836125ac565b915061360a826135c9565b602082019050919050565b6000602082019050818103600083015261362e816135f2565b905091905056fea2646970667358221220ca690fc25f459c6e0ba6eb3142174496339e6520086386403b97a77b558df1b664736f6c634300080c0033