0x60806040523480156200001157600080fd5b506040518060400160405280601281526020017f576869746542697450756e6b73546f6b656e00000000000000000000000000008152506000908162000058919062000470565b506040518060400160405280600381526020017f5742500000000000000000000000000000000000000000000000000000000000815250600190816200009f919062000470565b506012600260006101000a81548160ff021916908360ff160217905550600260009054906101000a900460ff1660ff16600a620000dd9190620006da565b62989680620000ed91906200072b565b60038190555064e8d4a5100060048190555033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600354604051620001e8919062000787565b60405180910390a3620007a4565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200027857607f821691505b6020821081036200028e576200028d62000230565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620002b9565b620003048683620002b9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003516200034b62000345846200031c565b62000326565b6200031c565b9050919050565b6000819050919050565b6200036d8362000330565b620003856200037c8262000358565b848454620002c6565b825550505050565b600090565b6200039c6200038d565b620003a981848462000362565b505050565b5b81811015620003d157620003c560008262000392565b600181019050620003af565b5050565b601f8211156200042057620003ea8162000294565b620003f584620002a9565b8101602085101562000405578190505b6200041d6200041485620002a9565b830182620003ae565b50505b505050565b600082821c905092915050565b6000620004456000198460080262000425565b1980831691505092915050565b600062000460838362000432565b9150826002028217905092915050565b6200047b82620001f6565b67ffffffffffffffff81111562000497576200049662000201565b5b620004a382546200025f565b620004b0828285620003d5565b600060209050601f831160018114620004e85760008415620004d3578287015190505b620004df858262000452565b8655506200054f565b601f198416620004f88662000294565b60005b828110156200052257848901518255600182019150602085019450602081019050620004fb565b868310156200054257848901516200053e601f89168262000432565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005e557808604811115620005bd57620005bc62000557565b5b6001851615620005cd5780820291505b8081029050620005dd8562000586565b94506200059d565b94509492505050565b600082620006005760019050620006d3565b81620006105760009050620006d3565b816001811462000629576002811462000634576200066a565b6001915050620006d3565b60ff84111562000649576200064862000557565b5b8360020a91508482111562000663576200066262000557565b5b50620006d3565b5060208310610133831016604e8410600b8410161715620006a45782820a9050838111156200069e576200069d62000557565b5b620006d3565b620006b3848484600162000593565b92509050818404811115620006cd57620006cc62000557565b5b81810290505b9392505050565b6000620006e7826200031c565b9150620006f4836200031c565b9250620007237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005ee565b905092915050565b600062000738826200031c565b915062000745836200031c565b925082820262000755816200031c565b915082820484148315176200076f576200076e62000557565b5b5092915050565b62000781816200031c565b82525050565b60006020820190506200079e600083018462000776565b92915050565b6116cd80620007b46000396000f3fe60806040526004361061009c5760003560e01c80633610724e116100645780633610724e1461019c57806370a08231146101cc5780637362377b1461020957806395d89b4114610220578063a9059cbb1461024b578063dd62ed3e146102885761009c565b806306fdde03146100a1578063095ea7b3146100cc57806318160ddd1461010957806323b872dd14610134578063313ce56714610171575b600080fd5b3480156100ad57600080fd5b506100b66102c5565b6040516100c39190610da9565b60405180910390f35b3480156100d857600080fd5b506100f360048036038101906100ee9190610e64565b610357565b6040516101009190610ebf565b60405180910390f35b34801561011557600080fd5b5061011e61036e565b60405161012b9190610ee9565b60405180910390f35b34801561014057600080fd5b5061015b60048036038101906101569190610f04565b610378565b6040516101689190610ebf565b60405180910390f35b34801561017d57600080fd5b50610186610422565b6040516101939190610f73565b60405180910390f35b6101b660048036038101906101b19190610f8e565b610439565b6040516101c39190610ebf565b60405180910390f35b3480156101d857600080fd5b506101f360048036038101906101ee9190610fbb565b6105bd565b6040516102009190610ee9565b60405180910390f35b34801561021557600080fd5b5061021e610606565b005b34801561022c57600080fd5b50610235610767565b6040516102429190610da9565b60405180910390f35b34801561025757600080fd5b50610272600480360381019061026d9190610e64565b6107f9565b60405161027f9190610ebf565b60405180910390f35b34801561029457600080fd5b506102af60048036038101906102aa9190610fe8565b610810565b6040516102bc9190610ee9565b60405180910390f35b6060600080546102d490611057565b80601f016020809104026020016040519081016040528092919081815260200182805461030090611057565b801561034d5780601f106103225761010080835404028352916020019161034d565b820191906000526020600020905b81548152906001019060200180831161033057829003601f168201915b5050505050905090565b6000610364338484610897565b6001905092915050565b6000600354905090565b6000610385848484610a60565b610417843384600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461041291906110b7565b610897565b600190509392505050565b6000600260009054906101000a900460ff16905090565b600080821161047d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047490611137565b60405180910390fd5b6003548211156104c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b9906111c9565b60405180910390fd5b6000826004546104d291906111e9565b905080341015610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050e90611277565b60405180910390fd5b82600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546105669190611297565b92505081905550826003600082825461057f91906110b7565b925050819055506105b3600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff163385610a60565b6001915050919050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068d90611317565b60405180910390fd5b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516106de90611368565b60006040518083038185875af1925050503d806000811461071b576040519150601f19603f3d011682016040523d82523d6000602084013e610720565b606091505b5050905080610764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075b906113c9565b60405180910390fd5b50565b60606001805461077690611057565b80601f01602080910402602001604051908101604052809291908181526020018280546107a290611057565b80156107ef5780601f106107c4576101008083540402835291602001916107ef565b820191906000526020600020905b8154815290600101906020018083116107d257829003601f168201915b5050505050905090565b6000610806338484610a60565b6001905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610906576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fd90611435565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c906114a1565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a539190610ee9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac69061150d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3590611579565b60405180910390fd5b60008111610b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b789061160b565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115610c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfa90611677565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c5291906110b7565b9250508190555080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ca89190611297565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d0c9190610ee9565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610d53578082015181840152602081019050610d38565b60008484015250505050565b6000601f19601f8301169050919050565b6000610d7b82610d19565b610d858185610d24565b9350610d95818560208601610d35565b610d9e81610d5f565b840191505092915050565b60006020820190508181036000830152610dc38184610d70565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610dfb82610dd0565b9050919050565b610e0b81610df0565b8114610e1657600080fd5b50565b600081359050610e2881610e02565b92915050565b6000819050919050565b610e4181610e2e565b8114610e4c57600080fd5b50565b600081359050610e5e81610e38565b92915050565b60008060408385031215610e7b57610e7a610dcb565b5b6000610e8985828601610e19565b9250506020610e9a85828601610e4f565b9150509250929050565b60008115159050919050565b610eb981610ea4565b82525050565b6000602082019050610ed46000830184610eb0565b92915050565b610ee381610e2e565b82525050565b6000602082019050610efe6000830184610eda565b92915050565b600080600060608486031215610f1d57610f1c610dcb565b5b6000610f2b86828701610e19565b9350506020610f3c86828701610e19565b9250506040610f4d86828701610e4f565b9150509250925092565b600060ff82169050919050565b610f6d81610f57565b82525050565b6000602082019050610f886000830184610f64565b92915050565b600060208284031215610fa457610fa3610dcb565b5b6000610fb284828501610e4f565b91505092915050565b600060208284031215610fd157610fd0610dcb565b5b6000610fdf84828501610e19565b91505092915050565b60008060408385031215610fff57610ffe610dcb565b5b600061100d85828601610e19565b925050602061101e85828601610e19565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061106f57607f821691505b60208210810361108257611081611028565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006110c282610e2e565b91506110cd83610e2e565b92508282039050818111156110e5576110e4611088565b5b92915050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000611121602083610d24565b915061112c826110eb565b602082019050919050565b6000602082019050818103600083015261115081611114565b9050919050565b7f496e73756666696369656e7420746f6b656e7320617661696c61626c6520666f60008201527f722073616c650000000000000000000000000000000000000000000000000000602082015250565b60006111b3602683610d24565b91506111be82611157565b604082019050919050565b600060208201905081810360008301526111e2816111a6565b9050919050565b60006111f482610e2e565b91506111ff83610e2e565b925082820261120d81610e2e565b9150828204841483151761122457611223611088565b5b5092915050565b7f496e73756666696369656e742045746865722073656e74000000000000000000600082015250565b6000611261601783610d24565b915061126c8261122b565b602082019050919050565b6000602082019050818103600083015261129081611254565b9050919050565b60006112a282610e2e565b91506112ad83610e2e565b92508282019050808211156112c5576112c4611088565b5b92915050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b6000611301601783610d24565b915061130c826112cb565b602082019050919050565b60006020820190508181036000830152611330816112f4565b9050919050565b600081905092915050565b50565b6000611352600083611337565b915061135d82611342565b600082019050919050565b600061137382611345565b9150819050919050565b7f5769746864726177206661696c65640000000000000000000000000000000000600082015250565b60006113b3600f83610d24565b91506113be8261137d565b602082019050919050565b600060208201905081810360008301526113e2816113a6565b9050919050565b7f417070726f76652066726f6d20746865207a65726f2061646472657373000000600082015250565b600061141f601d83610d24565b915061142a826113e9565b602082019050919050565b6000602082019050818103600083015261144e81611412565b9050919050565b7f417070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b600061148b601b83610d24565b915061149682611455565b602082019050919050565b600060208201905081810360008301526114ba8161147e565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b60006114f7601e83610d24565b9150611502826114c1565b602082019050919050565b60006020820190508181036000830152611526816114ea565b9050919050565b7f5472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b6000611563601c83610d24565b915061156e8261152d565b602082019050919050565b6000602082019050818103600083015261159281611556565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006115f5602983610d24565b915061160082611599565b604082019050919050565b60006020820190508181036000830152611624816115e8565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b6000611661601483610d24565b915061166c8261162b565b602082019050919050565b6000602082019050818103600083015261169081611654565b905091905056fea2646970667358221220d34935749dca0da5a3ce12a37e81e8ef3b8614f0f9650d05c239bf9b6552599b64736f6c63430008120033