0x6080604052600436106101795760003560e01c80637cbf5fb5116100cb578063b310fb901161007f578063ecacb3b111610059578063ecacb3b1146104e1578063f2fde38b14610501578063fa7725081461052157600080fd5b8063b310fb901461049b578063dc034d4e146104bb578063de5c7573146104ce57600080fd5b80638da5cb5b116100b05780638da5cb5b1461041c57806397cd9a3414610447578063a7229fd91461047b57600080fd5b80637cbf5fb5146103d95780638ca65b8d1461040957600080fd5b80635c975abb1161012d5780636af65078116101075780636af6507814610384578063711dcc37146103b1578063715018a6146103c457600080fd5b80635c975abb146102d2578063630c02e11461030457806368b27e931461033257600080fd5b80632a7b194b1161015e5780632a7b194b1461027f578063357efa531461029f5780634677a091146102b257600080fd5b80631385d24c1461021a5780631cab1fcc1461022f57600080fd5b366102155733321415610213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5a6170426173653a20446f206e6f742073656e6420455448206469726563746c60448201527f790000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b005b600080fd5b34801561022657600080fd5b50610213610534565b34801561023b57600080fd5b5061026a61024a366004613bd4565b600160209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b34801561028b57600080fd5b5061021361029a366004613f3a565b610647565b6102136102ad366004613d6c565b6108e1565b3480156102be57600080fd5b506102136102cd366004613fd0565b610d0a565b3480156102de57600080fd5b5060005461026a9074010000000000000000000000000000000000000000900460ff1681565b34801561031057600080fd5b5061032461031f366004613c0c565b610f0d565b604051908152602001610276565b34801561033e57600080fd5b5060025461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610276565b34801561039057600080fd5b5060035461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b6102136103bf366004613c4c565b610f24565b3480156103d057600080fd5b5061021361139b565b3480156103e557600080fd5b5061026a6103f4366004613b9c565b60046020526000908152604090205460ff1681565b610213610417366004613ec5565b611428565b34801561042857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661035f565b34801561045357600080fd5b5061035f7f000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b781565b34801561048757600080fd5b50610213610496366004613c0c565b6114c6565b3480156104a757600080fd5b506102136104b6366004613b9c565b6117a6565b6102136104c9366004613ce6565b6118a1565b6102136104dc366004613e22565b611935565b3480156104ed57600080fd5b506102136104fc366004613b9c565b611c26565b34801561050d57600080fd5b5061021361051c366004613b9c565b611d1a565b61021361052f366004613e22565b611e4a565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b6000805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f54ff2e67f1c514eb0a8c5471a009f041bbb5874dcd07f4efba73da5ac02f62a19361063d9390049091161515815260200190565b60405180910390a1565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b8083811480156106d757508581145b61073d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5a6170426173653a20496e76616c696420496e707574206c656e677468000000604482015260640161020a565b60005b818110156108d757838382818110610781577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906107969190614039565b600160008a8a858181106107d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906107e89190613b9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088888581811061085d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906108729190613b9c565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055806108cf816142a7565b915050610740565b5050505050505050565b60005474010000000000000000000000000000000000000000900460ff1615610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5a6170426173653a205061757365640000000000000000000000000000000000604482015260640161020a565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090205460ff161515600114610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655a6170733a20556e737570706f7274656420737461626c65207460448201527f6f6b656e00000000000000000000000000000000000000000000000000000000606482015260840161020a565b610a298989611ee0565b5060007f000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b773ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610a87575087610bd2565b73ffffffffffffffffffffffffffffffffffffffff8a1660009081526004602052604090205460ff1615610ac857610ac187308b8b612055565b9050610bd2565b73ffffffffffffffffffffffffffffffffffffffff8a1615610b0b57600354610b0b9073ffffffffffffffffffffffffffffffffffffffff8c811691168b6123a3565b6003546040517f2ae04ed300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690632ae04ed3903490610b6e908f908f908e908e908c908c9060040161416a565b6020604051808303818588803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bc091906140bf565b9050610bce8830838c612055565b9150505b8015610cfe57610c1973ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b71686836123a3565b6040517f2f4f21e200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201839052861690632f4f21e290604401600060405180830381600087803b158015610c8957600080fd5b505af1158015610c9d573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8e81168252602082018e905291810185905290871692507fc9813d012dbb5a4bd8b5fe9f50883d940a462503531f19daf0a4a3aea2beb434915060600160405180910390a25b50505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b82818114610df5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f54656d706c655a6170733a20496e76616c696420496e707574206c656e677468604482015260640161020a565b60005b81811015610f0557838382818110610e39577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610e4e9190614039565b60046000888885818110610e8b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610ea09190613b9c565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610efd816142a7565b915050610df8565b505050505050565b6000610f1a848484612534565b90505b9392505050565b606082015173ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205460ff161515600114610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655a6170733a20556e737570706f7274656420737461626c65207460448201527f6f6b656e00000000000000000000000000000000000000000000000000000000606482015260840161020a565b610feb8787611ee0565b5060025460608301516040517f1cc6391e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526000929190911690631cc6391e9060240160206040518083038186803b15801561106057600080fd5b505afa158015611074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110989190613bb8565b905060008173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e257600080fd5b505afa1580156110f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111a9190613bb8565b905060008273ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561116457600080fd5b505afa158015611178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119c9190613bb8565b90508173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415801561120657508073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b156112b65761121c8a8a876060015189886126a5565b9850878910156112ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54656d706c655a6170733a20496e73756666696369656e7420746f6b656e732060448201527f6f75740000000000000000000000000000000000000000000000000000000000606482015260840161020a565b846060015199505b6000806112ce8588606001518e8e8b60400151612a86565b60025491935091506112f890859073ffffffffffffffffffffffffffffffffffffffff16846123a3565b60025461131d90849073ffffffffffffffffffffffffffffffffffffffff16836123a3565b61132a858a84848b6130df565b6040805173ffffffffffffffffffffffffffffffffffffffff8e81168252602082018e905291810184905260608101839052908a16907f67db95ca0df9c8130f40a5087bc2263e25f51a06a89cbe19852d33dbc10718f09060800160405180910390a2505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b611426600061331c565b565b60005474010000000000000000000000000000000000000000900460ff16156114ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5a6170426173653a205061757365640000000000000000000000000000000000604482015260640161020a565b6114bd8787878787338888611935565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b73ffffffffffffffffffffffffffffffffffffffff82166115c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f54656d706c655a6170733a20496e76616c696420726563656976657200000000604482015260640161020a565b73ffffffffffffffffffffffffffffffffffffffff831661173e578047101561166e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655a6170733a20696e73756666696369656e74206574682062616c60448201527f616e636500000000000000000000000000000000000000000000000000000000606482015260840161020a565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146116c8576040519150601f19603f3d011682016040523d82523d6000602084013e6116cd565b606091505b5050905080611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f54656d706c655a6170733a20756e61626c6520746f2073656e642076616c7565604482015260640161020a565b50611749565b611749838383613391565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90969060600160405180910390a1505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fc5555e2dd863e0a2a088932185a69fd64c73c0c6abb1ec2bec2a42380f0fc6fd906020015b60405180910390a150565b60005474010000000000000000000000000000000000000000900460ff1615611926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5a6170426173653a205061757365640000000000000000000000000000000000604482015260640161020a565b610f0586868633878787610f24565b60005474010000000000000000000000000000000000000000900460ff16156119ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5a6170426173653a205061757365640000000000000000000000000000000000604482015260640161020a565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090205460ff161515600114611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655a6170733a20556e737570706f7274656420737461626c65207460448201527f6f6b656e00000000000000000000000000000000000000000000000000000000606482015260840161020a565b600073ffffffffffffffffffffffffffffffffffffffff891615611b7b57611a9d8933308b6134a8565b600354611ac2908a9073ffffffffffffffffffffffffffffffffffffffff168a6123a3565b6003546040517f2ae04ed300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632ae04ed390611b22908c908c908b908b908a908a9060040161416a565b602060405180830381600087803b158015611b3c57600080fd5b505af1158015611b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7491906140bf565b9050611c1a565b611b8889898886866126a5565b905084811015611c1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f54656d706c655a6170733a204e6f7420656e6f75676820737461626c6520746f60448201527f6b656e73206f7574000000000000000000000000000000000000000000000000606482015260840161020a565b610cfe8685838a612055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f8689e6d8061676d97a028753a5310ecd550e3a0f44acb6fc4e144dea7f4c009390602001611896565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b73ffffffffffffffffffffffffffffffffffffffff8116611e3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020a565b611e478161331c565b50565b60005474010000000000000000000000000000000000000000900460ff1615611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5a6170426173653a205061757365640000000000000000000000000000000000604482015260640161020a565b6108d78888888888883389896108e1565b600073ffffffffffffffffffffffffffffffffffffffff8316611f6e5760003411611f67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a6170426173653a204e6f204554482073656e74000000000000000000000000604482015260640161020a565b503461204f565b60008211611fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5a6170426173653a20496e76616c696420746f6b656e20616d6f756e74000000604482015260640161020a565b3415612040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f5a6170426173653a204554482073656e74207769746820746f6b656e00000000604482015260640161020a565b61204c833330856134a8565b50805b92915050565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b716906370a082319060240160206040518083038186803b1580156120df57600080fd5b505afa1580156120f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211791906140bf565b60025490915061213f90879073ffffffffffffffffffffffffffffffffffffffff16866123a3565b6002546040517f854f7106000000000000000000000000000000000000000000000000000000008152600481018690526024810185905273ffffffffffffffffffffffffffffffffffffffff888116604483015287811660648301527ff00000000000000000000000000000000000000000000000000000000000000060848301529091169063854f71069060a401602060405180830381600087803b1580156121e857600080fd5b505af11580156121fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222091906140bf565b5073ffffffffffffffffffffffffffffffffffffffff851630141561239a576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281907f000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b773ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b1580156122c657600080fd5b505afa1580156122da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fe91906140bf565b6123089190614264565b91508282101561239a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f54656d706c655a6170733a204e6f7420656e6f7567682074656d706c6520746f60448201527f6b656e7320726563656976656400000000000000000000000000000000000000606482015260840161020a565b50949350505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b15801561241557600080fd5b505afa158015612429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244d91906140bf565b61245791906141d6565b60405173ffffffffffffffffffffffffffffffffffffffff851660248201526044810182905290915061252e9085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613506565b50505050565b6000808373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561257d57600080fd5b505afa158015612591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b59190613bb8565b90506000808573ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561260057600080fd5b505afa158015612614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126389190614071565b509150915060008773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612678578161267a565b825b6dffffffffffffffffffffffffffff16905060006126988288613617565b9998505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff831673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214156128845773ffffffffffffffffffffffffffffffffffffffff861673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214612792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f537761703a20496e76616c69642066726f6d20746f6b656e20616e642057455460448201527f4820746172676574000000000000000000000000000000000000000000000000606482015260840161020a565b6000851180156127a157508434145b612807576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f537761703a20496e70757420455448206d69736d617463680000000000000000604482015260640161020a565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b15801561286357600080fd5b505af1158015612877573d6000803e3d6000fd5b5050505050849050612a7d565b60008073ffffffffffffffffffffffffffffffffffffffff881661291e576000871180156128b157508634145b612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f537761703a20496e70757420455448206d69736d617463680000000000000000604482015260640161020a565b5085612929565b6129298886896123a3565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a082319060240160206040518083038186803b15801561299157600080fd5b505afa1580156129a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c991906140bf565b90506129d6868387613672565b506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8916906370a082319060240160206040518083038186803b158015612a3e57600080fd5b505afa158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7691906140bf565b0393505050505b95945050505050565b60008060008773ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015612ad157600080fd5b505afa158015612ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b099190613bb8565b90506000612b18878a88610f0d565b90506000612b268288614264565b905060007f000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415612d1357600254612bc3907f000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b79073ffffffffffffffffffffffffffffffffffffffff16856123a3565b6002546040517fe94e36b9000000000000000000000000000000000000000000000000000000008152600481018590526024810189905273ffffffffffffffffffffffffffffffffffffffff8c811660448301523060648301526fffffffffffffffffffffffffffffffff60848301529091169063e94e36b99060a401602060405180830381600087803b158015612c5a57600080fd5b505af1158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9291906140bf565b90508973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612ccd5781612ccf565b805b95508973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612d0a5780612d0c565b815b94506130d1565b8973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561304957600254612d6c908b9073ffffffffffffffffffffffffffffffffffffffff16856123a3565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b773ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b158015612df457600080fd5b505afa158015612e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2c91906140bf565b6002546040517f854f710600000000000000000000000000000000000000000000000000000000815260048101879052602481018b905273ffffffffffffffffffffffffffffffffffffffff8e811660448301523060648301526fffffffffffffffffffffffffffffffff608483015292935091169063854f71069060a401602060405180830381600087803b158015612ec557600080fd5b505af1158015612ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efd91906140bf565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281907f000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b773ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b158015612f8557600080fd5b505afa158015612f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbd91906140bf565b612fc79190614264565b91508a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146130025781613004565b825b96508a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461303f5782613041565b815b9550506130d1565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f556e737570706f7274656420746f6b656e206f66206c6971756964697479207060448201527f6f6f6c0000000000000000000000000000000000000000000000000000000000606482015260840161020a565b505050509550959350505050565b6002548151602083015160608401516040517f14e9209800000000000000000000000000000000000000000000000000000000815260048101889052602481018790526044810193909352606483019190915273ffffffffffffffffffffffffffffffffffffffff908116608483015286811660a48301527ff00000000000000000000000000000000000000000000000000000000000000060c483015260009283929116906314e920989060e401606060405180830381600087803b1580156131a857600080fd5b505af11580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e091906140d7565b50915091508260800151156114bd5784821015613288576132888773ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561324057600080fd5b505afa158015613254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132789190613bb8565b876132838589614264565b613391565b838110156114bd576114bd8773ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156132d957600080fd5b505afa1580156132ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133119190613bb8565b876132838488614264565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a082319060240160206040518083038186803b1580156133f957600080fd5b505afa15801561340d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343191906140bf565b90508082111561349d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5a6170426173653a206e6f7420656e6f75676820746f6b656e73000000000000604482015260640161020a565b61252e848484613765565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261252e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016124ac565b6000613568826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137bb9092919063ffffffff16565b80519091501561361257808060200190518101906135869190614055565b613612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161020a565b505050565b60006107ca613628846107cd614227565b61365e61363886623cda29614227565b61364586623cda20614227565b61364f91906141d6565b6136599087614227565b6137ca565b6136689190614264565b610f1d91906141ee565b60606000808573ffffffffffffffffffffffffffffffffffffffff16858560405161369d919061414e565b60006040518083038185875af1925050503d80600081146136da576040519150601f19603f3d011682016040523d82523d6000602084013e6136df565b606091505b509150915081156136f3579150610f1d9050565b8051156137035780518082602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f457865637574653a20556e6b6e6f776e206661696c7572650000000000000000604482015260640161020a565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526136129084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016124ac565b6060610f1a848460008561383a565b6000600382111561382b57508060006137e46002836141ee565b6137ef9060016141d6565b90505b818110156138255790508060028161380a81866141ee565b61381491906141d6565b61381e91906141ee565b90506137f2565b50919050565b8115613835575060015b919050565b6060824710156138cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161020a565b843b613934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161020a565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161395d919061414e565b60006040518083038185875af1925050503d806000811461399a576040519150601f19603f3d011682016040523d82523d6000602084013e61399f565b606091505b50915091506139af8282866139ba565b979650505050505050565b606083156139c9575081610f1d565b8251156139d95782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020a91906141c3565b60008083601f840112613a1e578081fd5b50813567ffffffffffffffff811115613a35578182fd5b6020830191508360208260051b8501011115613a5057600080fd5b9250929050565b600082601f830112613a67578081fd5b813567ffffffffffffffff80821115613a8257613a8261430f565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613ac857613ac861430f565b81604052838152866020858801011115613ae0578485fd5b8360208701602083013792830160200193909352509392505050565b600060a08284031215613b0d578081fd5b60405160a0810181811067ffffffffffffffff82111715613b3057613b3061430f565b80604052508091508235815260208301356020820152604083013560408201526060830135613b5e8161433e565b60608201526080830135613b7181614360565b6080919091015292915050565b80516dffffffffffffffffffffffffffff8116811461383557600080fd5b600060208284031215613bad578081fd5b8135610f1d8161433e565b600060208284031215613bc9578081fd5b8151610f1d8161433e565b60008060408385031215613be6578081fd5b8235613bf18161433e565b91506020830135613c018161433e565b809150509250929050565b600080600060608486031215613c20578081fd5b8335613c2b8161433e565b92506020840135613c3b8161433e565b929592945050506040919091013590565b6000806000806000806000610160888a031215613c67578283fd5b8735613c728161433e565b965060208801359550604088013594506060880135613c908161433e565b93506080880135613ca08161433e565b9250613caf8960a08a01613afc565b915061014088013567ffffffffffffffff811115613ccb578182fd5b613cd78a828b01613a57565b91505092959891949750929550565b6000806000806000806101408789031215613cff578182fd5b8635613d0a8161433e565b955060208701359450604087013593506060870135613d288161433e565b9250613d378860808901613afc565b915061012087013567ffffffffffffffff811115613d53578182fd5b613d5f89828a01613a57565b9150509295509295509295565b60008060008060008060008060006101208a8c031215613d8a578182fd5b8935613d958161433e565b985060208a0135975060408a0135965060608a0135613db38161433e565b955060808a0135945060a08a0135613dca8161433e565b935060c08a0135613dda8161433e565b925060e08a0135613dea8161433e565b91506101008a013567ffffffffffffffff811115613e06578182fd5b613e128c828d01613a57565b9150509295985092959850929598565b600080600080600080600080610100898b031215613e3e578182fd5b8835613e498161433e565b975060208901359650604089013595506060890135613e678161433e565b94506080890135935060a0890135613e7e8161433e565b925060c0890135613e8e8161433e565b915060e089013567ffffffffffffffff811115613ea9578182fd5b613eb58b828c01613a57565b9150509295985092959890939650565b600080600080600080600060e0888a031215613edf578081fd5b8735613eea8161433e565b965060208801359550604088013594506060880135613f088161433e565b93506080880135925060a0880135613f1f8161433e565b915060c088013567ffffffffffffffff811115613ccb578182fd5b60008060008060008060608789031215613f52578384fd5b863567ffffffffffffffff80821115613f69578586fd5b613f758a838b01613a0d565b90985096506020890135915080821115613f8d578586fd5b613f998a838b01613a0d565b90965094506040890135915080821115613fb1578384fd5b50613fbe89828a01613a0d565b979a9699509497509295939492505050565b60008060008060408587031215613fe5578182fd5b843567ffffffffffffffff80821115613ffc578384fd5b61400888838901613a0d565b90965094506020870135915080821115614020578384fd5b5061402d87828801613a0d565b95989497509550505050565b60006020828403121561404a578081fd5b8135610f1d81614360565b600060208284031215614066578081fd5b8151610f1d81614360565b600080600060608486031215614085578081fd5b61408e84613b7e565b925061409c60208501613b7e565b9150604084015163ffffffff811681146140b4578182fd5b809150509250925092565b6000602082840312156140d0578081fd5b5051919050565b6000806000606084860312156140eb578081fd5b8351925060208401519150604084015190509250925092565b6000815180845261411c81602086016020860161427b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161416081846020870161427b565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8089168352876020840152808716604084015285606084015280851660808401525060c060a08301526141b760c0830184614104565b98975050505050505050565b602081526000610f1d6020830184614104565b600082198211156141e9576141e96142e0565b500190565b600082614222577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561425f5761425f6142e0565b500290565b600082821015614276576142766142e0565b500390565b60005b8381101561429657818101518382015260200161427e565b8381111561252e5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142d9576142d96142e0565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611e4757600080fd5b8015158114611e4757600080fdfea2646970667358221220e5a03f51c2aeb82c46ab261395430f5c8ed19a7c6f3b7fe699c5875db14c81e164736f6c63430008040033
0x60a06040523480156200001157600080fd5b5060405162004536380380620045368339810160408190526200003491620000f2565b6200003f3362000085565b60609290921b6001600160601b031916608052600280546001600160a01b03199081166001600160a01b039384161790915560038054909116919092161790556200013b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000ed57600080fd5b919050565b60008060006060848603121562000107578283fd5b6200011284620000d5565b92506200012260208501620000d5565b91506200013260408501620000d5565b90509250925092565b60805160601c6143a4620001926000396000818161045901528181610a2e01528181610bf20152818161209d0152818161226f01528181612b2c01528181612b8701528181612d9d0152612f2e01526143a46000f3fe6080604052600436106101795760003560e01c80637cbf5fb5116100cb578063b310fb901161007f578063ecacb3b111610059578063ecacb3b1146104e1578063f2fde38b14610501578063fa7725081461052157600080fd5b8063b310fb901461049b578063dc034d4e146104bb578063de5c7573146104ce57600080fd5b80638da5cb5b116100b05780638da5cb5b1461041c57806397cd9a3414610447578063a7229fd91461047b57600080fd5b80637cbf5fb5146103d95780638ca65b8d1461040957600080fd5b80635c975abb1161012d5780636af65078116101075780636af6507814610384578063711dcc37146103b1578063715018a6146103c457600080fd5b80635c975abb146102d2578063630c02e11461030457806368b27e931461033257600080fd5b80632a7b194b1161015e5780632a7b194b1461027f578063357efa531461029f5780634677a091146102b257600080fd5b80631385d24c1461021a5780631cab1fcc1461022f57600080fd5b366102155733321415610213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f5a6170426173653a20446f206e6f742073656e6420455448206469726563746c60448201527f790000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b005b600080fd5b34801561022657600080fd5b50610213610534565b34801561023b57600080fd5b5061026a61024a366004613bd4565b600160209081526000928352604080842090915290825290205460ff1681565b60405190151581526020015b60405180910390f35b34801561028b57600080fd5b5061021361029a366004613f3a565b610647565b6102136102ad366004613d6c565b6108e1565b3480156102be57600080fd5b506102136102cd366004613fd0565b610d0a565b3480156102de57600080fd5b5060005461026a9074010000000000000000000000000000000000000000900460ff1681565b34801561031057600080fd5b5061032461031f366004613c0c565b610f0d565b604051908152602001610276565b34801561033e57600080fd5b5060025461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610276565b34801561039057600080fd5b5060035461035f9073ffffffffffffffffffffffffffffffffffffffff1681565b6102136103bf366004613c4c565b610f24565b3480156103d057600080fd5b5061021361139b565b3480156103e557600080fd5b5061026a6103f4366004613b9c565b60046020526000908152604090205460ff1681565b610213610417366004613ec5565b611428565b34801561042857600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1661035f565b34801561045357600080fd5b5061035f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561048757600080fd5b50610213610496366004613c0c565b6114c6565b3480156104a757600080fd5b506102136104b6366004613b9c565b6117a6565b6102136104c9366004613ce6565b6118a1565b6102136104dc366004613e22565b611935565b3480156104ed57600080fd5b506102136104fc366004613b9c565b611c26565b34801561050d57600080fd5b5061021361051c366004613b9c565b611d1a565b61021361052f366004613e22565b611e4a565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b6000805460ff7401000000000000000000000000000000000000000080830482161581027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217928390556040517f54ff2e67f1c514eb0a8c5471a009f041bbb5874dcd07f4efba73da5ac02f62a19361063d9390049091161515815260200190565b60405180910390a1565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b8083811480156106d757508581145b61073d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5a6170426173653a20496e76616c696420496e707574206c656e677468000000604482015260640161020a565b60005b818110156108d757838382818110610781577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906107969190614039565b600160008a8a858181106107d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906107e89190613b9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600088888581811061085d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906108729190613b9c565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055806108cf816142a7565b915050610740565b5050505050505050565b60005474010000000000000000000000000000000000000000900460ff1615610966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5a6170426173653a205061757365640000000000000000000000000000000000604482015260640161020a565b73ffffffffffffffffffffffffffffffffffffffff861660009081526004602052604090205460ff161515600114610a1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655a6170733a20556e737570706f7274656420737461626c65207460448201527f6f6b656e00000000000000000000000000000000000000000000000000000000606482015260840161020a565b610a298989611ee0565b5060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415610a87575087610bd2565b73ffffffffffffffffffffffffffffffffffffffff8a1660009081526004602052604090205460ff1615610ac857610ac187308b8b612055565b9050610bd2565b73ffffffffffffffffffffffffffffffffffffffff8a1615610b0b57600354610b0b9073ffffffffffffffffffffffffffffffffffffffff8c811691168b6123a3565b6003546040517f2ae04ed300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff1690632ae04ed3903490610b6e908f908f908e908e908c908c9060040161416a565b6020604051808303818588803b158015610b8757600080fd5b505af1158015610b9b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bc091906140bf565b9050610bce8830838c612055565b9150505b8015610cfe57610c1973ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686836123a3565b6040517f2f4f21e200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015260248201839052861690632f4f21e290604401600060405180830381600087803b158015610c8957600080fd5b505af1158015610c9d573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8e81168252602082018e905291810185905290871692507fc9813d012dbb5a4bd8b5fe9f50883d940a462503531f19daf0a4a3aea2beb434915060600160405180910390a25b50505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610d8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b82818114610df5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f54656d706c655a6170733a20496e76616c696420496e707574206c656e677468604482015260640161020a565b60005b81811015610f0557838382818110610e39577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610e4e9190614039565b60046000888885818110610e8b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610ea09190613b9c565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610efd816142a7565b915050610df8565b505050505050565b6000610f1a848484612534565b90505b9392505050565b606082015173ffffffffffffffffffffffffffffffffffffffff1660009081526004602052604090205460ff161515600114610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655a6170733a20556e737570706f7274656420737461626c65207460448201527f6f6b656e00000000000000000000000000000000000000000000000000000000606482015260840161020a565b610feb8787611ee0565b5060025460608301516040517f1cc6391e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526000929190911690631cc6391e9060240160206040518083038186803b15801561106057600080fd5b505afa158015611074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110989190613bb8565b905060008173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e257600080fd5b505afa1580156110f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111a9190613bb8565b905060008273ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b15801561116457600080fd5b505afa158015611178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061119c9190613bb8565b90508173ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff161415801561120657508073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b156112b65761121c8a8a876060015189886126a5565b9850878910156112ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f54656d706c655a6170733a20496e73756666696369656e7420746f6b656e732060448201527f6f75740000000000000000000000000000000000000000000000000000000000606482015260840161020a565b846060015199505b6000806112ce8588606001518e8e8b60400151612a86565b60025491935091506112f890859073ffffffffffffffffffffffffffffffffffffffff16846123a3565b60025461131d90849073ffffffffffffffffffffffffffffffffffffffff16836123a3565b61132a858a84848b6130df565b6040805173ffffffffffffffffffffffffffffffffffffffff8e81168252602082018e905291810184905260608101839052908a16907f67db95ca0df9c8130f40a5087bc2263e25f51a06a89cbe19852d33dbc10718f09060800160405180910390a2505050505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b611426600061331c565b565b60005474010000000000000000000000000000000000000000900460ff16156114ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5a6170426173653a205061757365640000000000000000000000000000000000604482015260640161020a565b6114bd8787878787338888611935565b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611547576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b73ffffffffffffffffffffffffffffffffffffffff82166115c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f54656d706c655a6170733a20496e76616c696420726563656976657200000000604482015260640161020a565b73ffffffffffffffffffffffffffffffffffffffff831661173e578047101561166e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655a6170733a20696e73756666696369656e74206574682062616c60448201527f616e636500000000000000000000000000000000000000000000000000000000606482015260840161020a565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146116c8576040519150601f19603f3d011682016040523d82523d6000602084013e6116cd565b606091505b5050905080611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f54656d706c655a6170733a20756e61626c6520746f2073656e642076616c7565604482015260640161020a565b50611749565b611749838383613391565b6040805173ffffffffffffffffffffffffffffffffffffffff8086168252841660208201529081018290527f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f90969060600160405180910390a1505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fc5555e2dd863e0a2a088932185a69fd64c73c0c6abb1ec2bec2a42380f0fc6fd906020015b60405180910390a150565b60005474010000000000000000000000000000000000000000900460ff1615611926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5a6170426173653a205061757365640000000000000000000000000000000000604482015260640161020a565b610f0586868633878787610f24565b60005474010000000000000000000000000000000000000000900460ff16156119ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5a6170426173653a205061757365640000000000000000000000000000000000604482015260640161020a565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602052604090205460ff161515600114611a73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f54656d706c655a6170733a20556e737570706f7274656420737461626c65207460448201527f6f6b656e00000000000000000000000000000000000000000000000000000000606482015260840161020a565b600073ffffffffffffffffffffffffffffffffffffffff891615611b7b57611a9d8933308b6134a8565b600354611ac2908a9073ffffffffffffffffffffffffffffffffffffffff168a6123a3565b6003546040517f2ae04ed300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632ae04ed390611b22908c908c908b908b908a908a9060040161416a565b602060405180830381600087803b158015611b3c57600080fd5b505af1158015611b50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7491906140bf565b9050611c1a565b611b8889898886866126a5565b905084811015611c1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f54656d706c655a6170733a204e6f7420656e6f75676820737461626c6520746f60448201527f6b656e73206f7574000000000000000000000000000000000000000000000000606482015260840161020a565b610cfe8685838a612055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f8689e6d8061676d97a028753a5310ecd550e3a0f44acb6fc4e144dea7f4c009390602001611896565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020a565b73ffffffffffffffffffffffffffffffffffffffff8116611e3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161020a565b611e478161331c565b50565b60005474010000000000000000000000000000000000000000900460ff1615611ecf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5a6170426173653a205061757365640000000000000000000000000000000000604482015260640161020a565b6108d78888888888883389896108e1565b600073ffffffffffffffffffffffffffffffffffffffff8316611f6e5760003411611f67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5a6170426173653a204e6f204554482073656e74000000000000000000000000604482015260640161020a565b503461204f565b60008211611fd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f5a6170426173653a20496e76616c696420746f6b656e20616d6f756e74000000604482015260640161020a565b3415612040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f5a6170426173653a204554482073656e74207769746820746f6b656e00000000604482015260640161020a565b61204c833330856134a8565b50805b92915050565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600090819073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b1580156120df57600080fd5b505afa1580156120f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211791906140bf565b60025490915061213f90879073ffffffffffffffffffffffffffffffffffffffff16866123a3565b6002546040517f854f7106000000000000000000000000000000000000000000000000000000008152600481018690526024810185905273ffffffffffffffffffffffffffffffffffffffff888116604483015287811660648301527ff00000000000000000000000000000000000000000000000000000000000000060848301529091169063854f71069060a401602060405180830381600087803b1580156121e857600080fd5b505af11580156121fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222091906140bf565b5073ffffffffffffffffffffffffffffffffffffffff851630141561239a576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b1580156122c657600080fd5b505afa1580156122da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fe91906140bf565b6123089190614264565b91508282101561239a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f54656d706c655a6170733a204e6f7420656e6f7567682074656d706c6520746f60448201527f6b656e7320726563656976656400000000000000000000000000000000000000606482015260840161020a565b50949350505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e9060440160206040518083038186803b15801561241557600080fd5b505afa158015612429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244d91906140bf565b61245791906141d6565b60405173ffffffffffffffffffffffffffffffffffffffff851660248201526044810182905290915061252e9085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613506565b50505050565b6000808373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561257d57600080fd5b505afa158015612591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b59190613bb8565b90506000808573ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561260057600080fd5b505afa158015612614573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126389190614071565b509150915060008773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612678578161267a565b825b6dffffffffffffffffffffffffffff16905060006126988288613617565b9998505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff831673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214156128845773ffffffffffffffffffffffffffffffffffffffff861673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc214612792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f537761703a20496e76616c69642066726f6d20746f6b656e20616e642057455460448201527f4820746172676574000000000000000000000000000000000000000000000000606482015260840161020a565b6000851180156127a157508434145b612807576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f537761703a20496e70757420455448206d69736d617463680000000000000000604482015260640161020a565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b15801561286357600080fd5b505af1158015612877573d6000803e3d6000fd5b5050505050849050612a7d565b60008073ffffffffffffffffffffffffffffffffffffffff881661291e576000871180156128b157508634145b612917576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f537761703a20496e70757420455448206d69736d617463680000000000000000604482015260640161020a565b5085612929565b6129298886896123a3565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906370a082319060240160206040518083038186803b15801561299157600080fd5b505afa1580156129a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129c991906140bf565b90506129d6868387613672565b506040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152819073ffffffffffffffffffffffffffffffffffffffff8916906370a082319060240160206040518083038186803b158015612a3e57600080fd5b505afa158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7691906140bf565b0393505050505b95945050505050565b60008060008773ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015612ad157600080fd5b505afa158015612ae5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b099190613bb8565b90506000612b18878a88610f0d565b90506000612b268288614264565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff161415612d1357600254612bc3907f00000000000000000000000000000000000000000000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff16856123a3565b6002546040517fe94e36b9000000000000000000000000000000000000000000000000000000008152600481018590526024810189905273ffffffffffffffffffffffffffffffffffffffff8c811660448301523060648301526fffffffffffffffffffffffffffffffff60848301529091169063e94e36b99060a401602060405180830381600087803b158015612c5a57600080fd5b505af1158015612c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9291906140bf565b90508973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612ccd5781612ccf565b805b95508973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612d0a5780612d0c565b815b94506130d1565b8973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff16141561304957600254612d6c908b9073ffffffffffffffffffffffffffffffffffffffff16856123a3565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b158015612df457600080fd5b505afa158015612e08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2c91906140bf565b6002546040517f854f710600000000000000000000000000000000000000000000000000000000815260048101879052602481018b905273ffffffffffffffffffffffffffffffffffffffff8e811660448301523060648301526fffffffffffffffffffffffffffffffff608483015292935091169063854f71069060a401602060405180830381600087803b158015612ec557600080fd5b505af1158015612ed9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612efd91906140bf565b506040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015281907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a082319060240160206040518083038186803b158015612f8557600080fd5b505afa158015612f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbd91906140bf565b612fc79190614264565b91508a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146130025781613004565b825b96508a73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461303f5782613041565b815b9550506130d1565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f556e737570706f7274656420746f6b656e206f66206c6971756964697479207060448201527f6f6f6c0000000000000000000000000000000000000000000000000000000000606482015260840161020a565b505050509550959350505050565b6002548151602083015160608401516040517f14e9209800000000000000000000000000000000000000000000000000000000815260048101889052602481018790526044810193909352606483019190915273ffffffffffffffffffffffffffffffffffffffff908116608483015286811660a48301527ff00000000000000000000000000000000000000000000000000000000000000060c483015260009283929116906314e920989060e401606060405180830381600087803b1580156131a857600080fd5b505af11580156131bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e091906140d7565b50915091508260800151156114bd5784821015613288576132888773ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801561324057600080fd5b505afa158015613254573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132789190613bb8565b876132838589614264565b613391565b838110156114bd576114bd8773ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156132d957600080fd5b505afa1580156132ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133119190613bb8565b876132838488614264565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906370a082319060240160206040518083038186803b1580156133f957600080fd5b505afa15801561340d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061343191906140bf565b90508082111561349d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5a6170426173653a206e6f7420656e6f75676820746f6b656e73000000000000604482015260640161020a565b61252e848484613765565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261252e9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016124ac565b6000613568826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166137bb9092919063ffffffff16565b80519091501561361257808060200190518101906135869190614055565b613612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161020a565b505050565b60006107ca613628846107cd614227565b61365e61363886623cda29614227565b61364586623cda20614227565b61364f91906141d6565b6136599087614227565b6137ca565b6136689190614264565b610f1d91906141ee565b60606000808573ffffffffffffffffffffffffffffffffffffffff16858560405161369d919061414e565b60006040518083038185875af1925050503d80600081146136da576040519150601f19603f3d011682016040523d82523d6000602084013e6136df565b606091505b509150915081156136f3579150610f1d9050565b8051156137035780518082602001fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f457865637574653a20556e6b6e6f776e206661696c7572650000000000000000604482015260640161020a565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526136129084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016124ac565b6060610f1a848460008561383a565b6000600382111561382b57508060006137e46002836141ee565b6137ef9060016141d6565b90505b818110156138255790508060028161380a81866141ee565b61381491906141d6565b61381e91906141ee565b90506137f2565b50919050565b8115613835575060015b919050565b6060824710156138cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161020a565b843b613934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161020a565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161395d919061414e565b60006040518083038185875af1925050503d806000811461399a576040519150601f19603f3d011682016040523d82523d6000602084013e61399f565b606091505b50915091506139af8282866139ba565b979650505050505050565b606083156139c9575081610f1d565b8251156139d95782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020a91906141c3565b60008083601f840112613a1e578081fd5b50813567ffffffffffffffff811115613a35578182fd5b6020830191508360208260051b8501011115613a5057600080fd5b9250929050565b600082601f830112613a67578081fd5b813567ffffffffffffffff80821115613a8257613a8261430f565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715613ac857613ac861430f565b81604052838152866020858801011115613ae0578485fd5b8360208701602083013792830160200193909352509392505050565b600060a08284031215613b0d578081fd5b60405160a0810181811067ffffffffffffffff82111715613b3057613b3061430f565b80604052508091508235815260208301356020820152604083013560408201526060830135613b5e8161433e565b60608201526080830135613b7181614360565b6080919091015292915050565b80516dffffffffffffffffffffffffffff8116811461383557600080fd5b600060208284031215613bad578081fd5b8135610f1d8161433e565b600060208284031215613bc9578081fd5b8151610f1d8161433e565b60008060408385031215613be6578081fd5b8235613bf18161433e565b91506020830135613c018161433e565b809150509250929050565b600080600060608486031215613c20578081fd5b8335613c2b8161433e565b92506020840135613c3b8161433e565b929592945050506040919091013590565b6000806000806000806000610160888a031215613c67578283fd5b8735613c728161433e565b965060208801359550604088013594506060880135613c908161433e565b93506080880135613ca08161433e565b9250613caf8960a08a01613afc565b915061014088013567ffffffffffffffff811115613ccb578182fd5b613cd78a828b01613a57565b91505092959891949750929550565b6000806000806000806101408789031215613cff578182fd5b8635613d0a8161433e565b955060208701359450604087013593506060870135613d288161433e565b9250613d378860808901613afc565b915061012087013567ffffffffffffffff811115613d53578182fd5b613d5f89828a01613a57565b9150509295509295509295565b60008060008060008060008060006101208a8c031215613d8a578182fd5b8935613d958161433e565b985060208a0135975060408a0135965060608a0135613db38161433e565b955060808a0135945060a08a0135613dca8161433e565b935060c08a0135613dda8161433e565b925060e08a0135613dea8161433e565b91506101008a013567ffffffffffffffff811115613e06578182fd5b613e128c828d01613a57565b9150509295985092959850929598565b600080600080600080600080610100898b031215613e3e578182fd5b8835613e498161433e565b975060208901359650604089013595506060890135613e678161433e565b94506080890135935060a0890135613e7e8161433e565b925060c0890135613e8e8161433e565b915060e089013567ffffffffffffffff811115613ea9578182fd5b613eb58b828c01613a57565b9150509295985092959890939650565b600080600080600080600060e0888a031215613edf578081fd5b8735613eea8161433e565b965060208801359550604088013594506060880135613f088161433e565b93506080880135925060a0880135613f1f8161433e565b915060c088013567ffffffffffffffff811115613ccb578182fd5b60008060008060008060608789031215613f52578384fd5b863567ffffffffffffffff80821115613f69578586fd5b613f758a838b01613a0d565b90985096506020890135915080821115613f8d578586fd5b613f998a838b01613a0d565b90965094506040890135915080821115613fb1578384fd5b50613fbe89828a01613a0d565b979a9699509497509295939492505050565b60008060008060408587031215613fe5578182fd5b843567ffffffffffffffff80821115613ffc578384fd5b61400888838901613a0d565b90965094506020870135915080821115614020578384fd5b5061402d87828801613a0d565b95989497509550505050565b60006020828403121561404a578081fd5b8135610f1d81614360565b600060208284031215614066578081fd5b8151610f1d81614360565b600080600060608486031215614085578081fd5b61408e84613b7e565b925061409c60208501613b7e565b9150604084015163ffffffff811681146140b4578182fd5b809150509250925092565b6000602082840312156140d0578081fd5b5051919050565b6000806000606084860312156140eb578081fd5b8351925060208401519150604084015190509250925092565b6000815180845261411c81602086016020860161427b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161416081846020870161427b565b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8089168352876020840152808716604084015285606084015280851660808401525060c060a08301526141b760c0830184614104565b98975050505050505050565b602081526000610f1d6020830184614104565b600082198211156141e9576141e96142e0565b500190565b600082614222577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561425f5761425f6142e0565b500290565b600082821015614276576142766142e0565b500390565b60005b8381101561429657818101518382015260200161427e565b8381111561252e5750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156142d9576142d96142e0565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611e4757600080fd5b8015158114611e4757600080fdfea2646970667358221220e5a03f51c2aeb82c46ab261395430f5c8ed19a7c6f3b7fe699c5875db14c81e164736f6c63430008040033000000000000000000000000470ebf5f030ed85fc1ed4c2d36b9dd02e77cf1b700000000000000000000000098257c876ace5009e7b97843f8c71b3ae795c71e0000000000000000000000000000000000000000000000000000000000000000