0x6101206040523480156200001257600080fd5b50604051620026473803806200264783398101604081905262000035916200043c565b6001600055806001600160a01b0381166200008b576040516374aa36d960e11b815260206004820152601060248201526f7365727669636520726567697374727960801b60448201526064015b60405180910390fd5b604080518082018252601181527020aaaa27a6a0aa24a7a72fa127aa2fab1960791b60208201529051630851f3bd60e01b81526001600160a01b03831691630851f3bd91620000de919060040162000463565b602060405180830381865afa158015620000fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012291906200043c565b6001600160a01b0316608081905262000165576040516374aa36d960e11b8152602060048201526003602482015262189bdd60ea1b604482015260640162000082565b604080518082018252601381527f4f7065726174696f6e4578656375746f725f350000000000000000000000000060208201529051630851f3bd60e01b81526001600160a01b03831691630851f3bd91620001c4919060040162000463565b602060405180830381865afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020891906200043c565b6001600160a01b031660e08190526200025a576040516374aa36d960e11b815260206004820152601260248201527137b832b930ba34b7b71032bc32b1baba37b960711b604482015260640162000082565b6040805180820182526004808252630ae8aa8960e31b60208301529151630851f3bd60e01b81526001600160a01b03841692630851f3bd92620002a09290910162000463565b602060405180830381865afa158015620002be573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e491906200043c565b6001600160a01b031660c08190526200032a576040516374aa36d960e11b815260040162000082906020808252600490820152630eecae8d60e31b604082015260600190565b503060a052604080518082018252600b81526a4d4f5250484f5f424c554560a81b60208201529051630851f3bd60e01b81526000916001600160a01b03841691630851f3bd916200037e9160040162000463565b602060405180830381865afa1580156200039c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c291906200043c565b90506001600160a01b0381166200040f57604080518082018252600b81526a4d4f5250484f5f424c554560a81b602082015290516374aa36d960e11b815262000082919060040162000463565b6001600160a01b03166101005250620004b4565b6001600160a01b03811681146200043957600080fd5b50565b6000602082840312156200044f57600080fd5b81516200045c8162000423565b9392505050565b60006020808352835180602085015260005b81811015620004935785810183015185820160400152820162000475565b506000604082860101526040601f19601f8301168501019250505092915050565b60805160a05160c05160e051610100516121096200053e6000396000818161022601528181610268015281816104170152818161064001528181610783015281816108dd0152818161096c015281816109f10152610a720152600081816101c6015261059b015260006101650152600061019f01526000818160fb015261037501526121096000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80636cd4f21e116100815780638a041b9c1161005b5780638a041b9c146101e85780639fce93b51461020e578063e8ce1bfa1461022157600080fd5b80636cd4f21e146101875780637104ddb21461019a578063829c7510146101c157600080fd5b806311449b61116100b257806311449b61146101355780631f6a1eb91461014b5780633fc8cef31461016057600080fd5b80630b23e6f6146100ce57806310814c37146100f6575b600080fd5b6100e16100dc3660046117f4565b610248565b60405190151581526020015b60405180910390f35b61011d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100ed565b61013d603281565b6040519081526020016100ed565b61015e610159366004611886565b610373565b005b61011d7f000000000000000000000000000000000000000000000000000000000000000081565b6100e16101953660046118ef565b610763565b61011d7f000000000000000000000000000000000000000000000000000000000000000081565b61011d7f000000000000000000000000000000000000000000000000000000000000000081565b6101fb6101f6366004611924565b6107f3565b60405161ffff90911681526020016100ed565b6100e161021c3660046118ef565b6108a1565b61011d7f000000000000000000000000000000000000000000000000000000000000000081565b6000808280602001905181019061025f91906119b7565b905060006102937f000000000000000000000000000000000000000000000000000000000000000083602001516004610b7f565b90506000806102b38460a001518560600151610c3a90919063ffffffff16565b6040805160018082528183019092529294509092506000919060208083019080368337019050509050608d816000815181106102f1576102f1611aa0565b61ffff90921660209283029190910182015285510151600090610315908390610c81565b604087015160a0880151919250858110918786109188119067ffffffffffffffff16603211158380156103455750845b801561034e5750815b80156103575750805b80156103605750825b9a50505050505050505050505b92915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146103dc576040517f8cf257e10000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b6000818060200190518101906103f291906119b7565b60208101518151516040516349e2903160e11b81529293506000926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926393c520629261045c926004019182526001600160a01b0316602082015260400190565b606060405180830381865afa158015610479573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049d9190611acd565b6040805160018082528183019092529192506000919060208083019080368337019050509050608d816000815181106104d8576104d8611aa0565b61ffff909216602092830291909101820152835101516104f9908290610cd2565b604080516020601f8801819004810282018101909252868152610559917f5d10041b0000000000000000000000000000000000000000000000000000000091908990899081908401838280828437600092019190915250610d1692505050565b8251516040517f1cff79cd0000000000000000000000000000000000000000000000000000000081526000916001600160a01b031690631cff79cd906105c7907f0000000000000000000000000000000000000000000000000000000000000000908b908b90600401611b5b565b6020604051808303816000875af11580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060a9190611b7e565b905061061e846000015160a0015182610db5565b60208401518451516040516349e2903160e11b81526000926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926393c52062926106879291906004019182526001600160a01b0316602082015260400190565b606060405180830381865afa1580156106a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c89190611acd565b905080602001516001600160801b031684602001516001600160801b0316146107595760405162461bcd60e51b815260206004820152602e60248201527f44656274206c6576656c732073686f756c6420626520756e6368616e6765642060448201527f706f737420657865637574696f6e00000000000000000000000000000000000060648201526084016103d3565b5050505050505050565b6000808280602001905181019061077a91906119b7565b905060006107b57f00000000000000000000000000000000000000000000000000000000000000008360200151846000015160000151610df1565b90506000806107d58460a001518560600151610c3a90919063ffffffff16565b915091508183101580156107e95750808311155b9695505050505050565b60008061080283850185611ba2565b6040517f0b23e6f60000000000000000000000000000000000000000000000000000000081529091503090630b23e6f6906108469060009088908890600401611c7e565b602060405180830381865afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190611c9a565b61089557600091505061036d565b51602001519392505050565b600080828060200190518101906108b891906119b7565b60208101518151516040516349e2903160e11b81529293506000926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926393c5206292610922926004019182526001600160a01b0316602082015260400190565b606060405180830381865afa15801561093f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109639190611acd565b905060006109977f000000000000000000000000000000000000000000000000000000000000000084602001516004610b7f565b905081604001516001600160801b0316600014806109c25750600282602001516001600160801b0316105b156109d257506000949350505050565b6020830151604051632c3c915760e01b81526000916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691632c3c915791610a289160040190815260200190565b60a060405180830381865afa158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190611cb7565b90506000610aa17f00000000000000000000000000000000000000000000000000000000000000008386886000015160000151610ee4565b90506000826040015190506000816001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b109190611b7e565b90506000876080015182101590506000610b3b8960a001518a60600151610c3a90919063ffffffff16565b60408b01519092508087118015925090891190898410908390610b5b5750815b8015610b645750805b8015610b6d5750845b9e9d5050505050505050505050505050565b604051632c3c915760e01b81526004810183905260009081906001600160a01b03861690632c3c91579060240160a060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190611cb7565b905060126000610c0060ff861683611d5e565b610c0b90600a611e55565b90506000818460800151610c1f9190611e61565b90506001811015610c2f57600080fd5b979650505050505050565b60008080610c5e612710610c588767ffffffffffffffff8816610efd565b90610f10565b9050610c6a8582610f1c565b610c748683610f28565b92509250505b9250929050565b6000805b8351811015610cc8578261ffff16848281518110610ca557610ca5611aa0565b602002602001015161ffff1603610cc057600191505061036d565b600101610c85565b5060009392505050565b610cdc8282610c81565b610d12576040517ff2b2d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b600081806020019051810190610d2c9190611e83565b90507fffffffff0000000000000000000000000000000000000000000000000000000080821690841614610db0576040517f12ba286f0000000000000000000000000000000000000000000000000000000081527fffffffff00000000000000000000000000000000000000000000000000000000821660048201526024016103d3565b505050565b808214610d12576040517f1724c6d1000000000000000000000000000000000000000000000000000000008152600481018390526024016103d3565b604051632c3c915760e01b81526004810183905260009081906001600160a01b03861690632c3c91579060240160a060405180830381865afa158015610e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5f9190611cb7565b6040516349e2903160e11b8152600481018690526001600160a01b0385811660248301529192506000918716906393c5206290604401606060405180830381865afa158015610eb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed69190611acd565b90506107e986838387610f34565b6000610ef285858585610f34565b90505b949350505050565b6000610f098284611ec5565b9392505050565b6000610f098284611e61565b6000610f098284611d5e565b6000610f098284611edc565b600080846040015190506000816001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa29190611b7e565b905084604001516001600160801b031660001480610fbe575080155b80610fd4575060208501516001600160801b0316155b15610fe457600092505050610ef5565b60006ec097ce7bc90715b34b9f10000000008287604001516001600160801b031661100f9190611ec5565b6110199190611e61565b90508060000361102f5760009350505050610ef5565b600061103c89898861106c565b90508161104b6004600a611eef565b6110559083611ec5565b61105f9190611e61565b9998505050505050505050565b60008061107a8460a0902090565b905060006110926001600160a01b03871683866110c1565b90506000806110a18888611193565b90945092506110b5915084905083836114b1565b98975050505050505050565b6000806110d66110d185856114d6565b61154b565b6040517f7784c6850000000000000000000000000000000000000000000000000000000081529091506001600160a01b03861690637784c6859061111e908490600401611efe565b600060405180830381865afa15801561113b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111639190810190611f42565b60008151811061117557611175611aa0565b602002602001015160001c6001600160801b03169150509392505050565b60008060008060006111a68660a0902090565b6040517f5c60e39a000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b03891690635c60e39a9060240160c060405180830381865afa15801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e9190611fdc565b9050600081608001516001600160801b03164261124b9190611d5e565b90508015801590611268575060408201516001600160801b031615155b1561147d5760608881018051604080517f8c00bf6b0000000000000000000000000000000000000000000000000000000081528c516001600160a01b0390811660048301526020808f015182166024840152838f0151821660448401529451811660648301526080808f0151608484015288516001600160801b0390811660a485015295890151861660c484015292880151851660e483015294870151841661010482015290860151831661012482015260a08601519092166101448301526000921690638c00bf6b9061016401602060405180830381865afa158015611353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113779190611b7e565b9050600061139c6113888385611596565b60408601516001600160801b0316906115f7565b90506113a78161160c565b846040018181516113b8919061205d565b6001600160801b03169052506113cd8161160c565b845185906113dc90839061205d565b6001600160801b0390811690915260a08601511615905061147a5760006114198560a001516001600160801b0316836115f790919063ffffffff16565b9050600061144f8287600001516001600160801b03166114399190611d5e565b60208801518491906001600160801b0316611672565b905061145a8161160c565b8660200181815161146b919061205d565b6001600160801b031690525050505b50505b508051602082015160408301516060909301516001600160801b039283169b9183169a509282169850911695509350505050565b6000610ef56114c1600185611edc565b6114ce620f424085611edc565b869190611697565b60006001828460026040516020016114f8929190918252602082015260400190565b60408051601f1981840301815282825280516020918201206001600160a01b03909416908301528101919091526060016040516020818303038152906040528051906020012060001c610f099190611edc565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061158557611585611aa0565b602090810291909101015292915050565b6000806115a38385611ec5565b905060006115c482806115bf670de0b6b3a76400006002611ec5565b6116c3565b905060006115e082846115bf670de0b6b3a76400006003611ec5565b9050806115ed8385611edc565b6107e99190611edc565b6000610f098383670de0b6b3a76400006116c3565b60408051808201909152601481527f6d61782075696e7431323820657863656564656400000000000000000000000060208201526000906001600160801b0383111561166b5760405162461bcd60e51b81526004016103d39190612084565b5090919050565b6000610ef5611684620f424084611edc565b61168f600186611edc565b8691906116c3565b6000816116a5600182611d5e565b6116af8587611ec5565b6116b99190611edc565b610ef59190611e61565b6000816116b98486611ec5565b80151581146116de57600080fd5b50565b80356116ec816116d0565b919050565b634e487b7160e01b600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561172a5761172a6116f1565b60405290565b60405160c0810167ffffffffffffffff8111828210171561172a5761172a6116f1565b604051601f8201601f1916810167ffffffffffffffff8111828210171561177c5761177c6116f1565b604052919050565b600082601f83011261179557600080fd5b813567ffffffffffffffff8111156117af576117af6116f1565b6117c2601f8201601f1916602001611753565b8181528460208386010111156117d757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561180757600080fd5b8235611812816116d0565b9150602083013567ffffffffffffffff81111561182e57600080fd5b61183a85828601611784565b9150509250929050565b60008083601f84011261185657600080fd5b50813567ffffffffffffffff81111561186e57600080fd5b602083019150836020828501011115610c7a57600080fd5b60008060006040848603121561189b57600080fd5b833567ffffffffffffffff808211156118b357600080fd5b6118bf87838801611844565b909550935060208601359150808211156118d857600080fd5b506118e586828701611784565b9150509250925092565b60006020828403121561190157600080fd5b813567ffffffffffffffff81111561191857600080fd5b610ef584828501611784565b6000806020838503121561193757600080fd5b823567ffffffffffffffff81111561194e57600080fd5b61195a85828601611844565b90969095509350505050565b6001600160a01b03811681146116de57600080fd5b61ffff811681146116de57600080fd5b67ffffffffffffffff811681146116de57600080fd5b80516116ec8161198b565b80516116ec816116d0565b60008183036101808112156119cb57600080fd5b6119d3611707565b60c08212156119e157600080fd5b6119e9611730565b915083516119f681611966565b82526020840151611a068161197b565b6020830152604084810151908301526060840151611a2381611966565b60608301526080840151611a3681611966565b8060808401525060a084015160a083015281815260c0840151602082015260e0840151604082015261010084015160608201526101208401516080820152611a8161014085016119a1565b60a0820152611a9361016085016119ac565b60c0820152949350505050565b634e487b7160e01b600052603260045260246000fd5b80516001600160801b03811681146116ec57600080fd5b600060608284031215611adf57600080fd5b6040516060810181811067ffffffffffffffff82111715611b0257611b026116f1565b60405282518152611b1560208401611ab6565b6020820152611b2660408401611ab6565b60408201529392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0384168152604060208201526000610ef2604083018486611b32565b600060208284031215611b9057600080fd5b5051919050565b80356116ec8161198b565b6000818303610180811215611bb657600080fd5b611bbe611707565b60c0821215611bcc57600080fd5b611bd4611730565b91508335611be181611966565b82526020840135611bf18161197b565b6020830152604084810135908301526060840135611c0e81611966565b60608301526080840135611c2181611966565b8060808401525060a084013560a083015281815260c0840135602082015260e0840135604082015261010084013560608201526101208401356080820152611c6c6101408501611b97565b60a0820152611a9361016085016116e1565b8315158152604060208201526000610ef2604083018486611b32565b600060208284031215611cac57600080fd5b8151610f09816116d0565b600060a08284031215611cc957600080fd5b60405160a0810181811067ffffffffffffffff82111715611cec57611cec6116f1565b6040528251611cfa81611966565b81526020830151611d0a81611966565b60208201526040830151611d1d81611966565b60408201526060830151611d3081611966565b60608201526080928301519281019290925250919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561036d5761036d611d48565b600181815b80851115611dac578160001904821115611d9257611d92611d48565b80851615611d9f57918102915b93841c9390800290611d76565b509250929050565b600082611dc35750600161036d565b81611dd05750600061036d565b8160018114611de65760028114611df057611e0c565b600191505061036d565b60ff841115611e0157611e01611d48565b50506001821b61036d565b5060208310610133831016604e8410600b8410161715611e2f575081810a61036d565b611e398383611d71565b8060001904821115611e4d57611e4d611d48565b029392505050565b6000610f098383611db4565b600082611e7e57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611e9557600080fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610f0957600080fd5b808202811582820484141761036d5761036d611d48565b8082018082111561036d5761036d611d48565b6000610f0960ff841683611db4565b6020808252825182820181905260009190848201906040850190845b81811015611f3657835183529284019291840191600101611f1a565b50909695505050505050565b60006020808385031215611f5557600080fd5b825167ffffffffffffffff80821115611f6d57600080fd5b818501915085601f830112611f8157600080fd5b815181811115611f9357611f936116f1565b8060051b9150611fa4848301611753565b8181529183018401918481019088841115611fbe57600080fd5b938501935b838510156110b557845182529385019390850190611fc3565b600060c08284031215611fee57600080fd5b611ff6611730565b611fff83611ab6565b815261200d60208401611ab6565b602082015261201e60408401611ab6565b604082015261202f60608401611ab6565b606082015261204060808401611ab6565b608082015261205160a08401611ab6565b60a08201529392505050565b6001600160801b0381811683821601908082111561207d5761207d611d48565b5092915050565b60006020808352835180602085015260005b818110156120b257858101830151858201604001528201612096565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220d4c908a6c94b031f9dec48a1fb4bcbfc67e3a63f1436116a48c92368203f812064736f6c634300081600330000000000000000000000005e81a7515f956ab642eb698821a449fe8fe7498e