0x6101a0604052306080523480156200001657600080fd5b50604051620050a5380380620050a583398101604081905262000039916200017e565b6001600160a01b0380871660a05285811660c081905285821660e052848216610100528382166101605290821661018052604080516323228ecb60e01b815290516323228ecb916004808201926020929091908290030181865afa158015620000a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cc919062000212565b6001600160a01b0316610120816001600160a01b031681525050826001600160a01b031663e1758bd86040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014b919062000212565b6001600160a01b0316610140525062000239945050505050565b6001600160a01b03811681146200017b57600080fd5b50565b60008060008060008060c087890312156200019857600080fd5b8651620001a58162000165565b6020880151909650620001b88162000165565b6040880151909550620001cb8162000165565b6060880151909450620001de8162000165565b6080880151909350620001f18162000165565b60a0880151909250620002048162000165565b809150509295509295509295565b6000602082840312156200022557600080fd5b8151620002328162000165565b9392505050565b60805160a05160c05160e0516101005161012051610140516101605161018051614c7362000432600039600081816106dd0152818161096f0152818161099e0152818161173c0152818161176b0152818161189301528181612a7a0152612ab1015260008181610412015261154b0152600081816103130152818161035501528181610805015281816109c601528181610a9001528181610d870152818161122c015281816112a401528181611e2d015281816124b4015261282f0152600081816104870152818161183e015281816118e70152818161196f01528181611f20015281816120dd0152818161216a015261259b0152600081816108df0152818161091d01528181611035015281816113bc01528181611414015281816119ae01528181611de401528181611e5b01528181612288015281816123170152612b0e0152600081816108ab01528181610add01528181610b880152818161132b01528181611b6d01528181611f4a0152818161205a015281816121a9015281816123680152612f930152600081816103a001528181610cc201528181610e0701528181611a7401528181611be8015281816123e3015281816126320152612db601526000818161077d01526128ae015260008181610f0101528181610f41015281816110af015281816110ef01526111820152614c736000f3fe6080604052600436106103035760003560e01c80637bb854f911610190578063db6b5246116100dc578063e2b0e1cc11610095578063eea335ab1161006f578063eea335ab14610886578063f9b6117f14610899578063fbfa77cf146108cd578063fdeb98db1461090157600080fd5b8063e2b0e1cc1461084d578063e8eb681a14610860578063ec7a4f431461087357600080fd5b8063db6b5246146107c5578063de44019e146107cd578063e0dcf65c146107e0578063e1758bd8146107f3578063e20294f314610827578063e24473641461083a57600080fd5b8063ac9650d811610149578063c4d252f511610123578063c4d252f514610758578063d33219b41461076b578063d8551f541461079f578063d99fa809146107b257600080fd5b8063ac9650d814610712578063ace5f8a214610732578063b8ca8dd81461074557600080fd5b80637bb854f91461066f57806384959e1d14610682578063867083fc14610695578063a4261f77146106a8578063a5efcaf3146106cb578063a878d0ba146106ff57600080fd5b8063435f0d411161024f5780636588d3c811610208578063723ab25c116101e2578063723ab25c146106085780637361b5911461062857806377df45d51461063b5780637b788c2d1461065c57600080fd5b80636588d3c8146105c257806369328dec146105d557806370b76bb0146105e857600080fd5b8063435f0d411461054c57806347e7ef24146105615780634f1ef2861461057457806352d1902d146105875780635cbd14051461059c5780635e4eb088146105af57600080fd5b806323228ecb116102bc5780632cd972bc116102965780632cd972bc146104f35780633659cfe6146105065780633825d5b2146105265780634353b3761461053957600080fd5b806323228ecb1461047557806326adbeb7146104a9578063282bf1d6146104d157600080fd5b80630a2959751461038e5780630dc5637c146103df57806312261ee71461040057806319226543146104345780631bf24957146104475780631fe0b3cf1461046257600080fd5b3661038957336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610387576040516347810d0960e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b005b600080fd5b34801561039a57600080fd5b506103c27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6103f26103ed36600461379e565b610914565b6040519081526020016103d6565b34801561040c57600080fd5b506103c27f000000000000000000000000000000000000000000000000000000000000000081565b6103f26104423660046137ef565b610962565b34801561045357600080fd5b506103f26001600160ff1b0381565b6103f2610470366004613852565b610abf565b34801561048157600080fd5b506103c27f000000000000000000000000000000000000000000000000000000000000000081565b6104bc6104b7366004613a1a565b610ad6565b604080519283526020830191909152016103d6565b6104e46104df366004613a71565b610c4c565b6040516103d693929190613ba9565b6103f2610501366004613c9d565b610e02565b34801561051257600080fd5b50610387610521366004613cba565b610ef7565b6103f2610534366004613cd7565b610fd6565b6103f2610547366004613d3f565b610ff8565b34801561055857600080fd5b506103f2600081565b6103f261056f366004613da0565b611006565b610387610582366004613dcc565b6110a5565b34801561059357600080fd5b506103f2611175565b6103f26105aa366004613e73565b611228565b6104e46105bd366004613ec2565b6112ca565b6103f26105d0366004613f22565b611308565b6103f26105e3366004613f46565b6113b0565b3480156105f457600080fd5b50610387610603366004613f7d565b6114fe565b34801561061457600080fd5b50610387610623366004613fc4565b61164a565b6104e4610636366004614003565b611694565b61064e61064936600461405a565b6116bc565b6040516103d69291906140b1565b6103f261066a3660046140c6565b61172f565b6104bc61067d36600461412f565b61182e565b6103f2610690366004613cd7565b611885565b61064e6106a33660046141be565b6118c4565b6106bb6106b63660046141f6565b611afd565b6040516103d6949392919061425e565b3480156106d757600080fd5b506103c27f000000000000000000000000000000000000000000000000000000000000000081565b6103f261070d366004614287565b611b4a565b6107256107203660046142b7565b611cce565b6040516103d6919061437b565b6104e4610740366004613ec2565b611dc2565b6103f2610753366004614287565b611dd8565b6103876107663660046143dd565b611f02565b34801561077757600080fd5b506103c27f000000000000000000000000000000000000000000000000000000000000000081565b6103f26107ad366004613c9d565b6120c1565b61064e6107c03660046143f6565b612223565b6103f2612268565b6103f26107db36600461379e565b6122fc565b6103f26107ee366004614287565b612345565b3480156107ff57600080fd5b506103c27f000000000000000000000000000000000000000000000000000000000000000081565b6106bb6108353660046141f6565b61251b565b6106bb610848366004614413565b612532565b6104e461085b366004614003565b612573565b6103f261086e366004613f22565b61258c565b610387610881366004614499565b6125cc565b6104e46108943660046144bb565b6125de565b3480156108a557600080fd5b506103c27f000000000000000000000000000000000000000000000000000000000000000081565b3480156108d957600080fd5b506103c27f000000000000000000000000000000000000000000000000000000000000000081565b6103f261090f366004614523565b612610565b600061094184847f000000000000000000000000000000000000000000000000000000000000000061164a565b6109588483156109515783611006565b8435611006565b90505b9392505050565b60006109938484604001357f00000000000000000000000000000000000000000000000000000000000000006113b0565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634fd4b191857f00000000000000000000000000000000000000000000000000000000000000006109f56040880160208901613cba565b60408801356060890135610a0c60208b018b613cba565b610a1960808c018c614551565b306040518a63ffffffff1660e01b8152600401610a3e999897969594939291906145c0565b6020604051808303816000875af1158015610a5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a819190614622565b9050610ab76001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168383612716565b509392505050565b6000610acd838360006122fc565b90505b92915050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639c3f1e90886040518263ffffffff1660e01b8152600401610b2991815260200190565b61012060405180830381865afa158015610b47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6b9190614651565b602001516040516309c3f1e960e41b8152600481018890529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690639c3f1e909060240161012060405180830381865afa158015610bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfc9190614651565b602001518114610c29576040516339fb2c6f60e21b8152600481018890526024810187905260440161037e565b610c3387876125cc565b610c3e81868661182e565b909890975095505050505050565b6000610c566136f9565b60008087608001351315610c7d57604051630363d92560e11b815260040160405180910390fd5b610c95610c8f368990038901896146dd565b876118c4565b6060810151919450925060001315610df857610cb482606001516127bc565b905060006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663c4dac5d5856040518263ffffffff1660e01b8152600401610d0491906146f9565b60a060405180830381865afa158015610d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d459190614717565b90506000600184604001516002811115610d6157610d61613ae5565b14610d70578160400151610d73565b81515b90508515610de857806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614610dd85760405163604e817760e11b81526001600160a01b038216600482015260240161037e565b610de28388611dd8565b50610df5565b610df38184896113b0565b505b50505b9450945094915050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4dac5d5610e3f856000015190565b6040518263ffffffff1660e01b8152600401610e5b91906146f9565b60a060405180830381865afa158015610e78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9c9190614717565b9050600060018460a001516002811115610eb857610eb8613ae5565b14610ec7578160400151610eca565b81515b9050610ee581610ee08660800151600f0b6127d3565b612825565b50610eef846120c1565b949350505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f3f5760405162461bcd60e51b815260040161037e9061477f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f88600080516020614c2c833981519152546001600160a01b031690565b6001600160a01b031614610fae5760405162461bcd60e51b815260040161037e906147cb565b610fb7816128a3565b60408051600080825260208201909252610fd3918391906128ee565b50565b6000610fe385833061164a565b610fef33868686612a59565b95945050505050565b600061095833858585612a59565b604051638340f54960e01b81526001600160a01b038381166004830152336024830152604482018390526000917f000000000000000000000000000000000000000000000000000000000000000090911690638340f549906064015b6020604051808303816000875af1158015611081573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610acd9190614622565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110ed5760405162461bcd60e51b815260040161037e9061477f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611136600080516020614c2c833981519152546001600160a01b031690565b6001600160a01b03161461115c5760405162461bcd60e51b815260040161037e906147cb565b611165826128a3565b611171828260016128ee565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112155760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161037e565b50600080516020614c2c83398151915290565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561128557600080fd5b505af1158015611299573d6000803e3d6000fd5b5050505050610acd307f00000000000000000000000000000000000000000000000000000000000000008585612a59565b60006112d46136f9565b60006112ee6112e8368890038801886146dd565b866118c4565b90935091506112fd838561258c565b905093509350939050565b6040516309c3f1e960e41b81526004810183905260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639c3f1e909060240161012060405180830381865afa158015611373573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113979190614651565b6020015190506113a684611f02565b610eef818461258c565b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630e917f76853386156113ef578661147f565b604051633de222bb60e21b81526001600160a01b0389811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec90604401602060405180830381865afa15801561145b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061147f9190614622565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529183166024830152604482015290851660648201526084016020604051808303816000875af11580156114da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109589190614622565b6040805160a080820183526001600160a01b0387811660608085018281528935608080880182905291875287513360208083018290529982019590955292830152868a01359082015290947f0000000000000000000000000000000000000000000000000000000000000000909216936330f28b7a939092830191016040516020818303038152906040528051906020012060001c815260200187602001358152506040518060400160405280866001600160a01b031681526020018781525084886040013589606001356040516020016115e3929190918252602082015260400190565b6040516020818303038152906040526040518563ffffffff1660e01b81526004016116119493929190614817565b600060405180830381600087803b15801561162b57600080fd5b505af115801561163f573d6000803e3d6000fd5b505050505050505050565b61168f338284356020860135611668606088013560ff1c601b6148a6565b6001600160a01b0389169493929190604089013560608a01356001600160ff1b0316612ba0565b505050565b600061169e6136f9565b60006116ad8686866001610c4c565b92509250925093509350939050565b60006116c66136f9565b6116e260808601356116dd368690038601866148bf565b612d76565b61170a6116fc6116f7368890038801886146dd565b612db1565b846103ed88608001356127d3565b5061172361171d368790038701876146dd565b856118c4565b91509150935093915050565b60006117608584604001357f00000000000000000000000000000000000000000000000000000000000000006113b0565b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634fd4b19186866117a26040880160208901613cba565b604088013560608901356117b960208b018b613cba565b6117c660808c018c614551565b8b6040518a63ffffffff1660e01b81526004016117eb999897969594939291906145c0565b6020604051808303816000875af115801561180a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fef9190614622565b6000806118646001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001686612e7b565b5061186f8585612f8f565b915061187b8584612f8f565b9050935093915050565b60006118b7858385604001357f00000000000000000000000000000000000000000000000000000000000000006114fe565b610fef6000868686612a59565b60006118ce6136f9565b8351604051630e29a66960e21b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906338a699a490602401602060405180830381865afa158015611936573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195a9190614905565b15611997578351611995906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690612e7b565b505b6001600160ff1b03846080015103611a5d57611a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f7888aec6119e487612db1565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152336024820152604401602060405180830381865afa158015611a2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a529190614622565b61307e565b60808501525b6040516332688cb160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906332688cb190611aad9087908790339060040161492d565b610160604051808303816000875af1158015611acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af19190614a2f565b915091505b9250929050565b6000611b076136f9565b600080611b22611b1c368a90038a018a6146dd565b886118c4565b9094509250611b31848761258c565b9150611b3d848661258c565b9050945094509450949050565b6040516309c3f1e960e41b81526004810183905260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639c3f1e909060240161012060405180830381865afa158015611bb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd99190614651565b9050611be484611f02565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4dac5d5611c20846020015190565b6040518263ffffffff1660e01b8152600401611c3c91906146f9565b60a060405180830381865afa158015611c59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c7d9190614717565b9050600060018360c001516002811115611c9957611c99613ae5565b14611ca8578160400151611cab565b81515b9050611cc481611cbe8560a001516127d3565b876113b0565b9695505050505050565b6060816001600160401b03811115611ce857611ce8613888565b604051908082528060200260200182016040528015611d1b57816020015b6060815260200190600190039081611d065790505b50905060005b82811015611dbb57611d8b30858584818110611d3f57611d3f614b06565b9050602002810190611d519190614551565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506130e892505050565b828281518110611d9d57611d9d614b06565b60200260200101819052508080611db390614b1c565b915050611d21565b5092915050565b6000611dcc6136f9565b60006112ee8686612223565b60006001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663832e9492338515611e165785611ec6565b604051633de222bb60e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301523360248301527f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec90604401602060405180830381865afa158015611ea2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ec69190614622565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015260248101919091529085166044820152606401611062565b6040516309c3f1e960e41b8152600481018290526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163e985e9c5917f00000000000000000000000000000000000000000000000000000000000000001690639c3f1e909060240161012060405180830381865afa158015611f92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fb69190614651565b5160405160e083901b6001600160e01b03191681526001600160a01b039091166004820152336024820152604401602060405180830381865afa158015612001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120259190614905565b6120445760405163570870ef60e11b815233600482015260240161037e565b60405163c4d252f560e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063c4d252f590602401600060405180830381600087803b1580156120a657600080fd5b505af11580156120ba573d6000803e3d6000fd5b5050505050565b8051604051630e29a66960e21b81526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916338a699a4916121149160040190815260200190565b602060405180830381865afa158015612131573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121559190614905565b15612192578151612190906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690612e7b565b505b604051635ff1c14360e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bfe38286906121e09085903390600401614b35565b6020604051808303816000875af11580156121ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad09190614622565b600061222d6136f9565b61224f6122426116f7368790038701876146dd565b610ee086608001356127d3565b50611af1612262368690038601866146dd565b846118c4565b6040516333bb7f9160e01b81523360048201526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906333bb7f9190349060240160206040518083038185885af11580156122d2573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122f79190614622565b905090565b6000811561230a578161230d565b82355b915061233b8484847f00000000000000000000000000000000000000000000000000000000000000006114fe565b6109588483611006565b6040516309c3f1e960e41b81526004810183905260009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639c3f1e909060240161012060405180830381865afa1580156123b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d49190614651565b90506123df84611f02565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4dac5d561241b846020015190565b6040518263ffffffff1660e01b815260040161243791906146f9565b60a060405180830381865afa158015612454573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124789190614717565b9050600060018360c00151600281111561249457612494613ae5565b146124a35781604001516124a6565b81515b9050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316146125055760405163604e817760e11b81526001600160a01b038216600482015260240161037e565b611cc46125158460a001516127d3565b86611dd8565b60006125256136f9565b600080611b228888612223565b600061253c6136f9565b60008061254a8989876116bc565b9094509250612559848861258c565b9150612565848761258c565b905095509550955095915050565b600061257d6136f9565b60006116ad8686866000610c4c565b60006125c16001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001684612e7b565b50610acd8383612f8f565b6125d582611f02565b61117181611f02565b60006125e86136f9565b60006125f58787866116bc565b9093509150612604838661258c565b90509450945094915050565b600061262e8360800151600f0b838036038101906116dd91906148bf565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4dac5d561266a866000015190565b6040518263ffffffff1660e01b815260040161268691906146f9565b60a060405180830381865afa1580156126a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126c79190614717565b9050600060018560a0015160028111156126e3576126e3613ae5565b146126f25781604001516126f5565b81515b905061270c81856103ed8860800151600f0b6127d3565b50610fef856120c1565b60006001600160a01b03831661273f57604051637d0f1ea160e01b815260040160405180910390fd5b8160000361274e57508061095b565b604051632e1a7d4d60e01b8152600481018390526001600160a01b03851690632e1a7d4d90602401600060405180830381600087803b15801561279057600080fd5b505af11580156127a4573d6000803e3d6000fd5b50611dbb925050506001600160a01b0384168361310d565b6000808212156127cf5781600003610ad0565b5090565b6000808212156127cf5760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f736974697665604482015260640161037e565b60003415612899577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036128755761286e612268565b9050610ad0565b60405163604e817760e11b81526001600160a01b038416600482015260240161037e565b61286e8383611006565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610fd35760405163570870ef60e11b815233600482015260240161037e565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156129215761168f83613226565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561297b575060408051601f3d908101601f1916820190925261297891810190614622565b60015b6129de5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161037e565b600080516020614c2c8339815191528114612a4d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161037e565b5061168f8383836132c2565b60006001600160a01b03851615612aa557612aa36001600160a01b038516867f000000000000000000000000000000000000000000000000000000000000000060408601356132ed565b505b60006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634fd4b1918686612ae86040880160208901613cba565b60408801356060890135612aff60208b018b613cba565b612b0c60808c018c614551565b7f00000000000000000000000000000000000000000000000000000000000000006040518a63ffffffff1660e01b8152600401612b51999897969594939291906145c0565b6020604051808303816000875af1158015612b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b949190614622565b9050611cc48482611006565b604051623f675f60e91b81526001600160a01b038881166004830152600091908a1690637ecebe0090602401602060405180830381865afa158015612be9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0d9190614622565b60405163d505accf60e01b81526001600160a01b038a811660048301528981166024830152604482018990526064820188905260ff8716608483015260a4820186905260c48201859052919250908a169063d505accf9060e401600060405180830381600087803b158015612c8157600080fd5b505af1158015612c95573d6000803e3d6000fd5b5050604051623f675f60e91b81526001600160a01b038b81166004830152600093508c169150637ecebe0090602401602060405180830381865afa158015612ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d059190614622565b9050612d12826001614bcc565b8114612d6a5760405162461bcd60e51b815260206004820152602160248201527f5361666545524332303a207065726d697420646964206e6f74207375636365656044820152601960fa1b606482015260840161037e565b50505050505050505050565b600082138015612d865750805182135b1561117157805160405163c27592a560e01b815261037e918491600401918252602082015260400190565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c4dac5d5612dee856000015190565b6040518263ffffffff1660e01b8152600401612e0a91906146f9565b60a060405180830381865afa158015612e27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e4b9190614717565b9050600183606001516002811115612e6557612e65613ae5565b14612e7457806040015161095b565b5192915050565b60405163100ca19960e21b8152600481018290526000906001600160a01b03841690634032866490602401602060405180830381865afa158015612ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ee79190614bdf565b90506001600160a01b0381163314801590612f6f575060405163e985e9c560e01b81526001600160a01b03828116600483015233602483015284169063e985e9c590604401602060405180830381865afa158015612f49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f6d9190614905565b155b15610ad05760405163570870ef60e11b815233600482015260240161037e565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bfe382866040518061010001604052808681526020016f7fffffffffffffffffffffffffffffff19600f0b815260200185600001516001600160801b0316815260200185602001516001600160801b031681526020016000600f0b81526020018560400151600281111561303257613032613ae5565b8152602001856060015163ffffffff1681526020018560800151600281111561305d5761305d613ae5565b815250336040518363ffffffff1660e01b8152600401611062929190614b35565b60006001600160ff1b038211156127cf5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161037e565b6060610acd8383604051806060016040528060278152602001614c4c60279139613373565b8047101561315d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161037e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146131aa576040519150601f19603f3d011682016040523d82523d6000602084013e6131af565b606091505b505090508061168f5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161037e565b6001600160a01b0381163b6132935760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161037e565b600080516020614c2c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6132cb836133e1565b6000825111806132d85750805b1561168f576132e783836130e8565b50505050565b60006001600160a01b0384166133165760405163a26bef6960e01b815260040160405180910390fd5b6001600160a01b03831661333d57604051637d0f1ea160e01b815260040160405180910390fd5b826001600160a01b0316846001600160a01b0316148061335b575081155b15613367575080610eef565b610fef85858585613421565b6060600080856001600160a01b0316856040516133909190614bfc565b600060405180830381855af49150503d80600081146133cb576040519150601f19603f3d011682016040523d82523d6000602084013e6133d0565b606091505b5091509150611cc486838387613461565b6133ea81613226565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60006001600160a01b038416301461344d576134486001600160a01b0386168585856134da565b610ab7565b610ab76001600160a01b0386168484613545565b606083156134d05782516000036134c9576001600160a01b0385163b6134c95760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161037e565b5081610eef565b610eef8383613575565b6040516001600160a01b03808516602483015283166044820152606481018290526132e79085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261359f565b6040516001600160a01b03831660248201526044810182905261168f90849063a9059cbb60e01b9060640161350e565b8151156135855781518083602001fd5b8060405162461bcd60e51b815260040161037e9190614c18565b60006135f4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136749092919063ffffffff16565b90508051600014806136155750808060200190518101906136159190614905565b61168f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161037e565b6060610958848460008585600080866001600160a01b0316858760405161369b9190614bfc565b60006040518083038185875af1925050503d80600081146136d8576040519150601f19603f3d011682016040523d82523d6000602084013e6136dd565b606091505b50915091506136ee87838387613461565b979650505050505050565b6040518060e0016040528060008152602001613737604080516080810190915280600081526020016000815260200160008152602001600081525090565b81526020016000815260200160008152602001600081526020016000600281111561376457613764613ae5565b8152602001600081525090565b6001600160a01b0381168114610fd357600080fd5b60006080828403121561379857600080fd5b50919050565b600080600060c084860312156137b357600080fd5b83356137be81613771565b92506137cd8560208601613786565b915060a084013590509250925092565b600060a0828403121561379857600080fd5b60008060006060848603121561380457600080fd5b833561380f81613771565b925060208401356001600160401b0381111561382a57600080fd5b613836868287016137dd565b925050604084013561384781613771565b809150509250925092565b60008060a0838503121561386557600080fd5b823561387081613771565b915061387f8460208501613786565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156138c0576138c0613888565b60405290565b60405161012081016001600160401b03811182821017156138c0576138c0613888565b604051608081016001600160401b03811182821017156138c0576138c0613888565b60405160e081016001600160401b03811182821017156138c0576138c0613888565b604051601f8201601f191681016001600160401b038111828210171561395557613955613888565b604052919050565b80356001600160801b038116811461397457600080fd5b919050565b60038110610fd357600080fd5b803561397481613979565b803563ffffffff8116811461397457600080fd5b600060a082840312156139b757600080fd5b6139bf61389e565b90506139ca8261395d565b81526139d86020830161395d565b602082015260408201356139eb81613979565b60408201526139fc60608301613991565b60608201526080820135613a0f81613979565b608082015292915050565b6000806000806101808587031215613a3157600080fd5b8435935060208501359250613a4986604087016139a5565b9150613a588660e087016139a5565b905092959194509250565b8015158114610fd357600080fd5b6000806000806101008587031215613a8857600080fd5b613a9286866137dd565b935060a08501356001600160401b03811115613aad57600080fd5b613ab9878288016137dd565b93505060c0850135613aca81613771565b915060e0850135613ada81613a63565b939692955090935050565b634e487b7160e01b600052602160045260246000fd5b60038110610fd357634e487b7160e01b600052602160045260246000fd5b613b2281613afb565b9052565b8051825260208101518051613b3a81613afb565b80602085015250602081015160408401526040810151606084015260608101516080840152506040810151613b7260a0840182613b19565b50606081015160c0830152608081015160e083015260a0810151613b9a610100840182613b19565b5060c001516101209190910152565b8381526101808101613bbe6020830185613b26565b82610160830152949350505050565b8035600f81900b811461397457600080fd5b6000610100808385031215613bf357600080fd5b604051908101906001600160401b0382118183101715613c1557613c15613888565b8160405280925083358152613c2c60208501613bcd565b6020820152613c3d6040850161395d565b604082015260608401356060820152613c5860808501613bcd565b608082015260a08401359150613c6d82613979565b8160a0820152613c7f60c08501613991565b60c0820152613c9060e08501613986565b60e0820152505092915050565b60006101008284031215613cb057600080fd5b610acd8383613bdf565b600060208284031215613ccc57600080fd5b813561095b81613771565b60008060008060e08587031215613ced57600080fd5b8435613cf881613771565b93506020850135613d0881613771565b925060408501356001600160401b03811115613d2357600080fd5b613d2f878288016137dd565b925050613a588660608701613786565b600080600060608486031215613d5457600080fd5b8335613d5f81613771565b92506020840135613d6f81613771565b915060408401356001600160401b03811115613d8a57600080fd5b613d96868287016137dd565b9150509250925092565b60008060408385031215613db357600080fd5b8235613dbe81613771565b946020939093013593505050565b60008060408385031215613ddf57600080fd5b8235613dea81613771565b91506020838101356001600160401b0380821115613e0757600080fd5b818601915086601f830112613e1b57600080fd5b813581811115613e2d57613e2d613888565b613e3f601f8201601f1916850161392d565b91508082528784828501011115613e5557600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060408385031215613e8657600080fd5b8235613e9181613771565b915060208301356001600160401b03811115613eac57600080fd5b613eb8858286016137dd565b9150509250929050565b60008060006101608486031215613ed857600080fd5b613ee285856137dd565b925060a08401356001600160401b03811115613efd57600080fd5b613f09868287016137dd565b925050613f198560c086016139a5565b90509250925092565b60008060c08385031215613f3557600080fd5b8235915061387f84602085016139a5565b600080600060608486031215613f5b57600080fd5b8335613f6681613771565b925060208401359150604084013561384781613771565b60008060008060e08587031215613f9357600080fd5b8435613f9e81613771565b9350613fad8660208701613786565b925060a0850135915060c0850135613ada81613771565b600080600060c08486031215613fd957600080fd5b8335613fe481613771565b9250613ff38560208601613786565b915060a084013561384781613771565b600080600060e0848603121561401857600080fd5b61402285856137dd565b925060a08401356001600160401b0381111561403d57600080fd5b614049868287016137dd565b92505060c084013561384781613771565b6000806000610140848603121561407057600080fd5b61407a85856137dd565b925060a08401356001600160401b0381111561409557600080fd5b6140a1868287016137dd565b925050613f198560c08601613786565b828152610160810161095b6020830184613b26565b600080600080608085870312156140dc57600080fd5b84356140e781613771565b935060208501356140f781613771565b925060408501356001600160401b0381111561411257600080fd5b61411e878288016137dd565b9250506060850135613ada81613771565b6000806000610160848603121561414557600080fd5b8335925061415685602086016139a5565b9150613f198560c086016139a5565b600060a0828403121561417757600080fd5b61417f61389e565b905081358152602082013560208201526040820135604082015260608201356141a781613979565b806060830152506080820135608082015292915050565b60008060c083850312156141d157600080fd5b6141db8484614165565b915060a08301356001600160401b03811115613eac57600080fd5b600080600080610200858703121561420d57600080fd5b61421786866137dd565b935060a08501356001600160401b0381111561423257600080fd5b61423e878288016137dd565b93505061424e8660c087016139a5565b9150613a588661016087016139a5565b8481526101a081016142736020830186613b26565b610160820193909352610180015292915050565b6000806040838503121561429a57600080fd5b8235915060208301356142ac81613771565b809150509250929050565b600080602083850312156142ca57600080fd5b82356001600160401b03808211156142e157600080fd5b818501915085601f8301126142f557600080fd5b81358181111561430457600080fd5b8660208260051b850101111561431957600080fd5b60209290920196919550909350505050565b60005b8381101561434657818101518382015260200161432e565b50506000910152565b6000815180845261436781602086016020860161432b565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156143d057603f198886030184526143be85835161434f565b945092850192908501906001016143a2565b5092979650505050505050565b6000602082840312156143ef57600080fd5b5035919050565b60008060c0838503121561440957600080fd5b6141db84846137dd565b6000806000806000610280868803121561442c57600080fd5b61443687876137dd565b945060a08601356001600160401b0381111561445157600080fd5b61445d888289016137dd565b94505061446d8760c088016139a5565b925061447d8761016088016139a5565b915061448d876102008801613786565b90509295509295909350565b600080604083850312156144ac57600080fd5b50508035926020909101359150565b6000806000806101e085870312156144d257600080fd5b6144dc86866137dd565b935060a08501356001600160401b038111156144f757600080fd5b614503878288016137dd565b9350506145138660c087016139a5565b9150613a58866101608701613786565b600080610180838503121561453757600080fd5b6145418484613bdf565b915061387f846101008501613786565b6000808335601e1984360301811261456857600080fd5b8301803591506001600160401b0382111561458257600080fd5b602001915036819003821315611af657600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600061010060018060a01b03808d168452808c166020850152808b16604085015289606085015288608085015280881660a08501528160c08501526146088285018789614597565b925080851660e085015250509a9950505050505050505050565b60006020828403121561463457600080fd5b5051919050565b805161397481613771565b805161397481613979565b6000610120828403121561466457600080fd5b61466c6138c6565b6146758361463b565b81526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201526146b560c08401614646565b60c082015260e083015160e08201526101006146d2818501614646565b908201529392505050565b600060a082840312156146ef57600080fd5b610acd8383614165565b6fffffffffffffffffffffffffffffffff1991909116815260200190565b600060a0828403121561472957600080fd5b61473161389e565b825161473c81613771565b815260208381015190820152604083015161475681613771565b604082015260608381015190820152608083015161477381613a63565b60808201529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b600061010061483a83885180516001600160a01b03168252602090810151910152565b602087015160408401526040870151606084015261486e608084018780516001600160a01b03168252602090810151910152565b6001600160a01b03851660c084015260e083018190526136ee8184018561434f565b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160190811115610ad057610ad0614890565b6000608082840312156148d157600080fd5b6148d96138e9565b823581526020830135602082015260408301356040820152606083013560608201528091505092915050565b60006020828403121561491757600080fd5b815161095b81613a63565b803561397481613771565b8351815260208401516020820152604084015160408201526000606085015161495581613afb565b60608301526080858101519083015260e060a0830152833561497681613771565b6001600160a01b0390811660e084015260208501359061499582613771565b166101008301526040840135610120830152606084013536859003601e190181126149bf57600080fd5b84016020810190356001600160401b038111156149db57600080fd5b8036038213156149ea57600080fd5b60a0610140850152614a0161018085018284614597565b915050614a1060808601614922565b6001600160a01b03908116610160850152841660c08401529050610eef565b600080828403610160811215614a4457600080fd5b8351925061014080601f1983011215614a5c57600080fd5b614a6461390b565b602086015181526080603f1984011215614a7d57600080fd5b614a856138e9565b92506040860151614a9581613979565b80845250606086015160208401526080860151604084015260a08601516060840152826020820152614ac960c08701614646565b604082015260e086015160608201526101008601516080820152614af06101208701614646565b60a082015294015160c085015250909391925050565b634e487b7160e01b600052603260045260246000fd5b600060018201614b2e57614b2e614890565b5060010190565b600061012082019050835182526020840151600f0b60208301526001600160801b036040850151166040830152606084015160608301526080840151600f0b608083015260a0840151614b8b60a0840182613b19565b5060c0840151614ba360c084018263ffffffff169052565b5060e0840151614bb660e0840182613b19565b506001600160a01b03831661010083015261095b565b80820180821115610ad057610ad0614890565b600060208284031215614bf157600080fd5b815161095b81613771565b60008251614c0e81846020870161432b565b9190910192915050565b602081526000610acd602083018461434f56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000c0939a4ed0129bc5162f6f693935b3f72a46a90d0000000000000000000000006cae28b3d09d8f8fc74ccd496ac986fc84c0c24e000000000000000000000000a64f0dbb10c473978c2efe069da207991e8e3cb30000000000000000000000003f37c7d8e61c000085aac0515775b06a3412f36b000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba300000000000000000000000012158f171c77f6341443b0700e2d094cdeabaa9d