0x60806040526002805460ff1916905534801561001a57600080fd5b50604051604080611a5983398101604052805160209091015160008054600160a060020a03191633179055600160a060020a03811615156100bc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6d7573742062652076616c696420616464726573730000000000000000000000604482015290519081900360640190fd5b600160a060020a038216151561013357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f6d7573742062652076616c696420616464726573730000000000000000000000604482015290519081900360640190fd5b6002805461010060a860020a031916610100600160a060020a039485160217905560038054600160a060020a031916919092161790556000196004556118db8061017e6000396000f3006080604052600436106101245763ffffffff60e060020a60003504166317623c41811461014457806317ffc3201461016d57806329eae70d1461018e5780632e84a374146101b557806331d41325146101d95780633f4ba83a146101fa5780635c975abb1461020f5780635f56a31a14610224578063715018a61461024557806380bfc5991461025a5780638456cb591461026f5780638758570714610284578063899bf897146102995780638da5cb5b146102ae57806393306c43146102df5780639f727c27146102f45780639fe98bda14610309578063a7abdf0314610333578063b186099714610348578063be040fb01461035d578063c07e339114610372578063d11711a214610398578063dae37abc146103ad578063f2fde38b146103c2575b3360009081526001602052604090205460ff16151561014257600080fd5b005b34801561015057600080fd5b506101596103e3565b604080519115158252519081900360200190f35b34801561017957600080fd5b50610142600160a060020a0360043516610400565b34801561019a57600080fd5b506101a361050e565b60408051918252519081900360200190f35b3480156101c157600080fd5b50610142600160a060020a0360043516602435610514565b3480156101e557600080fd5b50610159600160a060020a0360043516610605565b34801561020657600080fd5b5061014261061a565b34801561021b57600080fd5b50610159610677565b34801561023057600080fd5b506101a3600160a060020a0360043516610680565b34801561025157600080fd5b50610142610692565b34801561026657600080fd5b506101426106fe565b34801561027b57600080fd5b50610142610890565b34801561029057600080fd5b506101426108ef565b3480156102a557600080fd5b50610159610c5f565b3480156102ba57600080fd5b506102c3610c77565b60408051600160a060020a039092168252519081900360200190f35b3480156102eb57600080fd5b506102c3610c86565b34801561030057600080fd5b50610142610c9a565b34801561031557600080fd5b50610142600160a060020a0360043581169060243516604435610d35565b34801561033f57600080fd5b506102c3610e0a565b34801561035457600080fd5b506101a3610e19565b34801561036957600080fd5b50610142610e1f565b34801561037e57600080fd5b50610142600160a060020a036004351660243515156110f4565b3480156103a457600080fd5b5061014261116f565b3480156103b957600080fd5b506101426113e3565b3480156103ce57600080fd5b50610142600160a060020a03600435166113ef565b600060045442101580156103fb57506103fb42611412565b905090565b60008054600160a060020a0316331461041857600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561047957600080fd5b505af115801561048d573d6000803e3d6000fd5b505050506040513d60208110156104a357600080fd5b50516000549091506104c890600160a060020a0384811691168363ffffffff61142a16565b600054604080518381529051600160a060020a03909216917f355069f20974db323c9dcd100e8bf13fb2acc1884e5ec05b0a89c09e15ce810f9181900360200190a25050565b60065481565b600054600160a060020a0316331461052b57600080fd5b600160a060020a038216151561058b576040805160e560020a62461bcd02815260206004820152601b60248201527f7a65726f2061646472657373206973206e6f7420616c6c6f7765640000000000604482015290519081900360640190fd5b604051600160a060020a0383169082156108fc029083906000818181858888f193505050501580156105c1573d6000803e3d6000fd5b50604080518281529051600160a060020a038416917fb54913b2b58b2e96ea9b4e96ba2353cf13426af9d3f252e0c17899a93c4ce125919081900360200190a25050565b60016020526000908152604090205460ff1681565b600054600160a060020a0316331461063157600080fd5b60025460ff16151561064257600080fd5b6002805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60025460ff1681565b60056020526000908152604090205481565b600054600160a060020a031633146106a957600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b33600090815260016020526040812054819060ff16151561071e57600080fd5b6000196004908155600354604080517f8d8c36e9000000000000000000000000000000000000000000000000000000008152309381019390935251600160a060020a0390911691638d8c36e99160248083019260209291908290030181600087803b15801561078c57600080fd5b505af11580156107a0573d6000803e3d6000fd5b505050506040513d60208110156107b657600080fd5b5051600354604080517f6481f081000000000000000000000000000000000000000000000000000000008152600481018490529051929450600160a060020a0390911691636481f081916024808201926020929091908290030181600087803b15801561082257600080fd5b505af1158015610836573d6000803e3d6000fd5b505050506040513d602081101561084c57600080fd5b5051604080518481526020810183905281519293507f707c653f7d61b8660b51074cc8c2d9e99f9c34436ea908d62bea7a5a4cb18d4f929081900390910190a15050565b600054600160a060020a031633146108a757600080fd5b60025460ff16156108b757600080fd5b6002805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b33600090815260016020526040812054819081908190819060ff16151561091557600080fd5b3031945060008511610971576040805160e560020a62461bcd02815260206004820152601760248201527f706f7369746976652062616c616e6365206e6565646564000000000000000000604482015290519081900360640190fd5b600360009054906101000a9004600160a060020a0316600160a060020a031663c3fdbef86040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156109c457600080fd5b505af11580156109d8573d6000803e3d6000fd5b505050506040513d60208110156109ee57600080fd5b5051935060008411610a4a576040805160e560020a62461bcd02815260206004820152601560248201527f6e6f20766f75636865727320617661696c61626c650000000000000000000000604482015290519081900360640190fd5b600354604080517fe65d1522000000000000000000000000000000000000000000000000000000008152303160048201529051600160a060020a039092169163e65d1522916024808201926020929091908290030181600087803b158015610ab157600080fd5b505af1158015610ac5573d6000803e3d6000fd5b505050506040513d6020811015610adb57600080fd5b5051925083831115610aeb578392505b600354604080517f669dafe8000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163669dafe8916024808201926020929091908290030181600087803b158015610b5257600080fd5b505af1158015610b66573d6000803e3d6000fd5b505050506040513d6020811015610b7c57600080fd5b50519450610b89426114c9565b5091509150610b988282611566565b6004908155600354604080517fb040872100000000000000000000000000000000000000000000000000000000815292830186905251600160a060020a039091169163b040872191889160248082019260009290919082900301818588803b158015610c0357600080fd5b505af1158015610c17573d6000803e3d6000fd5b505060408051878152602081018a905281517f9fca5352dcf7d3de26b4fcc50718ab421678e3c4cb800a589bdc49fbdee51a7995509081900390910192509050a15050505050565b600060045442101580156103fb57506103fb42611592565b600054600160a060020a031681565b6002546101009004600160a060020a031681565b60008054600160a060020a03163314610cb257600080fd5b5060008054604051303192600160a060020a03909216916108fc841502918491818181858888f19350505050158015610cef573d6000803e3d6000fd5b50600054604080518381529051600160a060020a03909216917fb54913b2b58b2e96ea9b4e96ba2353cf13426af9d3f252e0c17899a93c4ce1259181900360200190a250565b600054600160a060020a03163314610d4c57600080fd5b600160a060020a0382161515610dac576040805160e560020a62461bcd02815260206004820152601b60248201527f7a65726f2061646472657373206973206e6f7420616c6c6f7765640000000000604482015290519081900360640190fd5b610dc6600160a060020a038416838363ffffffff61142a16565b604080518281529051600160a060020a038416917f355069f20974db323c9dcd100e8bf13fb2acc1884e5ec05b0a89c09e15ce810f919081900360200190a2505050565b600354600160a060020a031681565b60045481565b6000806000806004544210151515610e81576040805160e560020a62461bcd02815260206004820152601360248201527f746f6f206561726c7920746f2072656465656d00000000000000000000000000604482015290519081900360640190fd5b610e8a42611592565b1515610f06576040805160e560020a62461bcd02815260206004820152602360248201527f72656465656d206973206e6f7420616c6c6f77656420617420746865206d6f6d60448201527f656e740000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610f0e6115d7565b600354604080517f8d8c36e90000000000000000000000000000000000000000000000000000000081523060048201529051939750919550600160a060020a031691638d8c36e9916024808201926020929091908290030181600087803b158015610f7857600080fd5b505af1158015610f8c573d6000803e3d6000fd5b505050506040513d6020811015610fa257600080fd5b50519150610fc683610fba848763ffffffff6116bc16565b9063ffffffff6116e516565b600354604080517fb2bea9c1000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051929350600160a060020a039091169163b2bea9c1916044808201926020929091908290030181600087803b15801561103657600080fd5b505af115801561104a573d6000803e3d6000fd5b505050506040513d602081101561106057600080fd5b505115156110b8576040805160e560020a62461bcd02815260206004820152601960248201527f766f75636865727320776173206e6f742072656c656173656400000000000000604482015290519081900360640190fd5b60408051828152905133917fb7dd3fa0284dca52a2a1e7985ef6eb7d2bd8a4fb3388f8baf55a64fd5ff4c94a919081900360200190a250505050565b600054600160a060020a0316331461110b57600080fd5b600160a060020a038216600081815260016020908152604091829020805460ff191685151590811790915582519384529083015280517fa551de8741dbb2092ce6bc142fd0ff3af5dfbf87d0aa594619fccddb0141e6929281900390910190a15050565b6004546000904210156111cc576040805160e560020a62461bcd02815260206004820152601860248201527f746f6f206561726c7920746f2070617274696369706174650000000000000000604482015290519081900360640190fd5b6111d542611412565b1515611251576040805160e560020a62461bcd02815260206004820152602960248201527f7061727469636970617465206f6e207468652031737420646179206f6620657660448201527f657279206d6f6e74680000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600254604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051610100909204600160a060020a03169163dd62ed3e916044808201926020929091908290030181600087803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b505050506040513d60208110156112eb57600080fd5b5051905060008111611347576040805160e560020a62461bcd02815260206004820152601960248201527f706f73697469766520616c6c6f77616e6365206e656564656400000000000000604482015290519081900360640190fd5b600254611364906101009004600160a060020a03163330846116fa565b33600090815260056020526040902054611384908263ffffffff6117ab16565b336000908152600560205260409020556006546113a7908263ffffffff6117ab16565b60065560408051828152905133917fbd6451f729baeebe302c84f173755114650674de07ed895a77469662f88a3adf919081900360200190a250565b6113eb6115d7565b5050565b600054600160a060020a0316331461140657600080fd5b61140f816117b8565b50565b60008061141e836114c9565b60011495945050505050565b82600160a060020a031663a9059cbb83836040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561148d57600080fd5b505af11580156114a1573d6000803e3d6000fd5b505050506040513d60208110156114b757600080fd5b505115156114c457600080fd5b505050565b60008080808080620151808704965062023ab162018e90600489020104600f019250600483048784010362254381019150611c896109891960148402010495506004860461016d870283030390506177896103e882020494506103e8610259860204601e86028203039350600d851161154e5761126c8603955060018503945061155c565b61126b86039550600d850394505b5050509193909250565b6001016000600c82111561157d5760019283019291505b61158983836001611835565b90505b92915050565b60008060006115a0846114c9565b5091509150836115b0838361188f565b61070801111580156115cf57506107086115ca8383611566565b038411155b949350505050565b336000908152600560205260408120549080821161163f576040805160e560020a62461bcd02815260206004820152601560248201527f6d7573742062652061207061727469636970616e740000000000000000000000604482015290519081900360640190fd5b5060065433600090815260056020526040812055611663818363ffffffff61189d16565b600655600254611682906101009004600160a060020a0316338461142a565b60408051838152905133917fd34c6d0846c2cbde96c7163ff2cc2c1e0ae463dddf965d55d7fa9b21ae99c8f6919081900360200190a29091565b60008215156116cd5750600061158c565b508181028183828115156116dd57fe5b041461158c57fe5b600081838115156116f257fe5b049392505050565b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528481166024830152604482018490529151918616916323b872dd916064808201926020929091908290030181600087803b15801561176e57600080fd5b505af1158015611782573d6000803e3d6000fd5b505050506040513d602081101561179857600080fd5b505115156117a557600080fd5b50505050565b8181018281101561158c57fe5b600160a060020a03811615156117cd57600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006002831161184c57600c830192506001840393505b6101908404606485046004860461016d87020103019050816005600185016003020484601e02010181019050620afac98103905062015180810290509392505050565b600061158983836002611835565b6000828211156118a957fe5b509003905600a165627a7a72305820a10ac7aedb1ebc331d3c74efd4d5aeb3471dac3f456f655e52d4f4b226ca9fb30029000000000000000000000000af4dce16da2877f8c9e00544c93b62ac40631f160000000000000000000000008d6b6f21e4519ec10f54842cd9c113ee7e50e04a