0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a9059cbb11610066578063a9059cbb146102a1578063d505accf146102d1578063dd62ed3e146102ed578063f2fde38b1461031d57610100565b8063715018a61461022b5780637ecebe00146102355780638da5cb5b1461026557806395d89b411461028357610100565b806323b872dd116100d357806323b872dd1461018f57806330adf81f146101bf578063313ce567146101dd57806370a08231146101fb57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806320606b7014610171575b600080fd5b61010d610339565b60405161011a91906113c9565b60405180910390f35b61013d60048036038101906101389190611484565b6103cb565b60405161014a91906114df565b60405180910390f35b61015b6103e9565b6040516101689190611509565b60405180910390f35b6101796103f3565b604051610186919061153d565b60405180910390f35b6101a960048036038101906101a49190611558565b610417565b6040516101b691906114df565b60405180910390f35b6101c76104f0565b6040516101d4919061153d565b60405180910390f35b6101e5610514565b6040516101f291906115c7565b60405180910390f35b610215600480360381019061021091906115e2565b61052b565b6040516102229190611509565b60405180910390f35b610233610573565b005b61024f600480360381019061024a91906115e2565b610587565b60405161025c9190611509565b60405180910390f35b61026d61059f565b60405161027a919061161e565b60405180910390f35b61028b6105c9565b60405161029891906113c9565b60405180910390f35b6102bb60048036038101906102b69190611484565b61065b565b6040516102c891906114df565b60405180910390f35b6102eb60048036038101906102e69190611691565b610679565b005b61030760048036038101906103029190611733565b610904565b6040516103149190611509565b60405180910390f35b610337600480360381019061033291906115e2565b61098b565b005b606060038054610348906117a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610374906117a2565b80156103c15780601f10610396576101008083540402835291602001916103c1565b820191906000526020600020905b8154815290600101906020018083116103a457829003601f168201915b5050505050905090565b60006103df6103d8610a0e565b8484610a16565b6001905092915050565b6000600254905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610424848484610bdf565b6104e584610430610a0e565b6104e08560405180606001604052806028815260200161200d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610496610a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7d9092919063ffffffff16565b610a16565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6000600560009054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61057b610ee1565b6105856000610f5f565b565b60066020528060005260406000206000915090505481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105d8906117a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610604906117a2565b80156106515780601f1061062657610100808354040283529160200191610651565b820191906000526020600020905b81548152906001019060200180831161063457829003601f168201915b5050505050905090565b600061066f610668610a0e565b8484610bdf565b6001905092915050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86660036040516106ab9190611876565b60405180910390206106bb611025565b306040516020016106cf949392919061188d565b60405160208183030381529060405280519060200120905060007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9898989600660008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061075d90611901565b919050558a60405160200161077796959493929190611949565b604051602081830303815290604052805190602001209050600082826040516020016107a4929190611a22565b60405160208183030381529060405280519060200120905060006107ca82888888611032565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361083b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083290611aa5565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a090611b11565b60405180910390fd5b874211156108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e390611b7d565b60405180910390fd5b6108f78b8b8b610a16565b5050505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610993610ee1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990611c0f565b60405180910390fd5b610a0b81610f5f565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90611ca1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb90611d33565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610bd29190611509565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4590611dc5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb490611e57565b60405180910390fd5b610cc8838383611062565b610d3381604051806060016040528060268152602001611fe7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e659190611509565b60405180910390a3610e788383836110c5565b505050565b6000838311158290610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc91906113c9565b60405180910390fd5b5060008385610ed49190611e77565b9050809150509392505050565b610ee9610a0e565b73ffffffffffffffffffffffffffffffffffffffff16610f0761059f565b73ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490611ef7565b60405180910390fd5b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000804690508091505090565b600080600080611044888888886110ca565b92509250925061105482826111d5565b829350505050949350505050565b505050565b60008082846110769190611f17565b9050838110156110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290611f97565b60405180910390fd5b8091505092915050565b505050565b600080600080339050601b8760ff16141580156110eb5750601c8760ff1614155b80156110fb57506000602060ff16145b1561113d577f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08560001c111561113c576000600386935093509350506111cb565b5b731828f382d3e6fe000000000000000000000000007316b6f7fa2742ebdd4d47a6d1907dbb77fada562901818103611173578694505b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146111bb578360008060001b935093509350506111cb565b600060016000801b935093509350505b9450945094915050565b600060038111156111e9576111e8611fb7565b5b8260038111156111fc576111fb611fb7565b5b0315611335576001600381111561121657611215611fb7565b5b82600381111561122957611228611fb7565b5b03611260576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561127457611273611fb7565b5b82600381111561128757611286611fb7565b5b036112cc578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016112c39190611509565b60405180910390fd5b6003808111156112df576112de611fb7565b5b8260038111156112f2576112f1611fb7565b5b0361133457806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161132b919061153d565b60405180910390fd5b5b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611373578082015181840152602081019050611358565b60008484015250505050565b6000601f19601f8301169050919050565b600061139b82611339565b6113a58185611344565b93506113b5818560208601611355565b6113be8161137f565b840191505092915050565b600060208201905081810360008301526113e38184611390565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061141b826113f0565b9050919050565b61142b81611410565b811461143657600080fd5b50565b60008135905061144881611422565b92915050565b6000819050919050565b6114618161144e565b811461146c57600080fd5b50565b60008135905061147e81611458565b92915050565b6000806040838503121561149b5761149a6113eb565b5b60006114a985828601611439565b92505060206114ba8582860161146f565b9150509250929050565b60008115159050919050565b6114d9816114c4565b82525050565b60006020820190506114f460008301846114d0565b92915050565b6115038161144e565b82525050565b600060208201905061151e60008301846114fa565b92915050565b6000819050919050565b61153781611524565b82525050565b6000602082019050611552600083018461152e565b92915050565b600080600060608486031215611571576115706113eb565b5b600061157f86828701611439565b935050602061159086828701611439565b92505060406115a18682870161146f565b9150509250925092565b600060ff82169050919050565b6115c1816115ab565b82525050565b60006020820190506115dc60008301846115b8565b92915050565b6000602082840312156115f8576115f76113eb565b5b600061160684828501611439565b91505092915050565b61161881611410565b82525050565b6000602082019050611633600083018461160f565b92915050565b611642816115ab565b811461164d57600080fd5b50565b60008135905061165f81611639565b92915050565b61166e81611524565b811461167957600080fd5b50565b60008135905061168b81611665565b92915050565b600080600080600080600060e0888a0312156116b0576116af6113eb565b5b60006116be8a828b01611439565b97505060206116cf8a828b01611439565b96505060406116e08a828b0161146f565b95505060606116f18a828b0161146f565b94505060806117028a828b01611650565b93505060a06117138a828b0161167c565b92505060c06117248a828b0161167c565b91505092959891949750929550565b6000806040838503121561174a576117496113eb565b5b600061175885828601611439565b925050602061176985828601611439565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806117ba57607f821691505b6020821081036117cd576117cc611773565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154611800816117a2565b61180a81866117d3565b94506001821660008114611825576001811461183a5761186d565b60ff198316865281151582028601935061186d565b611843856117de565b60005b8381101561186557815481890152600182019150602081019050611846565b838801955050505b50505092915050565b600061188282846117f3565b915081905092915050565b60006080820190506118a2600083018761152e565b6118af602083018661152e565b6118bc60408301856114fa565b6118c9606083018461160f565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061190c8261144e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361193e5761193d6118d2565b5b600182019050919050565b600060c08201905061195e600083018961152e565b61196b602083018861160f565b611978604083018761160f565b61198560608301866114fa565b61199260808301856114fa565b61199f60a08301846114fa565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006119eb6002836119aa565b91506119f6826119b5565b600282019050919050565b6000819050919050565b611a1c611a1782611524565b611a01565b82525050565b6000611a2d826119de565b9150611a398285611a0b565b602082019150611a498284611a0b565b6020820191508190509392505050565b7f7065726d69743a20696e76616c6964207369676e617475726500000000000000600082015250565b6000611a8f601983611344565b9150611a9a82611a59565b602082019050919050565b60006020820190508181036000830152611abe81611a82565b9050919050565b7f7065726d69743a20756e617574686f72697a6564000000000000000000000000600082015250565b6000611afb601483611344565b9150611b0682611ac5565b602082019050919050565b60006020820190508181036000830152611b2a81611aee565b9050919050565b7f7065726d69743a207369676e6174757265206578706972656400000000000000600082015250565b6000611b67601983611344565b9150611b7282611b31565b602082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611bf9602683611344565b9150611c0482611b9d565b604082019050919050565b60006020820190508181036000830152611c2881611bec565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611c8b602483611344565b9150611c9682611c2f565b604082019050919050565b60006020820190508181036000830152611cba81611c7e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d1d602283611344565b9150611d2882611cc1565b604082019050919050565b60006020820190508181036000830152611d4c81611d10565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611daf602583611344565b9150611dba82611d53565b604082019050919050565b60006020820190508181036000830152611dde81611da2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611e41602383611344565b9150611e4c82611de5565b604082019050919050565b60006020820190508181036000830152611e7081611e34565b9050919050565b6000611e828261144e565b9150611e8d8361144e565b9250828203905081811115611ea557611ea46118d2565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611ee1602083611344565b9150611eec82611eab565b602082019050919050565b60006020820190508181036000830152611f1081611ed4565b9050919050565b6000611f228261144e565b9150611f2d8361144e565b9250828201905080821115611f4557611f446118d2565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611f81601b83611344565b9150611f8c82611f4b565b602082019050919050565b60006020820190508181036000830152611fb081611f74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f66299f24196e6b5bc48d15ea75445bed9740d0c183bec426f76d28b29ccbbcd64736f6c634300081a0033
0x608060405234801561001057600080fd5b506040518060400160405280601181526020017f506174204279204d6174742046757269650000000000000000000000000000008152506040518060400160405280600381526020017f5041540000000000000000000000000000000000000000000000000000000000815250816003908161008c919061065f565b50806004908161009c919061065f565b506012600560006101000a81548160ff021916908360ff16021790555050506100d76100cc61010460201b60201c565b61010c60201b60201c565b6100ff6100e86101d260201b60201c565b6a3623939c057e27364000006101fc60201b60201c565b6108a7565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361026b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102629061078e565b60405180910390fd5b61027d600083836103a760201b60201c565b610292816002546103ac60201b90919060201c565b6002819055506102e9816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546103ac60201b90919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161038991906107bd565b60405180910390a36103a36000838361040a60201b60201c565b5050565b505050565b60008082846103bb9190610807565b905083811015610400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f790610887565b60405180910390fd5b8091505092915050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061049057607f821691505b6020821081036104a3576104a2610449565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261050b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826104ce565b61051586836104ce565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061055c6105576105528461052d565b610537565b61052d565b9050919050565b6000819050919050565b61057683610541565b61058a61058282610563565b8484546104db565b825550505050565b600090565b61059f610592565b6105aa81848461056d565b505050565b5b818110156105ce576105c3600082610597565b6001810190506105b0565b5050565b601f821115610613576105e4816104a9565b6105ed846104be565b810160208510156105fc578190505b610610610608856104be565b8301826105af565b50505b505050565b600082821c905092915050565b600061063660001984600802610618565b1980831691505092915050565b600061064f8383610625565b9150826002028217905092915050565b6106688261040f565b67ffffffffffffffff8111156106815761068061041a565b5b61068b8254610478565b6106968282856105d2565b600060209050601f8311600181146106c957600084156106b7578287015190505b6106c18582610643565b865550610729565b601f1984166106d7866104a9565b60005b828110156106ff578489015182556001820191506020850194506020810190506106da565b8683101561071c5784890151610718601f891682610625565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000610778601f83610731565b915061078382610742565b602082019050919050565b600060208201905081810360008301526107a78161076b565b9050919050565b6107b78161052d565b82525050565b60006020820190506107d260008301846107ae565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006108128261052d565b915061081d8361052d565b9250828201905080821115610835576108346107d8565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000610871601b83610731565b915061087c8261083b565b602082019050919050565b600060208201905081810360008301526108a081610864565b9050919050565b61206a806108b66000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063a9059cbb11610066578063a9059cbb146102a1578063d505accf146102d1578063dd62ed3e146102ed578063f2fde38b1461031d57610100565b8063715018a61461022b5780637ecebe00146102355780638da5cb5b1461026557806395d89b411461028357610100565b806323b872dd116100d357806323b872dd1461018f57806330adf81f146101bf578063313ce567146101dd57806370a08231146101fb57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806320606b7014610171575b600080fd5b61010d610339565b60405161011a91906113c9565b60405180910390f35b61013d60048036038101906101389190611484565b6103cb565b60405161014a91906114df565b60405180910390f35b61015b6103e9565b6040516101689190611509565b60405180910390f35b6101796103f3565b604051610186919061153d565b60405180910390f35b6101a960048036038101906101a49190611558565b610417565b6040516101b691906114df565b60405180910390f35b6101c76104f0565b6040516101d4919061153d565b60405180910390f35b6101e5610514565b6040516101f291906115c7565b60405180910390f35b610215600480360381019061021091906115e2565b61052b565b6040516102229190611509565b60405180910390f35b610233610573565b005b61024f600480360381019061024a91906115e2565b610587565b60405161025c9190611509565b60405180910390f35b61026d61059f565b60405161027a919061161e565b60405180910390f35b61028b6105c9565b60405161029891906113c9565b60405180910390f35b6102bb60048036038101906102b69190611484565b61065b565b6040516102c891906114df565b60405180910390f35b6102eb60048036038101906102e69190611691565b610679565b005b61030760048036038101906103029190611733565b610904565b6040516103149190611509565b60405180910390f35b610337600480360381019061033291906115e2565b61098b565b005b606060038054610348906117a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610374906117a2565b80156103c15780601f10610396576101008083540402835291602001916103c1565b820191906000526020600020905b8154815290600101906020018083116103a457829003601f168201915b5050505050905090565b60006103df6103d8610a0e565b8484610a16565b6001905092915050565b6000600254905090565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610424848484610bdf565b6104e584610430610a0e565b6104e08560405180606001604052806028815260200161200d60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610496610a0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7d9092919063ffffffff16565b610a16565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6000600560009054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61057b610ee1565b6105856000610f5f565b565b60066020528060005260406000206000915090505481565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546105d8906117a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610604906117a2565b80156106515780601f1061062657610100808354040283529160200191610651565b820191906000526020600020905b81548152906001019060200180831161063457829003601f168201915b5050505050905090565b600061066f610668610a0e565b8484610bdf565b6001905092915050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86660036040516106ab9190611876565b60405180910390206106bb611025565b306040516020016106cf949392919061188d565b60405160208183030381529060405280519060200120905060007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9898989600660008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061075d90611901565b919050558a60405160200161077796959493929190611949565b604051602081830303815290604052805190602001209050600082826040516020016107a4929190611a22565b60405160208183030381529060405280519060200120905060006107ca82888888611032565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361083b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083290611aa5565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146108a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a090611b11565b60405180910390fd5b874211156108ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e390611b7d565b60405180910390fd5b6108f78b8b8b610a16565b5050505050505050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610993610ee1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f990611c0f565b60405180910390fd5b610a0b81610f5f565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7c90611ca1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aeb90611d33565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610bd29190611509565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4590611dc5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb490611e57565b60405180910390fd5b610cc8838383611062565b610d3381604051806060016040528060268152602001611fe7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e7d9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610dc6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461106790919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e659190611509565b60405180910390a3610e788383836110c5565b505050565b6000838311158290610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc91906113c9565b60405180910390fd5b5060008385610ed49190611e77565b9050809150509392505050565b610ee9610a0e565b73ffffffffffffffffffffffffffffffffffffffff16610f0761059f565b73ffffffffffffffffffffffffffffffffffffffff1614610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5490611ef7565b60405180910390fd5b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000804690508091505090565b600080600080611044888888886110ca565b92509250925061105482826111d5565b829350505050949350505050565b505050565b60008082846110769190611f17565b9050838110156110bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b290611f97565b60405180910390fd5b8091505092915050565b505050565b600080600080339050601b8760ff16141580156110eb5750601c8760ff1614155b80156110fb57506000602060ff16145b1561113d577f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08560001c111561113c576000600386935093509350506111cb565b5b731828f382d3e6fe000000000000000000000000007316b6f7fa2742ebdd4d47a6d1907dbb77fada562901818103611173578694505b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146111bb578360008060001b935093509350506111cb565b600060016000801b935093509350505b9450945094915050565b600060038111156111e9576111e8611fb7565b5b8260038111156111fc576111fb611fb7565b5b0315611335576001600381111561121657611215611fb7565b5b82600381111561122957611228611fb7565b5b03611260576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600381111561127457611273611fb7565b5b82600381111561128757611286611fb7565b5b036112cc578060001c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016112c39190611509565b60405180910390fd5b6003808111156112df576112de611fb7565b5b8260038111156112f2576112f1611fb7565b5b0361133457806040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260040161132b919061153d565b60405180910390fd5b5b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611373578082015181840152602081019050611358565b60008484015250505050565b6000601f19601f8301169050919050565b600061139b82611339565b6113a58185611344565b93506113b5818560208601611355565b6113be8161137f565b840191505092915050565b600060208201905081810360008301526113e38184611390565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061141b826113f0565b9050919050565b61142b81611410565b811461143657600080fd5b50565b60008135905061144881611422565b92915050565b6000819050919050565b6114618161144e565b811461146c57600080fd5b50565b60008135905061147e81611458565b92915050565b6000806040838503121561149b5761149a6113eb565b5b60006114a985828601611439565b92505060206114ba8582860161146f565b9150509250929050565b60008115159050919050565b6114d9816114c4565b82525050565b60006020820190506114f460008301846114d0565b92915050565b6115038161144e565b82525050565b600060208201905061151e60008301846114fa565b92915050565b6000819050919050565b61153781611524565b82525050565b6000602082019050611552600083018461152e565b92915050565b600080600060608486031215611571576115706113eb565b5b600061157f86828701611439565b935050602061159086828701611439565b92505060406115a18682870161146f565b9150509250925092565b600060ff82169050919050565b6115c1816115ab565b82525050565b60006020820190506115dc60008301846115b8565b92915050565b6000602082840312156115f8576115f76113eb565b5b600061160684828501611439565b91505092915050565b61161881611410565b82525050565b6000602082019050611633600083018461160f565b92915050565b611642816115ab565b811461164d57600080fd5b50565b60008135905061165f81611639565b92915050565b61166e81611524565b811461167957600080fd5b50565b60008135905061168b81611665565b92915050565b600080600080600080600060e0888a0312156116b0576116af6113eb565b5b60006116be8a828b01611439565b97505060206116cf8a828b01611439565b96505060406116e08a828b0161146f565b95505060606116f18a828b0161146f565b94505060806117028a828b01611650565b93505060a06117138a828b0161167c565b92505060c06117248a828b0161167c565b91505092959891949750929550565b6000806040838503121561174a576117496113eb565b5b600061175885828601611439565b925050602061176985828601611439565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806117ba57607f821691505b6020821081036117cd576117cc611773565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b60008154611800816117a2565b61180a81866117d3565b94506001821660008114611825576001811461183a5761186d565b60ff198316865281151582028601935061186d565b611843856117de565b60005b8381101561186557815481890152600182019150602081019050611846565b838801955050505b50505092915050565b600061188282846117f3565b915081905092915050565b60006080820190506118a2600083018761152e565b6118af602083018661152e565b6118bc60408301856114fa565b6118c9606083018461160f565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061190c8261144e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361193e5761193d6118d2565b5b600182019050919050565b600060c08201905061195e600083018961152e565b61196b602083018861160f565b611978604083018761160f565b61198560608301866114fa565b61199260808301856114fa565b61199f60a08301846114fa565b979650505050505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006119eb6002836119aa565b91506119f6826119b5565b600282019050919050565b6000819050919050565b611a1c611a1782611524565b611a01565b82525050565b6000611a2d826119de565b9150611a398285611a0b565b602082019150611a498284611a0b565b6020820191508190509392505050565b7f7065726d69743a20696e76616c6964207369676e617475726500000000000000600082015250565b6000611a8f601983611344565b9150611a9a82611a59565b602082019050919050565b60006020820190508181036000830152611abe81611a82565b9050919050565b7f7065726d69743a20756e617574686f72697a6564000000000000000000000000600082015250565b6000611afb601483611344565b9150611b0682611ac5565b602082019050919050565b60006020820190508181036000830152611b2a81611aee565b9050919050565b7f7065726d69743a207369676e6174757265206578706972656400000000000000600082015250565b6000611b67601983611344565b9150611b7282611b31565b602082019050919050565b60006020820190508181036000830152611b9681611b5a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611bf9602683611344565b9150611c0482611b9d565b604082019050919050565b60006020820190508181036000830152611c2881611bec565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611c8b602483611344565b9150611c9682611c2f565b604082019050919050565b60006020820190508181036000830152611cba81611c7e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611d1d602283611344565b9150611d2882611cc1565b604082019050919050565b60006020820190508181036000830152611d4c81611d10565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611daf602583611344565b9150611dba82611d53565b604082019050919050565b60006020820190508181036000830152611dde81611da2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611e41602383611344565b9150611e4c82611de5565b604082019050919050565b60006020820190508181036000830152611e7081611e34565b9050919050565b6000611e828261144e565b9150611e8d8361144e565b9250828203905081811115611ea557611ea46118d2565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611ee1602083611344565b9150611eec82611eab565b602082019050919050565b60006020820190508181036000830152611f1081611ed4565b9050919050565b6000611f228261144e565b9150611f2d8361144e565b9250828201905080821115611f4557611f446118d2565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000611f81601b83611344565b9150611f8c82611f4b565b602082019050919050565b60006020820190508181036000830152611fb081611f74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f66299f24196e6b5bc48d15ea75445bed9740d0c183bec426f76d28b29ccbbcd64736f6c634300081a0033