0x608060405234801561001057600080fd5b50600436106103425760003560e01c806384b0196e116101b8578063bc705aa211610104578063d9ceab13116100a2578063dde47d971161007c578063dde47d9714610812578063eadf016d1461081a578063f1127ed814610822578063f2fde38b1461086157600080fd5b8063d9ceab13146107c9578063dbda93a9146107d1578063dd62ed3e146107d957600080fd5b8063c87b4b55116100de578063c87b4b551461076a578063ce9bf5ac14610790578063ceb4a76a146107a3578063d505accf146107b657600080fd5b8063bc705aa2146106ec578063bee544601461074f578063c3cda5201461075757600080fd5b806395d89b4111610171578063a34b0ede1161014b578063a34b0ede146106b6578063a9059cbb146106be578063aed89f35146106d1578063b15fbc14146106d957600080fd5b806395d89b41146106935780639a0e7d661461069b5780639ab24eb0146106a357600080fd5b806384b0196e146106235780638969547c1461063e5780638da5cb5b146106515780638e539e8c1461066257806391ddadf414610675578063932c2a3f1461068b57600080fd5b80634bf5d7e91161029257806366e37eae1161023057806370a082311161020a57806370a08231146105c5578063715018a6146105ee578063747036c8146105f65780637ecebe001461061057600080fd5b806366e37eae1461058357806369ca60d6146105aa5780636fcfff45146105b257600080fd5b8063587cde1e1161026c578063587cde1e146104cd5780635c19a95c146104f85780636251812b1461050b5780636477bf471461051357600080fd5b80634bf5d7e9146104665780634c932c98146104905780634d723945146104a357600080fd5b80632ab09380116102ff5780633688c030116102d95780633688c030146104085780633992609e1461042b5780633a46b1a81461043e57806342449df61461045157600080fd5b80632ab09380146103e9578063313ce567146103f15780633644e5151461040057600080fd5b806301d215bf1461034757806306fdde0314610379578063095ea7b31461038e57806318160ddd146103b157806323b872dd146103b9578063255f7173146103cc575b600080fd5b61036661035536600461362a565b602080526000908152604090205481565b6040519081526020015b60405180910390f35b610381610874565b604051610370919061368b565b6103a161039c36600461369e565b610906565b6040519015158152602001610370565b600254610366565b6103a16103c73660046136c8565b610920565b6103d4610944565b60405163ffffffff9091168152602001610370565b6103a161096c565b60405160128152602001610370565b61036661097f565b6103a1610416366004613704565b601d6020526000908152604090205460ff1681565b610366610439366004613704565b61098e565b61036661044c36600461369e565b6109f3565b61046461045f36600461372f565b610a6a565b005b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b6020820152610381565b61046461049e36600461372f565b610a84565b600f546010546104b49160ff169082565b6040805160ff9093168352602083019190915201610370565b6104e06104db36600461362a565b610b2f565b6040516001600160a01b039091168152602001610370565b61046461050636600461362a565b610b4d565b6103a1610bb1565b61056f61052136600461375e565b601a6020526000908152604090208054600182015460028301546003840154600485015460058601546006909601549495939463ffffffff8085169564010000000090950416939060ff1688565b6040516103709897969594939291906137b1565b6103667f00000000000000000000000000000000000000000000152d02c7e14af680000081565b6103a1610bd3565b6103d46105c036600461362a565b610bdc565b6103666105d336600461362a565b6001600160a01b031660009081526020819052604090205490565b610464610be7565b6018546106039060ff1681565b6040516103709190613803565b61036661061e36600461362a565b610bfb565b61062b610c06565b6040516103709796959493929190613811565b61046461064c3660046138a7565b610c4c565b600b546001600160a01b03166104e0565b610366610670366004613704565b610e60565b60405165ffffffffffff42168152602001610370565b6103a1610eb0565b610381610ed8565b610366610ee7565b6103666106b136600461362a565b610f01565b6103a1610f31565b6103a16106cc36600461369e565b610f82565b610464610f90565b6104646106e736600461362a565b61115b565b6011546012546013546014546015546016546017546107149695949360ff9081169392911687565b6040805197885260208801969096529486019390935260ff9182166060860152608085015260a08401919091521660c082015260e001610370565b610464611216565b6104646107653660046138eb565b611529565b6103d4610778366004613704565b601c6020526000908152604090205463ffffffff1681565b601e546104e0906001600160a01b031681565b6104646107b1366004613959565b611580565b6104646107c4366004613a2b565b611620565b61046461175a565b6103a16117fb565b6103666107e7366004613a95565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610464611804565b6103a1611af5565b610835610830366004613abf565b611afe565b60408051825165ffffffffffff1681526020928301516001600160d01b03169281019290925201610370565b61046461086f36600461362a565b611b23565b60606003805461088390613adb565b80601f01602080910402602001604051908101604052809291908181526020018280546108af90613adb565b80156108fc5780601f106108d1576101008083540402835291602001916108fc565b820191906000526020600020905b8154815290600101906020018083116108df57829003601f168201915b5050505050905090565b600033610914818585611b5e565b60019150505b92915050565b60003361092e858285611b6b565b610939858585611be9565b506001949350505050565b60115460009081906109569042613b2b565b6013549091506109669082613b54565b91505090565b6000806109796021611c48565b11905090565b6000610989611c53565b905090565b60004265ffffffffffff811683106109cf57604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b6109e36109db84611d7e565b601f90611db5565b6001600160d01b03169392505050565b60004265ffffffffffff81168310610a2f57604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044016109c6565b610a59610a3b84611d7e565b6001600160a01b038616600090815260096020526040902090611db5565b6001600160d01b0316949350505050565b6000610a74610944565b9050610a808282610c4c565b5050565b8061ffff16600003610a9d57610a9a6021611c48565b90505b60005b8161ffff16811015610a8057610ab66021611c48565b15610a8057600080610ac9602182611e6b565b9092509050610ad9602183611e89565b5060405181906001600160a01b038416907f76acee09c4cee70a742aaaf2dd1e8e6b42128e9e3f46ca4749c443ebd143903b90600090a3610b1a8282611e9e565b50508080610b2790613b68565b915050610aa0565b6001600160a01b039081166000908152600860205260409020541690565b6001600160a01b0381163314610ba55760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792064656c656761746520746f20796f757273656c6600000060448201526064016109c6565b610bae81611ed4565b50565b600060035b60185460ff166003811115610bcd57610bcd613779565b14905090565b60006002610bb6565b600061091a82611edf565b610bef611f01565b610bf96000611f2e565b565b600061091a82611f80565b600060608060008060006060610c1a611f9e565b610c22611fcb565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b63ffffffff81166000908152601a602052604090206002600682015460ff166003811115610c7c57610c7c613779565b14610cc25760405162461bcd60e51b81526020600482015260166024820152754e6f7420696e2046756c66696c6c656420737461746560501b60448201526064016109c6565b63ffffffff82166000908152601b60205260409020610ce081611c48565b600003610cfa5750600601805460ff191660031790555050565b8361ffff16600003610d1257610d0f81611c48565b93505b60155460005b8561ffff16811015610e5857600080610d3e866004015486611e6b90919063ffffffff16565b91509150600086600501548583610d559190613b81565b610d5f9190613b54565b6004880180549192506000610d7383613b68565b9091555060009050610d86602185611ff8565b915050610d9287611c48565b886004015403610e19576000828960030154610dae9190613b98565b610db89088613b2b565b9050610ddc8582610dc98686613b98565b610dd39190613b98565b60219190612010565b50610de78184613b98565b896003016000828254610dfa9190613b98565b9091555050505060068701805460ff1916600317905550610e58915050565b610e2784610dd38484613b98565b5081886003016000828254610e3c9190613b98565b9091555050505050508080610e5090613b68565b915050610d18565b505050505050565b60004265ffffffffffff81168310610e9c57604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044016109c6565b6109e3610ea884611d7e565b600a90611db5565b6016546013546011546000929190610ec89042613b2b565b610ed29190613bab565b10905090565b60606004805461088390613adb565b6000610ef3601f61202e565b6001600160d01b0316905090565b6001600160a01b0381166000908152600960205260408120610f229061202e565b6001600160d01b031692915050565b6011546000904210801590610f495750610f49610bb1565b8015610f585750610f58610eb0565b8015610989575060005b610f6a612067565b6006015460ff166003811115610bcd57610bcd613779565b600033610914818585611be9565b600060185460ff166003811115610fa957610fa9613779565b14610fea5760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481c995c5d595cdd1959607a1b60448201526064016109c6565b600f54600e5460ff9091169060006110028284613bab565b6018805460ff19166001179055905063ffffffff811660000361109c576000808052601d6020527f0a51588b1664495f089dd83d2d26f247920f94a57a4a09f20cf068efc8f82bd4805460ff191660011790556040517f63a60aec1cc2c0811b98fcaaa3a576ead8529a2e1f2a4a975a67645a7a4a704b908290a2604080516000808252602082019092526110979190612094565b505050565b601e5460405163e726f2e160e01b815263ffffffff831660048201526000916001600160a01b03169063e726f2e1906024016020604051808303816000875af11580156110ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111119190613bbf565b6000818152601d6020526040808220805460ff191660011790555191925082917f63a60aec1cc2c0811b98fcaaa3a576ead8529a2e1f2a4a975a67645a7a4a704b9190a250505050565b611163611f01565b6001600160a01b0381166111cc5760405162461bcd60e51b815260206004820152602a60248201527f52616e646f6d6e6573732070726f766964657220616464726573732063616e6e6044820152696f74206265207a65726f60b01b60648201526084016109c6565b601e80546001600160a01b0319166001600160a01b0383169081179091556040517ffb1e10d2175872e37567b16968825f055dcb4e8747097191057e0e32c565f2e290600090a250565b60115442101561125a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016109c6565b600360185460ff16600381111561127357611273613779565b146112c05760405162461bcd60e51b815260206004820152601c60248201527f496e697469616c2041697264726f70206e6f742066696e69736865640000000060448201526064016109c6565b60006112ca612067565b6006015460ff1660038111156112e2576112e2613779565b146113235760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481c995c5d595cdd1959607a1b60448201526064016109c6565b61132b610eb0565b61136c5760405162461bcd60e51b81526020600482015260126024820152714e6f742041697264726f702057696e646f7760701b60448201526064016109c6565b6000611376610944565b63ffffffff8082166000908152601a602052604090206017546014546002830154949550919360ff9182169392909116916113b391849116613bd8565b63ffffffff1611156113dd5760028201546014546113da9163ffffffff169060ff16613bf5565b90505b60028201546000906113f690839063ffffffff16613bd8565b60028401805463ffffffff191663ffffffff831690811790915560145491925060ff90911690036114315760068301805460ff191660011790555b601e5460405163e726f2e160e01b815263ffffffff841660048201526000916001600160a01b03169063e726f2e1906024016020604051808303816000875af1158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190613bbf565b6000818152601d60209081526040808320805460ff19169055601c9091528120805463ffffffff191663ffffffff89161790558554919250036114e7574284555b8263ffffffff168563ffffffff16827f2b9bf2127eda5d4d048efae423a08b5e75601a8813ba41169d4c745e5a0f05a960405160405180910390a45050505050565b60405162461bcd60e51b815260206004820152602660248201527f5369676e61747572652d62617365642064656c65676174696f6e2069732064696044820152651cd8589b195960d21b60648201526084016109c6565b601e546001600160a01b031633146115f45760405162461bcd60e51b815260206004820152603160248201527f4f6e6c79207468652072616e646f6d6e6573732070726f76696465722063616e6044820152702066756c66696c6c20726571756573747360781b60648201526084016109c6565b6000838152601d602052604090205460ff1615611615576110978383612094565b6110978383836120e4565b834211156116445760405163313c898160e11b8152600481018590526024016109c6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886116918c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006116ec826123d6565b905060006116fc82878787612403565b9050896001600160a01b0316816001600160a01b031614611743576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016109c6565b61174e8a8a8a611b5e565b50505050505050505050565b33611766602182612431565b6117a05760405162461bcd60e51b815260206004820152600b60248201526a4e6f206561726e696e677360a81b60448201526064016109c6565b60006117ad602183612446565b90506117ba602183611e89565b5060405181906001600160a01b038416907f76acee09c4cee70a742aaaf2dd1e8e6b42128e9e3f46ca4749c443ebd143903b90600090a3610a808282611e9e565b60006002610f62565b600260185460ff16600381111561181d5761181d613779565b146118795760405162461bcd60e51b815260206004820152602660248201527f496e697469616c2041697264726f70206e6f7420696e2046756c66696c6c656460448201526520737461746560d01b60648201526084016109c6565b6000600e6000018054806020026020016040519081016040528092919081815260200182805480156118d457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118b6575b50508351600f54601054959650909460ff90911693509150600090506118fa8484613b54565b905060006119088585613bab565b905060006119168385613b81565b90506000601860010180548060200260200160405190810160405280929190818152602001828054801561196957602002820191906000526020600020905b815481526020019060010190808311611955575b5050505050905060008211156119e25760005b878110156119e057600089828151811061199857611998613c12565b6020026020010151905060006119b8826021611ff890919063ffffffff16565b91506119ca905082610dd38784613b98565b50505080806119d890613b68565b91505061197c565b505b8215611ade578660005b84811015611adb57600082848381518110611a0957611a09613c12565b6020026020010151611a1b9190613bab565b905060008b8281518110611a3157611a31613c12565b602002602001015190506000611a51826021611ff890919063ffffffff16565b9150611a63905082610dd38c84613b98565b5084611a6e81613c28565b955050848314611ac5578c8581518110611a8a57611a8a613c12565b60200260200101518d8481518110611aa457611aa4613c12565b60200260200101906001600160a01b031690816001600160a01b0316815250505b5050508080611ad390613b68565b9150506119ec565b50505b50506018805460ff19166003179055505050505050565b60006003610f62565b6040805180820190915260008082526020820152611b1c838361245b565b9392505050565b611b2b611f01565b6001600160a01b038116611b5557604051631e4fbdf760e01b8152600060048201526024016109c6565b610bae81611f2e565b6110978383836001612491565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611be35781811015611bd457604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016109c6565b611be384848484036000612491565b50505050565b6001600160a01b038316611c1357604051634b637e8f60e11b8152600060048201526024016109c6565b6001600160a01b038216611c3d5760405163ec442f0560e01b8152600060048201526024016109c6565b611097838383612566565b600061091a8261269e565b6000306001600160a01b037f000000000000000000000000853b6eb015fc85fc32779dc1561ac002e4d36d8016148015611cac57507f000000000000000000000000000000000000000000000000000000000000000146145b15611cd657507fbb3f28528baada957a3d18ee45487b71bf2229b96499f84f9904d0a5af42cd6190565b610989604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f872e508af28b75433e402d45bfb8739bacffeb9443d5e4e60a567e45b20ce0b9918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115611db1576040516306dfcc6560e41b815260306004820152602481018390526044016109c6565b5090565b815460009081816005811115611e14576000611dd0846126a9565b611dda9085613b2b565b60008881526020902090915081015465ffffffffffff9081169087161015611e0457809150611e12565b611e0f816001613b98565b92505b505b6000611e2287878585612802565b90508015611e5d57611e4787611e39600184613b2b565b600091825260209091200190565b54600160301b90046001600160d01b0316611e60565b60005b979650505050505050565b6000808080611e7a8686612864565b909450925050505b9250929050565b6000611b1c836001600160a01b03841661288f565b6001600160a01b038216611ec85760405163ec442f0560e01b8152600060048201526024016109c6565b610a8060008383612566565b33610a8081836128ac565b6001600160a01b03811660009081526009602052604081205461091a90612927565b600b546001600160a01b03163314610bf95760405163118cdaa760e01b81523360048201526024016109c6565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811660009081526007602052604081205461091a565b60606109897f4f6e6500000000000000000000000000000000000000000000000000000000036005612958565b60606109897f31000000000000000000000000000000000000000000000000000000000000016006612958565b6000808080611e7a866001600160a01b038716612a03565b6000612026846001600160a01b03851684612a3d565b949350505050565b8054600090801561205e5761204883611e39600184613b2b565b54600160301b90046001600160d01b0316611b1c565b60009392505050565b6000601a6000612075610944565b63ffffffff1663ffffffff168152602001908152602001600020905090565b80516120a79060199060208401906135b7565b506018805460ff1916600217905560405182907fcd5df508256a8a6aec0e2f78ec823018eda8966c485f430b7540e68ed6da514690600090a25050565b60006120f0600c612a5a565b83516000868152601c602090815260408083205463ffffffff16808452601a90925282209394509192908490036121a657828160020160048282829054906101000a900463ffffffff166121449190613bd8565b92506101000a81548163ffffffff021916908363ffffffff1602179055508263ffffffff168263ffffffff16887ff16a5d9fa8df21eac52c5f3d65760ff8760b265923216898d4a8e5a8a582327260405160405180910390a450505050505050565b84156121b857600181018590556121c0565b805460018201555b63ffffffff82166000908152601b60205260408120905b8463ffffffff168110156123205760008882815181106121f9576121f9613c12565b60200260200101519050600087826122119190613bab565b90506000612220600c83612a64565b90506000806122338389600101546109f3565b90505b6012548110156122ae576003821061225157600092506122ae565b60408051602081018790520160408051601f19818403018152919052805160209091012094506122818b86613bab565b935061228e600c85612a64565b925061229a838d6109f3565b9050816122a681613b68565b925050612236565b6001600160a01b0383166122c657505050505061230e565b808860050160008282546122da9190613b98565b90915550600090506122ec8885611ff8565b91506123069050846122fe8484613b98565b8a9190612010565b505050505050505b8061231881613b68565b9150506121d7565b50838260020160048282829054906101000a900463ffffffff166123449190613bd8565b82546101009290920a63ffffffff818102199093169183160217909155601454600285015460ff9091166401000000009091049091160390506123915760068201805460ff191660021790555b8363ffffffff168363ffffffff16897ff16a5d9fa8df21eac52c5f3d65760ff8760b265923216898d4a8e5a8a582327260405160405180910390a45050505050505050565b600061091a6123e3611c53565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061241588888888612a70565b9250925092506124258282612b3f565b50909695505050505050565b6000611b1c836001600160a01b038416612bf8565b6000611b1c836001600160a01b038416612c04565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020611b1c9083612c4b565b6001600160a01b0384166124bb5760405163e602df0560e01b8152600060048201526024016109c6565b6001600160a01b0383166124e557604051634a1406b160e11b8152600060048201526024016109c6565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015611be357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161255891815260200190565b60405180910390a350505050565b612571838383612cbb565b6001600160a01b038316156125af576001600160a01b0383166000908152602081905260409020546125a38482612d22565b6125ad8482612d60565b505b6001600160a01b038216156125ed576001600160a01b0382166000908152602081905260409020546125e18382612d22565b6125eb8382612d60565b505b6001600160a01b038216158015906126165750600061260b83610b2f565b6001600160a01b0316145b156126255761262582836128ac565b601e546040516311c07af760e01b81526001600160a01b038581166004830152848116602483015260448201849052306064830152909116906311c07af790608401600060405180830381600087803b15801561268157600080fd5b505af1158015612695573d6000803e3d6000fd5b50505050505050565b600061091a82612a5a565b6000600182116126b7575090565b816001600160801b82106126d05760809190911c9060401b5b6801000000000000000082106126eb5760409190911c9060201b5b64010000000082106127025760209190911c9060101b5b6201000082106127175760109190911c9060081b5b610100821061272b5760089190911c9060041b5b6010821061273e5760049190911c9060021b5b6004821061274a5760011b5b600302600190811c9081858161276257612762613b3e565b048201901c9050600181858161277a5761277a613b3e565b048201901c9050600181858161279257612792613b3e565b048201901c905060018185816127aa576127aa613b3e565b048201901c905060018185816127c2576127c2613b3e565b048201901c905060018185816127da576127da613b3e565b048201901c90506127f98185816127f3576127f3613b3e565b04821190565b90039392505050565b60005b8183101561285c5760006128198484612e53565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561284857809250612856565b612853816001613b98565b93505b50612805565b509392505050565b600080806128728585612a64565b600081815260029690960160205260409095205494959350505050565b60008181526002830160205260408120819055611b1c8383612e6e565b60006128b783610b2f565b6001600160a01b0384811660008181526008602052604080822080546001600160a01b031916888616908117909155905194955093928516927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611097818361292286612e7a565b612e98565b600063ffffffff821115611db1576040516306dfcc6560e41b815260206004820152602481018390526044016109c6565b606060ff83146129725761296b83613004565b905061091a565b81805461297e90613adb565b80601f01602080910402602001604051908101604052809291908181526020018280546129aa90613adb565b80156129f75780601f106129cc576101008083540402835291602001916129f7565b820191906000526020600020905b8154815290600101906020018083116129da57829003601f168201915b5050505050905061091a565b6000818152600283016020526040812054819080612a3257612a258585612bf8565b925060009150611e829050565b600192509050611e82565b600082815260028401602052604081208290556120268484613043565b600061091a825490565b6000611b1c838361304f565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612aab5750600091506003905082612b35565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612aff573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612b2b57506000925060019150829050612b35565b9250600091508190505b9450945094915050565b6000826003811115612b5357612b53613779565b03612b5c575050565b6001826003811115612b7057612b70613779565b03612b8e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612ba257612ba2613779565b03612bc35760405163fce698f760e01b8152600481018290526024016109c6565b6003826003811115612bd757612bd7613779565b03610a80576040516335e2f38360e21b8152600481018290526024016109c6565b6000611b1c8383613079565b600081815260028301602052604081205480158015612c2a5750612c288484612bf8565b155b15611b1c5760405163015ab34360e11b8152600481018490526024016109c6565b6040805180820190915260008082526020820152826000018263ffffffff1681548110612c7a57612c7a613c12565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b612cc6838383613091565b6001600160a01b038316612d17576000612cdf60025490565b90506001600160d01b0380821115612d1457604051630e58ae9360e11b815260048101839052602481018290526044016109c6565b50505b6110978383836131bb565b6012548110612d4557612d36600c8361321a565b610a8057611097600c8361323c565b612d50600c8361321a565b15610a8057611097600c83613251565b6001600160a01b03821660009081526020805260409020547f00000000000000000000000000000000000000000000152d02c7e14af6800000808211908310612e1e5780612dd757612dd042612dc785612db8610ee7565b612dc29190613b98565b613266565b601f919061329a565b5050612dff565b612dfc42612dc78486612de8610ee7565b612df29190613b98565b612dc29190613b2b565b50505b6001600160a01b03841660009081526020805260409020839055611be3565b8015612e3757612e3442612dc784612df2610ee7565b50505b5050506001600160a01b03166000908152602080526040812055565b6000612e626002848418613b54565b611b1c90848416613b98565b6000611b1c83836132b5565b6001600160a01b03811660009081526020819052604081205461091a565b816001600160a01b0316836001600160a01b031614158015612eba5750600081115b15611097576001600160a01b03831615612f62576001600160a01b03831660009081526009602052604081208190612efd906133af612ef886613266565b6133bb565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612f57929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611097576001600160a01b03821660009081526009602052604081208190612f9b906133e0612ef886613266565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612ff5929190918252602082015260400190565b60405180910390a25050505050565b60606000613011836133ec565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000611b1c8383613414565b600082600001828154811061306657613066613c12565b9060005260206000200154905092915050565b60008181526001830160205260408120541515611b1c565b6001600160a01b0383166130bc5780600260008282546130b19190613b98565b9091555061312e9050565b6001600160a01b0383166000908152602081905260409020548181101561310f5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016109c6565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661314a57600280548290039055613169565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131ae91815260200190565b60405180910390a3505050565b6001600160a01b0383166131dd576131da600a6133e0612ef884613266565b50505b6001600160a01b0382166131ff576131fc600a6133af612ef884613266565b50505b61109761320b84610b2f565b61321484610b2f565b83612e98565b6001600160a01b03811660009081526001830160205260408120541515611b1c565b6000611b1c836001600160a01b038416613414565b6000611b1c836001600160a01b0384166132b5565b60006001600160d01b03821115611db1576040516306dfcc6560e41b815260d06004820152602481018390526044016109c6565b6000806132a8858585613463565b915091505b935093915050565b6000818152600183016020526040812054801561339e5760006132d9600183613b2b565b85549091506000906132ed90600190613b2b565b905080821461335257600086600001828154811061330d5761330d613c12565b906000526020600020015490508087600001848154811061333057613330613c12565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061336357613363613c3f565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061091a565b600091505061091a565b5092915050565b6000611b1c8284613c55565b6000806132a8426133d86133ce8861202e565b868863ffffffff16565b87919061329a565b6000611b1c8284613c75565b600060ff8216601f81111561091a57604051632cd44ac360e21b815260040160405180910390fd5b600081815260018301602052604081205461345b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561091a565b50600061091a565b82546000908190801561355c57600061348187611e39600185613b2b565b805490915065ffffffffffff80821691600160301b90046001600160d01b03169088168211156134c457604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036134fd57825465ffffffffffff16600160301b6001600160d01b0389160217835561354e565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b94508593506132ad92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816132ad565b8280548282559060005260206000209081019282156135f2579160200282015b828111156135f25782518255916020019190600101906135d7565b50611db19291505b80821115611db157600081556001016135fa565b80356001600160a01b038116811461362557600080fd5b919050565b60006020828403121561363c57600080fd5b611b1c8261360e565b6000815180845260005b8181101561366b5760208185018101518683018201520161364f565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611b1c6020830184613645565b600080604083850312156136b157600080fd5b6136ba8361360e565b946020939093013593505050565b6000806000606084860312156136dd57600080fd5b6136e68461360e565b92506136f46020850161360e565b9150604084013590509250925092565b60006020828403121561371657600080fd5b5035919050565b803561ffff8116811461362557600080fd5b60006020828403121561374157600080fd5b611b1c8261371d565b803563ffffffff8116811461362557600080fd5b60006020828403121561377057600080fd5b611b1c8261374a565b634e487b7160e01b600052602160045260246000fd5b600481106137ad57634e487b7160e01b600052602160045260246000fd5b9052565b8881526020810188905263ffffffff8781166040830152861660608201526080810185905260a0810184905260c0810183905261010081016137f660e083018461378f565b9998505050505050505050565b6020810161091a828461378f565b60ff60f81b881681526000602060e08184015261383160e084018a613645565b8381036040850152613843818a613645565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561389557835183529284019291840191600101613879565b50909c9b505050505050505050505050565b600080604083850312156138ba57600080fd5b6138c38361371d565b91506138d16020840161374a565b90509250929050565b803560ff8116811461362557600080fd5b60008060008060008060c0878903121561390457600080fd5b61390d8761360e565b95506020870135945060408701359350613929606088016138da565b92506080870135915060a087013590509295509295509295565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561396e57600080fd5b8335925060208085013567ffffffffffffffff8082111561398e57600080fd5b818701915087601f8301126139a257600080fd5b8135818111156139b4576139b4613943565b8060051b604051601f19603f830116810181811085821117156139d9576139d9613943565b60405291825284820192508381018501918a8311156139f757600080fd5b938501935b82851015613a15578435845293850193928501926139fc565b979a979950505050604095909501359450505050565b600080600080600080600060e0888a031215613a4657600080fd5b613a4f8861360e565b9650613a5d6020890161360e565b95506040880135945060608801359350613a79608089016138da565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613aa857600080fd5b613ab18361360e565b91506138d16020840161360e565b60008060408385031215613ad257600080fd5b6138c38361360e565b600181811c90821680613aef57607f821691505b602082108103613b0f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561091a5761091a613b15565b634e487b7160e01b600052601260045260246000fd5b600082613b6357613b63613b3e565b500490565b600060018201613b7a57613b7a613b15565b5060010190565b808202811582820484141761091a5761091a613b15565b8082018082111561091a5761091a613b15565b600082613bba57613bba613b3e565b500690565b600060208284031215613bd157600080fd5b5051919050565b63ffffffff8181168382160190808211156133a8576133a8613b15565b63ffffffff8281168282160390808211156133a8576133a8613b15565b634e487b7160e01b600052603260045260246000fd5b600081613c3757613c37613b15565b506000190190565b634e487b7160e01b600052603160045260246000fd5b6001600160d01b038281168282160390808211156133a8576133a8613b15565b6001600160d01b038181168382160190808211156133a8576133a8613b1556fea2646970667358221220cfe2b996568640f5c0f1e078025bbca4c6e78e708c0888819a6c6bb8bc1abe3d64736f6c63430008140033
0x6101806040523480156200001257600080fd5b50604051620047d8380380620047d8833981016040819052620000359162000768565b338580604051806040016040528060018152602001603160f81b815250888881600390816200006591906200097a565b5060046200007482826200097a565b5062000086915083905060056200045b565b61012052620000978160066200045b565b61014052815160208084019190912060e052815190820120610100524660a0526200012560e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200015f57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200016a8162000494565b506000836020015160ff1611620001c45760405162461bcd60e51b815260206004820152601560248201527f496e76616c69642077696e6e65727320636f756e740000000000000000000000604482015260640162000156565b60008360400151116200021a5760405162461bcd60e51b815260206004820152601660248201527f496e76616c69642061697264726f7020616d6f756e7400000000000000000000604482015260640162000156565b8251516200025d5760405162461bcd60e51b815260206004820152600f60248201526e4e6f207061727469636970616e747360881b604482015260640162000156565b6000826080015111620002b35760405162461bcd60e51b815260206004820152601e60248201527f496e76616c696420726567756c61722061697264726f7020616d6f756e740000604482015260640162000156565b6000826060015160ff16116200030c5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c696420726567756c61722077696e6e65727320636f756e74000000604482015260640162000156565b6000826040015111620003625760405162461bcd60e51b815260206004820152601860248201527f496e76616c69642061697264726f7020696e74657276616c0000000000000000604482015260640162000156565b81604001518260a001511115620003bc5760405162461bcd60e51b815260206004820152601760248201527f496e76616c69642077696e646f77206475726174696f6e000000000000000000604482015260640162000156565b825180518491600e91620003d891839160209091019062000529565b5060208281015160018301805460ff1990811660ff93841617909155604094850151600290940193909355855160115590850151601255918401516013556060840151601480548316918416919091179055608084015160155560a084015160165560c09093015160178054909416911617909155610160525062000aa0915050565b60006020835110156200047b576200047383620004e6565b90506200048e565b816200048884826200097a565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000514578260405163305a27a960e01b815260040162000156919062000a46565b8051620005218262000a7b565b179392505050565b82805482825590600052602060002090810192821562000581579160200282015b828111156200058157825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200054a565b506200058f92915062000593565b5090565b5b808211156200058f576000815560010162000594565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715620005e557620005e5620005aa565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620006165762000616620005aa565b604052919050565b60005b838110156200063b57818101518382015260200162000621565b50506000910152565b600082601f8301126200065657600080fd5b81516001600160401b03811115620006725762000672620005aa565b62000687601f8201601f1916602001620005eb565b8181528460208386010111156200069d57600080fd5b620006b08260208301602087016200061e565b949350505050565b805160ff81168114620006ca57600080fd5b919050565b600060e08284031215620006e257600080fd5b60405160e081016001600160401b0381118282101715620007075762000707620005aa565b80604052508091508251815260208301516020820152604083015160408201526200073560608401620006b8565b60608201526080830151608082015260a083015160a08201526200075c60c08401620006b8565b60c08201525092915050565b600080600080600061016086880312156200078257600080fd5b85516001600160401b03808211156200079a57600080fd5b620007a889838a0162000644565b9650602091508188015181811115620007c057600080fd5b620007ce8a828b0162000644565b965050604088015181811115620007e457600080fd5b88016060818b031215620007f757600080fd5b62000801620005c0565b8151838111156200081157600080fd5b8201601f81018c136200082357600080fd5b805184811115620008385762000838620005aa565b8060051b94506200084b868601620005eb565b818152948201860194868101908e8711156200086657600080fd5b928701925b86841015620008a057835192506001600160a01b03831683146200088f5760008081fd5b82825292870192908701906200086b565b845250620008b3915050828501620006b8565b848201526040820151604082015280965050505050620008d78760608801620006cf565b915061014086015190509295509295909350565b600181811c908216806200090057607f821691505b6020821081036200092157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200097557600081815260208120601f850160051c81016020861015620009505750805b601f850160051c820191505b8181101562000971578281556001016200095c565b5050505b505050565b81516001600160401b03811115620009965762000996620005aa565b620009ae81620009a78454620008eb565b8462000927565b602080601f831160018114620009e65760008415620009cd5750858301515b600019600386901b1c1916600185901b17855562000971565b600085815260208120601f198616915b8281101562000a1757888601518255948401946001909101908401620009f6565b508582101562000a365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b602081526000825180602084015262000a678160408501602087016200061e565b601f01601f19169190910160400192915050565b80516020808301519190811015620009215760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051613ccb62000b0d600039600081816105880152612d7a01526000611fd201526000611fa501526000611d2d01526000611d0501526000611c6001526000611c8a01526000611cb40152613ccb6000f3fe608060405234801561001057600080fd5b50600436106103425760003560e01c806384b0196e116101b8578063bc705aa211610104578063d9ceab13116100a2578063dde47d971161007c578063dde47d9714610812578063eadf016d1461081a578063f1127ed814610822578063f2fde38b1461086157600080fd5b8063d9ceab13146107c9578063dbda93a9146107d1578063dd62ed3e146107d957600080fd5b8063c87b4b55116100de578063c87b4b551461076a578063ce9bf5ac14610790578063ceb4a76a146107a3578063d505accf146107b657600080fd5b8063bc705aa2146106ec578063bee544601461074f578063c3cda5201461075757600080fd5b806395d89b4111610171578063a34b0ede1161014b578063a34b0ede146106b6578063a9059cbb146106be578063aed89f35146106d1578063b15fbc14146106d957600080fd5b806395d89b41146106935780639a0e7d661461069b5780639ab24eb0146106a357600080fd5b806384b0196e146106235780638969547c1461063e5780638da5cb5b146106515780638e539e8c1461066257806391ddadf414610675578063932c2a3f1461068b57600080fd5b80634bf5d7e91161029257806366e37eae1161023057806370a082311161020a57806370a08231146105c5578063715018a6146105ee578063747036c8146105f65780637ecebe001461061057600080fd5b806366e37eae1461058357806369ca60d6146105aa5780636fcfff45146105b257600080fd5b8063587cde1e1161026c578063587cde1e146104cd5780635c19a95c146104f85780636251812b1461050b5780636477bf471461051357600080fd5b80634bf5d7e9146104665780634c932c98146104905780634d723945146104a357600080fd5b80632ab09380116102ff5780633688c030116102d95780633688c030146104085780633992609e1461042b5780633a46b1a81461043e57806342449df61461045157600080fd5b80632ab09380146103e9578063313ce567146103f15780633644e5151461040057600080fd5b806301d215bf1461034757806306fdde0314610379578063095ea7b31461038e57806318160ddd146103b157806323b872dd146103b9578063255f7173146103cc575b600080fd5b61036661035536600461362a565b602080526000908152604090205481565b6040519081526020015b60405180910390f35b610381610874565b604051610370919061368b565b6103a161039c36600461369e565b610906565b6040519015158152602001610370565b600254610366565b6103a16103c73660046136c8565b610920565b6103d4610944565b60405163ffffffff9091168152602001610370565b6103a161096c565b60405160128152602001610370565b61036661097f565b6103a1610416366004613704565b601d6020526000908152604090205460ff1681565b610366610439366004613704565b61098e565b61036661044c36600461369e565b6109f3565b61046461045f36600461372f565b610a6a565b005b60408051808201909152600e81526d06d6f64653d74696d657374616d760941b6020820152610381565b61046461049e36600461372f565b610a84565b600f546010546104b49160ff169082565b6040805160ff9093168352602083019190915201610370565b6104e06104db36600461362a565b610b2f565b6040516001600160a01b039091168152602001610370565b61046461050636600461362a565b610b4d565b6103a1610bb1565b61056f61052136600461375e565b601a6020526000908152604090208054600182015460028301546003840154600485015460058601546006909601549495939463ffffffff8085169564010000000090950416939060ff1688565b6040516103709897969594939291906137b1565b6103667f000000000000000000000000000000000000000000000000000000000000000081565b6103a1610bd3565b6103d46105c036600461362a565b610bdc565b6103666105d336600461362a565b6001600160a01b031660009081526020819052604090205490565b610464610be7565b6018546106039060ff1681565b6040516103709190613803565b61036661061e36600461362a565b610bfb565b61062b610c06565b6040516103709796959493929190613811565b61046461064c3660046138a7565b610c4c565b600b546001600160a01b03166104e0565b610366610670366004613704565b610e60565b60405165ffffffffffff42168152602001610370565b6103a1610eb0565b610381610ed8565b610366610ee7565b6103666106b136600461362a565b610f01565b6103a1610f31565b6103a16106cc36600461369e565b610f82565b610464610f90565b6104646106e736600461362a565b61115b565b6011546012546013546014546015546016546017546107149695949360ff9081169392911687565b6040805197885260208801969096529486019390935260ff9182166060860152608085015260a08401919091521660c082015260e001610370565b610464611216565b6104646107653660046138eb565b611529565b6103d4610778366004613704565b601c6020526000908152604090205463ffffffff1681565b601e546104e0906001600160a01b031681565b6104646107b1366004613959565b611580565b6104646107c4366004613a2b565b611620565b61046461175a565b6103a16117fb565b6103666107e7366004613a95565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610464611804565b6103a1611af5565b610835610830366004613abf565b611afe565b60408051825165ffffffffffff1681526020928301516001600160d01b03169281019290925201610370565b61046461086f36600461362a565b611b23565b60606003805461088390613adb565b80601f01602080910402602001604051908101604052809291908181526020018280546108af90613adb565b80156108fc5780601f106108d1576101008083540402835291602001916108fc565b820191906000526020600020905b8154815290600101906020018083116108df57829003601f168201915b5050505050905090565b600033610914818585611b5e565b60019150505b92915050565b60003361092e858285611b6b565b610939858585611be9565b506001949350505050565b60115460009081906109569042613b2b565b6013549091506109669082613b54565b91505090565b6000806109796021611c48565b11905090565b6000610989611c53565b905090565b60004265ffffffffffff811683106109cf57604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b6109e36109db84611d7e565b601f90611db5565b6001600160d01b03169392505050565b60004265ffffffffffff81168310610a2f57604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044016109c6565b610a59610a3b84611d7e565b6001600160a01b038616600090815260096020526040902090611db5565b6001600160d01b0316949350505050565b6000610a74610944565b9050610a808282610c4c565b5050565b8061ffff16600003610a9d57610a9a6021611c48565b90505b60005b8161ffff16811015610a8057610ab66021611c48565b15610a8057600080610ac9602182611e6b565b9092509050610ad9602183611e89565b5060405181906001600160a01b038416907f76acee09c4cee70a742aaaf2dd1e8e6b42128e9e3f46ca4749c443ebd143903b90600090a3610b1a8282611e9e565b50508080610b2790613b68565b915050610aa0565b6001600160a01b039081166000908152600860205260409020541690565b6001600160a01b0381163314610ba55760405162461bcd60e51b815260206004820152601d60248201527f43616e206f6e6c792064656c656761746520746f20796f757273656c6600000060448201526064016109c6565b610bae81611ed4565b50565b600060035b60185460ff166003811115610bcd57610bcd613779565b14905090565b60006002610bb6565b600061091a82611edf565b610bef611f01565b610bf96000611f2e565b565b600061091a82611f80565b600060608060008060006060610c1a611f9e565b610c22611fcb565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b63ffffffff81166000908152601a602052604090206002600682015460ff166003811115610c7c57610c7c613779565b14610cc25760405162461bcd60e51b81526020600482015260166024820152754e6f7420696e2046756c66696c6c656420737461746560501b60448201526064016109c6565b63ffffffff82166000908152601b60205260409020610ce081611c48565b600003610cfa5750600601805460ff191660031790555050565b8361ffff16600003610d1257610d0f81611c48565b93505b60155460005b8561ffff16811015610e5857600080610d3e866004015486611e6b90919063ffffffff16565b91509150600086600501548583610d559190613b81565b610d5f9190613b54565b6004880180549192506000610d7383613b68565b9091555060009050610d86602185611ff8565b915050610d9287611c48565b886004015403610e19576000828960030154610dae9190613b98565b610db89088613b2b565b9050610ddc8582610dc98686613b98565b610dd39190613b98565b60219190612010565b50610de78184613b98565b896003016000828254610dfa9190613b98565b9091555050505060068701805460ff1916600317905550610e58915050565b610e2784610dd38484613b98565b5081886003016000828254610e3c9190613b98565b9091555050505050508080610e5090613b68565b915050610d18565b505050505050565b60004265ffffffffffff81168310610e9c57604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044016109c6565b6109e3610ea884611d7e565b600a90611db5565b6016546013546011546000929190610ec89042613b2b565b610ed29190613bab565b10905090565b60606004805461088390613adb565b6000610ef3601f61202e565b6001600160d01b0316905090565b6001600160a01b0381166000908152600960205260408120610f229061202e565b6001600160d01b031692915050565b6011546000904210801590610f495750610f49610bb1565b8015610f585750610f58610eb0565b8015610989575060005b610f6a612067565b6006015460ff166003811115610bcd57610bcd613779565b600033610914818585611be9565b600060185460ff166003811115610fa957610fa9613779565b14610fea5760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481c995c5d595cdd1959607a1b60448201526064016109c6565b600f54600e5460ff9091169060006110028284613bab565b6018805460ff19166001179055905063ffffffff811660000361109c576000808052601d6020527f0a51588b1664495f089dd83d2d26f247920f94a57a4a09f20cf068efc8f82bd4805460ff191660011790556040517f63a60aec1cc2c0811b98fcaaa3a576ead8529a2e1f2a4a975a67645a7a4a704b908290a2604080516000808252602082019092526110979190612094565b505050565b601e5460405163e726f2e160e01b815263ffffffff831660048201526000916001600160a01b03169063e726f2e1906024016020604051808303816000875af11580156110ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111119190613bbf565b6000818152601d6020526040808220805460ff191660011790555191925082917f63a60aec1cc2c0811b98fcaaa3a576ead8529a2e1f2a4a975a67645a7a4a704b9190a250505050565b611163611f01565b6001600160a01b0381166111cc5760405162461bcd60e51b815260206004820152602a60248201527f52616e646f6d6e6573732070726f766964657220616464726573732063616e6e6044820152696f74206265207a65726f60b01b60648201526084016109c6565b601e80546001600160a01b0319166001600160a01b0383169081179091556040517ffb1e10d2175872e37567b16968825f055dcb4e8747097191057e0e32c565f2e290600090a250565b60115442101561125a5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081cdd185c9d1959081e595d608a1b60448201526064016109c6565b600360185460ff16600381111561127357611273613779565b146112c05760405162461bcd60e51b815260206004820152601c60248201527f496e697469616c2041697264726f70206e6f742066696e69736865640000000060448201526064016109c6565b60006112ca612067565b6006015460ff1660038111156112e2576112e2613779565b146113235760405162461bcd60e51b8152602060048201526011602482015270105b1c9958591e481c995c5d595cdd1959607a1b60448201526064016109c6565b61132b610eb0565b61136c5760405162461bcd60e51b81526020600482015260126024820152714e6f742041697264726f702057696e646f7760701b60448201526064016109c6565b6000611376610944565b63ffffffff8082166000908152601a602052604090206017546014546002830154949550919360ff9182169392909116916113b391849116613bd8565b63ffffffff1611156113dd5760028201546014546113da9163ffffffff169060ff16613bf5565b90505b60028201546000906113f690839063ffffffff16613bd8565b60028401805463ffffffff191663ffffffff831690811790915560145491925060ff90911690036114315760068301805460ff191660011790555b601e5460405163e726f2e160e01b815263ffffffff841660048201526000916001600160a01b03169063e726f2e1906024016020604051808303816000875af1158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a69190613bbf565b6000818152601d60209081526040808320805460ff19169055601c9091528120805463ffffffff191663ffffffff89161790558554919250036114e7574284555b8263ffffffff168563ffffffff16827f2b9bf2127eda5d4d048efae423a08b5e75601a8813ba41169d4c745e5a0f05a960405160405180910390a45050505050565b60405162461bcd60e51b815260206004820152602660248201527f5369676e61747572652d62617365642064656c65676174696f6e2069732064696044820152651cd8589b195960d21b60648201526084016109c6565b601e546001600160a01b031633146115f45760405162461bcd60e51b815260206004820152603160248201527f4f6e6c79207468652072616e646f6d6e6573732070726f76696465722063616e6044820152702066756c66696c6c20726571756573747360781b60648201526084016109c6565b6000838152601d602052604090205460ff1615611615576110978383612094565b6110978383836120e4565b834211156116445760405163313c898160e11b8152600481018590526024016109c6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886116918c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006116ec826123d6565b905060006116fc82878787612403565b9050896001600160a01b0316816001600160a01b031614611743576040516325c0072360e11b81526001600160a01b0380831660048301528b1660248201526044016109c6565b61174e8a8a8a611b5e565b50505050505050505050565b33611766602182612431565b6117a05760405162461bcd60e51b815260206004820152600b60248201526a4e6f206561726e696e677360a81b60448201526064016109c6565b60006117ad602183612446565b90506117ba602183611e89565b5060405181906001600160a01b038416907f76acee09c4cee70a742aaaf2dd1e8e6b42128e9e3f46ca4749c443ebd143903b90600090a3610a808282611e9e565b60006002610f62565b600260185460ff16600381111561181d5761181d613779565b146118795760405162461bcd60e51b815260206004820152602660248201527f496e697469616c2041697264726f70206e6f7420696e2046756c66696c6c656460448201526520737461746560d01b60648201526084016109c6565b6000600e6000018054806020026020016040519081016040528092919081815260200182805480156118d457602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116118b6575b50508351600f54601054959650909460ff90911693509150600090506118fa8484613b54565b905060006119088585613bab565b905060006119168385613b81565b90506000601860010180548060200260200160405190810160405280929190818152602001828054801561196957602002820191906000526020600020905b815481526020019060010190808311611955575b5050505050905060008211156119e25760005b878110156119e057600089828151811061199857611998613c12565b6020026020010151905060006119b8826021611ff890919063ffffffff16565b91506119ca905082610dd38784613b98565b50505080806119d890613b68565b91505061197c565b505b8215611ade578660005b84811015611adb57600082848381518110611a0957611a09613c12565b6020026020010151611a1b9190613bab565b905060008b8281518110611a3157611a31613c12565b602002602001015190506000611a51826021611ff890919063ffffffff16565b9150611a63905082610dd38c84613b98565b5084611a6e81613c28565b955050848314611ac5578c8581518110611a8a57611a8a613c12565b60200260200101518d8481518110611aa457611aa4613c12565b60200260200101906001600160a01b031690816001600160a01b0316815250505b5050508080611ad390613b68565b9150506119ec565b50505b50506018805460ff19166003179055505050505050565b60006003610f62565b6040805180820190915260008082526020820152611b1c838361245b565b9392505050565b611b2b611f01565b6001600160a01b038116611b5557604051631e4fbdf760e01b8152600060048201526024016109c6565b610bae81611f2e565b6110978383836001612491565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611be35781811015611bd457604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016109c6565b611be384848484036000612491565b50505050565b6001600160a01b038316611c1357604051634b637e8f60e11b8152600060048201526024016109c6565b6001600160a01b038216611c3d5760405163ec442f0560e01b8152600060048201526024016109c6565b611097838383612566565b600061091a8261269e565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611cac57507f000000000000000000000000000000000000000000000000000000000000000046145b15611cd657507f000000000000000000000000000000000000000000000000000000000000000090565b610989604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115611db1576040516306dfcc6560e41b815260306004820152602481018390526044016109c6565b5090565b815460009081816005811115611e14576000611dd0846126a9565b611dda9085613b2b565b60008881526020902090915081015465ffffffffffff9081169087161015611e0457809150611e12565b611e0f816001613b98565b92505b505b6000611e2287878585612802565b90508015611e5d57611e4787611e39600184613b2b565b600091825260209091200190565b54600160301b90046001600160d01b0316611e60565b60005b979650505050505050565b6000808080611e7a8686612864565b909450925050505b9250929050565b6000611b1c836001600160a01b03841661288f565b6001600160a01b038216611ec85760405163ec442f0560e01b8152600060048201526024016109c6565b610a8060008383612566565b33610a8081836128ac565b6001600160a01b03811660009081526009602052604081205461091a90612927565b600b546001600160a01b03163314610bf95760405163118cdaa760e01b81523360048201526024016109c6565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811660009081526007602052604081205461091a565b60606109897f00000000000000000000000000000000000000000000000000000000000000006005612958565b60606109897f00000000000000000000000000000000000000000000000000000000000000006006612958565b6000808080611e7a866001600160a01b038716612a03565b6000612026846001600160a01b03851684612a3d565b949350505050565b8054600090801561205e5761204883611e39600184613b2b565b54600160301b90046001600160d01b0316611b1c565b60009392505050565b6000601a6000612075610944565b63ffffffff1663ffffffff168152602001908152602001600020905090565b80516120a79060199060208401906135b7565b506018805460ff1916600217905560405182907fcd5df508256a8a6aec0e2f78ec823018eda8966c485f430b7540e68ed6da514690600090a25050565b60006120f0600c612a5a565b83516000868152601c602090815260408083205463ffffffff16808452601a90925282209394509192908490036121a657828160020160048282829054906101000a900463ffffffff166121449190613bd8565b92506101000a81548163ffffffff021916908363ffffffff1602179055508263ffffffff168263ffffffff16887ff16a5d9fa8df21eac52c5f3d65760ff8760b265923216898d4a8e5a8a582327260405160405180910390a450505050505050565b84156121b857600181018590556121c0565b805460018201555b63ffffffff82166000908152601b60205260408120905b8463ffffffff168110156123205760008882815181106121f9576121f9613c12565b60200260200101519050600087826122119190613bab565b90506000612220600c83612a64565b90506000806122338389600101546109f3565b90505b6012548110156122ae576003821061225157600092506122ae565b60408051602081018790520160408051601f19818403018152919052805160209091012094506122818b86613bab565b935061228e600c85612a64565b925061229a838d6109f3565b9050816122a681613b68565b925050612236565b6001600160a01b0383166122c657505050505061230e565b808860050160008282546122da9190613b98565b90915550600090506122ec8885611ff8565b91506123069050846122fe8484613b98565b8a9190612010565b505050505050505b8061231881613b68565b9150506121d7565b50838260020160048282829054906101000a900463ffffffff166123449190613bd8565b82546101009290920a63ffffffff818102199093169183160217909155601454600285015460ff9091166401000000009091049091160390506123915760068201805460ff191660021790555b8363ffffffff168363ffffffff16897ff16a5d9fa8df21eac52c5f3d65760ff8760b265923216898d4a8e5a8a582327260405160405180910390a45050505050505050565b600061091a6123e3611c53565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061241588888888612a70565b9250925092506124258282612b3f565b50909695505050505050565b6000611b1c836001600160a01b038416612bf8565b6000611b1c836001600160a01b038416612c04565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020611b1c9083612c4b565b6001600160a01b0384166124bb5760405163e602df0560e01b8152600060048201526024016109c6565b6001600160a01b0383166124e557604051634a1406b160e11b8152600060048201526024016109c6565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015611be357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161255891815260200190565b60405180910390a350505050565b612571838383612cbb565b6001600160a01b038316156125af576001600160a01b0383166000908152602081905260409020546125a38482612d22565b6125ad8482612d60565b505b6001600160a01b038216156125ed576001600160a01b0382166000908152602081905260409020546125e18382612d22565b6125eb8382612d60565b505b6001600160a01b038216158015906126165750600061260b83610b2f565b6001600160a01b0316145b156126255761262582836128ac565b601e546040516311c07af760e01b81526001600160a01b038581166004830152848116602483015260448201849052306064830152909116906311c07af790608401600060405180830381600087803b15801561268157600080fd5b505af1158015612695573d6000803e3d6000fd5b50505050505050565b600061091a82612a5a565b6000600182116126b7575090565b816001600160801b82106126d05760809190911c9060401b5b6801000000000000000082106126eb5760409190911c9060201b5b64010000000082106127025760209190911c9060101b5b6201000082106127175760109190911c9060081b5b610100821061272b5760089190911c9060041b5b6010821061273e5760049190911c9060021b5b6004821061274a5760011b5b600302600190811c9081858161276257612762613b3e565b048201901c9050600181858161277a5761277a613b3e565b048201901c9050600181858161279257612792613b3e565b048201901c905060018185816127aa576127aa613b3e565b048201901c905060018185816127c2576127c2613b3e565b048201901c905060018185816127da576127da613b3e565b048201901c90506127f98185816127f3576127f3613b3e565b04821190565b90039392505050565b60005b8183101561285c5760006128198484612e53565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561284857809250612856565b612853816001613b98565b93505b50612805565b509392505050565b600080806128728585612a64565b600081815260029690960160205260409095205494959350505050565b60008181526002830160205260408120819055611b1c8383612e6e565b60006128b783610b2f565b6001600160a01b0384811660008181526008602052604080822080546001600160a01b031916888616908117909155905194955093928516927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611097818361292286612e7a565b612e98565b600063ffffffff821115611db1576040516306dfcc6560e41b815260206004820152602481018390526044016109c6565b606060ff83146129725761296b83613004565b905061091a565b81805461297e90613adb565b80601f01602080910402602001604051908101604052809291908181526020018280546129aa90613adb565b80156129f75780601f106129cc576101008083540402835291602001916129f7565b820191906000526020600020905b8154815290600101906020018083116129da57829003601f168201915b5050505050905061091a565b6000818152600283016020526040812054819080612a3257612a258585612bf8565b925060009150611e829050565b600192509050611e82565b600082815260028401602052604081208290556120268484613043565b600061091a825490565b6000611b1c838361304f565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115612aab5750600091506003905082612b35565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015612aff573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612b2b57506000925060019150829050612b35565b9250600091508190505b9450945094915050565b6000826003811115612b5357612b53613779565b03612b5c575050565b6001826003811115612b7057612b70613779565b03612b8e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115612ba257612ba2613779565b03612bc35760405163fce698f760e01b8152600481018290526024016109c6565b6003826003811115612bd757612bd7613779565b03610a80576040516335e2f38360e21b8152600481018290526024016109c6565b6000611b1c8383613079565b600081815260028301602052604081205480158015612c2a5750612c288484612bf8565b155b15611b1c5760405163015ab34360e11b8152600481018490526024016109c6565b6040805180820190915260008082526020820152826000018263ffffffff1681548110612c7a57612c7a613c12565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b612cc6838383613091565b6001600160a01b038316612d17576000612cdf60025490565b90506001600160d01b0380821115612d1457604051630e58ae9360e11b815260048101839052602481018290526044016109c6565b50505b6110978383836131bb565b6012548110612d4557612d36600c8361321a565b610a8057611097600c8361323c565b612d50600c8361321a565b15610a8057611097600c83613251565b6001600160a01b03821660009081526020805260409020547f0000000000000000000000000000000000000000000000000000000000000000808211908310612e1e5780612dd757612dd042612dc785612db8610ee7565b612dc29190613b98565b613266565b601f919061329a565b5050612dff565b612dfc42612dc78486612de8610ee7565b612df29190613b98565b612dc29190613b2b565b50505b6001600160a01b03841660009081526020805260409020839055611be3565b8015612e3757612e3442612dc784612df2610ee7565b50505b5050506001600160a01b03166000908152602080526040812055565b6000612e626002848418613b54565b611b1c90848416613b98565b6000611b1c83836132b5565b6001600160a01b03811660009081526020819052604081205461091a565b816001600160a01b0316836001600160a01b031614158015612eba5750600081115b15611097576001600160a01b03831615612f62576001600160a01b03831660009081526009602052604081208190612efd906133af612ef886613266565b6133bb565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612f57929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615611097576001600160a01b03821660009081526009602052604081208190612f9b906133e0612ef886613266565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051612ff5929190918252602082015260400190565b60405180910390a25050505050565b60606000613011836133ec565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000611b1c8383613414565b600082600001828154811061306657613066613c12565b9060005260206000200154905092915050565b60008181526001830160205260408120541515611b1c565b6001600160a01b0383166130bc5780600260008282546130b19190613b98565b9091555061312e9050565b6001600160a01b0383166000908152602081905260409020548181101561310f5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016109c6565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661314a57600280548290039055613169565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131ae91815260200190565b60405180910390a3505050565b6001600160a01b0383166131dd576131da600a6133e0612ef884613266565b50505b6001600160a01b0382166131ff576131fc600a6133af612ef884613266565b50505b61109761320b84610b2f565b61321484610b2f565b83612e98565b6001600160a01b03811660009081526001830160205260408120541515611b1c565b6000611b1c836001600160a01b038416613414565b6000611b1c836001600160a01b0384166132b5565b60006001600160d01b03821115611db1576040516306dfcc6560e41b815260d06004820152602481018390526044016109c6565b6000806132a8858585613463565b915091505b935093915050565b6000818152600183016020526040812054801561339e5760006132d9600183613b2b565b85549091506000906132ed90600190613b2b565b905080821461335257600086600001828154811061330d5761330d613c12565b906000526020600020015490508087600001848154811061333057613330613c12565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061336357613363613c3f565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061091a565b600091505061091a565b5092915050565b6000611b1c8284613c55565b6000806132a8426133d86133ce8861202e565b868863ffffffff16565b87919061329a565b6000611b1c8284613c75565b600060ff8216601f81111561091a57604051632cd44ac360e21b815260040160405180910390fd5b600081815260018301602052604081205461345b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561091a565b50600061091a565b82546000908190801561355c57600061348187611e39600185613b2b565b805490915065ffffffffffff80821691600160301b90046001600160d01b03169088168211156134c457604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff16036134fd57825465ffffffffffff16600160301b6001600160d01b0389160217835561354e565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b94508593506132ad92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816132ad565b8280548282559060005260206000209081019282156135f2579160200282015b828111156135f25782518255916020019190600101906135d7565b50611db19291505b80821115611db157600081556001016135fa565b80356001600160a01b038116811461362557600080fd5b919050565b60006020828403121561363c57600080fd5b611b1c8261360e565b6000815180845260005b8181101561366b5760208185018101518683018201520161364f565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611b1c6020830184613645565b600080604083850312156136b157600080fd5b6136ba8361360e565b946020939093013593505050565b6000806000606084860312156136dd57600080fd5b6136e68461360e565b92506136f46020850161360e565b9150604084013590509250925092565b60006020828403121561371657600080fd5b5035919050565b803561ffff8116811461362557600080fd5b60006020828403121561374157600080fd5b611b1c8261371d565b803563ffffffff8116811461362557600080fd5b60006020828403121561377057600080fd5b611b1c8261374a565b634e487b7160e01b600052602160045260246000fd5b600481106137ad57634e487b7160e01b600052602160045260246000fd5b9052565b8881526020810188905263ffffffff8781166040830152861660608201526080810185905260a0810184905260c0810183905261010081016137f660e083018461378f565b9998505050505050505050565b6020810161091a828461378f565b60ff60f81b881681526000602060e08184015261383160e084018a613645565b8381036040850152613843818a613645565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101561389557835183529284019291840191600101613879565b50909c9b505050505050505050505050565b600080604083850312156138ba57600080fd5b6138c38361371d565b91506138d16020840161374a565b90509250929050565b803560ff8116811461362557600080fd5b60008060008060008060c0878903121561390457600080fd5b61390d8761360e565b95506020870135945060408701359350613929606088016138da565b92506080870135915060a087013590509295509295509295565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561396e57600080fd5b8335925060208085013567ffffffffffffffff8082111561398e57600080fd5b818701915087601f8301126139a257600080fd5b8135818111156139b4576139b4613943565b8060051b604051601f19603f830116810181811085821117156139d9576139d9613943565b60405291825284820192508381018501918a8311156139f757600080fd5b938501935b82851015613a15578435845293850193928501926139fc565b979a979950505050604095909501359450505050565b600080600080600080600060e0888a031215613a4657600080fd5b613a4f8861360e565b9650613a5d6020890161360e565b95506040880135945060608801359350613a79608089016138da565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215613aa857600080fd5b613ab18361360e565b91506138d16020840161360e565b60008060408385031215613ad257600080fd5b6138c38361360e565b600181811c90821680613aef57607f821691505b602082108103613b0f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561091a5761091a613b15565b634e487b7160e01b600052601260045260246000fd5b600082613b6357613b63613b3e565b500490565b600060018201613b7a57613b7a613b15565b5060010190565b808202811582820484141761091a5761091a613b15565b8082018082111561091a5761091a613b15565b600082613bba57613bba613b3e565b500690565b600060208284031215613bd157600080fd5b5051919050565b63ffffffff8181168382160190808211156133a8576133a8613b15565b63ffffffff8281168282160390808211156133a8576133a8613b15565b634e487b7160e01b600052603260045260246000fd5b600081613c3757613c37613b15565b506000190190565b634e487b7160e01b600052603160045260246000fd5b6001600160d01b038281168282160390808211156133a8576133a8613b15565b6001600160d01b038181168382160190808211156133a8576133a8613b1556fea2646970667358221220cfe2b996568640f5c0f1e078025bbca4c6e78e708c0888819a6c6bb8bc1abe3d64736f6c63430008140033000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000000000000000000000000000000000000006770c9400000000000000000000000000000000000000000000000056bc75e2d631000000000000000000000000000000000000000000000000000000000000000093a80000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000021e19e0c9bab24000000000000000000000000000000000000000000000000000000000000000015180000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000152d02c7e14af680000000000000000000000000000000000000000000000000000000000000000000034f6e65000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034f4e4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000d3c21bcecceda10000000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000f0def4ea31206e16f8c4068d8151286c7c408ee20000000000000000000000000137be282dbc517183d5c78f98323ac412a4a08f0000000000000000000000002927b21118900c6122375f9de209344cbff03824000000000000000000000000ff938aa1e4b57680691af61a9e9a8631c80e0d27000000000000000000000000aa25a2c9cad9f66aede9920e629b679a4a3f32ab0000000000000000000000002fba151c3faf8f6e9496cd8967c0b372ccd5c11200000000000000000000000003590026cc8974aa833f3a01307c99e1a4fa1da5000000000000000000000000b4d82fd709a11c793cb8aee9a3b47b83efce92ec000000000000000000000000dadb28fb1ce2f960a7223ea76f06f0b49945142300000000000000000000000004c7baff653ae6297cd57abebaf1e46e5fbdb32b0000000000000000000000003b646ef054c3dfd0e306e9118efb204150d22de9000000000000000000000000ec77cb7840bac0f1fa67e486da8b497430744ef6000000000000000000000000db9c2e68b132affe6a3ab3f9f45e79adede22b740000000000000000000000008ea4a2236d9e9d7761ccca77739a114de9d5a09500000000000000000000000089c0c6ca333546cdcd20431b061b084413a371aa000000000000000000000000b369b114d424acef6060721c38dfdd767da4505b00000000000000000000000009e5daed6e4a6cd54fe2f64a5e8892da4efb1754