0x608060405234801561001057600080fd5b50615e4480620000216000396000f3fe6080604052600436106102295760003560e01c80639a30739111610123578063d8837daf116100ab578063f3e144b61161006f578063f3e144b614610672578063f5224f5a14610692578063f6932b0d146106aa578063f851a440146106ca578063fa461e33146106ea57600080fd5b8063d8837daf146105ea578063e0af3616146105fd578063e99bfa951461061f578063f2fde38b14610632578063f3dced3c1461065257600080fd5b8063b80c2f09116100f2578063b80c2f0914610561578063c45057ab14610574578063c56179b31461059c578063d13a35e6146105b7578063d1b260d4146105d757600080fd5b80639a307391146104d8578063aad0ae5b1461050e578063b07482d21461052e578063b3ab15fb1461054157600080fd5b806373679b6b116101b15780638da5cb5b116101755780638da5cb5b146104545780639773f2de146104725780639871efa4146104925780639989d481146104a55780639a09b285146104b857600080fd5b806373679b6b146103a4578063779e45fc146103cc5780638129fc1c146103ec5780638575654f14610401578063869c6b4b1461041457600080fd5b80631afca626116101f85780631afca626146102ec578063355b9718146103025780633ba7cadf146103225780636aa476451461034f578063715018a61461038f57600080fd5b806301617fab146102805780630c00e013146102935780630d5f0e3b146102b357806312a0ddc7146102d957600080fd5b3661027b573233036102795760405162461bcd60e51b81526020600482015260146024820152731155120819195c1bdcda5d081c995a9958dd195960621b60448201526064015b60405180910390fd5b005b600080fd5b61027961028e366004614ff7565b61070a565b34801561029f57600080fd5b506102796102ae366004615064565b610ac1565b6102c66102c13660046150a5565b610cec565b6040519081526020015b60405180910390f35b6102c66102e7366004615130565b610d35565b3480156102f857600080fd5b506102c660b65481565b34801561030e57600080fd5b5061027961031d366004615187565b610d82565b34801561032e57600080fd5b506102c661033d366004615187565b60b56020526000908152604090205481565b34801561035b57600080fd5b506103777370cbb871e8f30fc8ce23609e9e0ea87b6b222f5881565b6040516001600160a01b0390911681526020016102d0565b34801561039b57600080fd5b50610279610d96565b3480156103b057600080fd5b50610377735703b683c7f928b721ca95da988d73a3299d475781565b3480156103d857600080fd5b506102796103e73660046151de565b610daa565b3480156103f857600080fd5b50610279610e7f565b6102c661040f3660046150a5565b610f98565b34801561042057600080fd5b5061044461042f366004615217565b60996020526000908152604090205460ff1681565b60405190151581526020016102d0565b34801561046057600080fd5b506033546001600160a01b0316610377565b34801561047e57600080fd5b5061027961048d366004615217565b61107d565b6102c66104a03660046150a5565b6110d3565b6102c66104b3366004615130565b611113565b3480156104c457600080fd5b506102796104d3366004615217565b611221565b3480156104e457600080fd5b506103776104f3366004615217565b60b4602052600090815260409020546001600160a01b031681565b34801561051a57600080fd5b50610279610529366004615217565b6112e1565b6102c661053c3660046152da565b611337565b34801561054d57600080fd5b5061027961055c366004615217565b611467565b6102c661056f366004615309565b6114c9565b34801561058057600080fd5b506103777306c95a3934d94d5ae5bf54731bd2840cefee6f8781565b3480156105a857600080fd5b506102c66001600160a01b0381565b3480156105c357600080fd5b50609854610377906001600160a01b031681565b6102c66105e5366004615309565b61159e565b6102c66105f83660046150a5565b611712565b34801561060957600080fd5b50610377600080516020615daf83398151915281565b6102c661062d3660046153bf565b6117e1565b34801561063e57600080fd5b5061027961064d366004615217565b611a30565b34801561065e57600080fd5b50609754610377906001600160a01b031681565b34801561067e57600080fd5b506102c661068d3660046154c0565b611aa6565b34801561069e57600080fd5b506102c6600160ff1b81565b3480156106b657600080fd5b506102796106c5366004615187565b611afd565b3480156106d657600080fd5b5060ad54610377906001600160a01b031681565b3480156106f657600080fd5b5061027961070536600461554a565b611b0e565b600160ff1b81166001600160801b0382168061075d5760405162461bcd60e51b81526020600482015260126024820152710616d6f756e74206d757374206265203e20360741b6044820152606401610270565b811561090f5760405163052f523360e11b8152600080516020615daf8339815191526004820152336024820152735703b683c7f928b721ca95da988d73a3299d475760448201526001600160801b03821660648201527370cbb871e8f30fc8ce23609e9e0ea87b6b222f5890630a5ea46690608401600060405180830381600087803b1580156107ec57600080fd5b505af1158015610800573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b81526001600160801b0384166004820152735703b683c7f928b721ca95da988d73a3299d47579250632e1a7d4d9150602401600060405180830381600087803b15801561085957600080fd5b505af115801561086d573d6000803e3d6000fd5b50506040516000925033915047908381818185875af1925050503d80600081146108b3576040519150601f19603f3d011682016040523d82523d6000602084013e6108b8565b606091505b50509050806109095760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610270565b506109ed565b806001600160801b031634146109605760405162461bcd60e51b81526020600482015260166024820152751d985b1d59481b9bdd08195c5d585b08185b5bdd5b9d60521b6044820152606401610270565b600080516020615daf8339815191526001600160a01b031663d0e30db0826001600160801b03166040518263ffffffff1660e01b81526004016000604051808303818588803b1580156109b257600080fd5b505af11580156109c6573d6000803e3d6000fd5b50505050506109ed600080516020615daf83398151915233836001600160801b0316611cfa565b604051848152600080516020615def8339815191529060200160405180910390a1600080516020615dcf83398151915282610a3c5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610a4c565b600080516020615daf8339815191525b83610a6557600080516020615daf833981519152610a7b565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b604080516001600160a01b03938416815292909116602083015233908201526001600160801b03831660608201819052608082015260a00160405180910390a150505050565b806000816001600160401b03811115610adc57610adc615234565b604051908082528060200260200182016040528015610b05578160200160208202803683370190505b50905060005b82811015610ca05760b46000868684818110610b2957610b2961559c565b9050602002810190610b3b91906155b2565b610b4c906040810190602001615217565b6001600160a01b039081168252602082019290925260400160002054163314801590610bbe5750848482818110610b8557610b8561559c565b9050602002810190610b9791906155b2565b610ba8906040810190602001615217565b6001600160a01b0316336001600160a01b031614155b15610bdc5760405163203b1cdd60e21b815260040160405180910390fd5b6000610c12610c0d878785818110610bf657610bf661559c565b9050602002810190610c0891906155b2565b611d2f565b611d6b565b905060b5600082815260200190815260200160002054838381518110610c3a57610c3a61559c565b602002602001018181525050600160ff1b838381518110610c5d57610c5d61559c565b602002602001015103610c83576040516311b18c4b60e11b815260040160405180910390fd5b600090815260b560205260409020600160ff1b9055600101610b0b565b50336001600160a01b03167f2d978b051248279fa3127485450ca814a26b9b0938be9f714eda15eaec5ca881858584604051610cde9392919061567c565b60405180910390a250505050565b60405160a086901c8152600090600080516020615def8339815191529060200160405180910390a1610d2b336001600160a01b03881687878787611d9e565b9695505050505050565b6000600080516020615def83398151915284604051610d5691815260200190565b60405180910390a1610d783380610d72368790038701876157a0565b856122d7565b90505b9392505050565b610d8a61262d565b610d9381612687565b50565b610d9e61262d565b610da8600061271f565b565b337306c95a3934d94d5ae5bf54731bd2840cefee6f871480610dd6575060ad546001600160a01b031633145b80610deb57506033546001600160a01b031633145b610e1c5760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610270565b6001600160a01b038216600081815260996020908152604091829020805460ff19168515159081179091558251938452908301527fede97de789011d2becb9fba8441864c3b17f4a20f7ebf0a77e93f30adc30e207910160405180910390a15050565b600054610100900460ff1615808015610e9f5750600054600160ff909116105b80610eb95750303b158015610eb9575060005460ff166001145b610f1c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610270565b6000805460ff191660011790558015610f3f576000805461ff0019166101001790555b610f47612771565b610f4f6127a0565b8015610d93576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b3360009081526099602052604081205460ff161515600114610fcc5760405162461bcd60e51b8152600401610270906157bc565b60405160a087901c8152600080516020615def8339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105591906157e3565b915091506110716001600160a01b0389168888888887876127cf565b98975050505050505050565b61108561262d565b609880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8cade8eab4d8616714469b2d0621047d03d909a4a4685da326e5fa4d54c5fa8890602001610f8d565b60405160a086901c8152600090600080516020615def8339815191529060200160405180910390a1610d2b6001600160a01b0387168686868633336127cf565b3360009081526099602052604081205460ff1615156001146111475760405162461bcd60e51b8152600401610270906157bc565b6002606554036111695760405162461bcd60e51b815260040161027090615812565b6002606555604051848152600080516020615def8339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa1580156111cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f391906157e3565b9092509050611212828261120c368990038901896157a0565b876122d7565b60016065559695505050505050565b337306c95a3934d94d5ae5bf54731bd2840cefee6f87148061124d575060ad546001600160a01b031633145b8061126257506033546001600160a01b031633145b6112935760405162461bcd60e51b81526020600482015260026024820152616e6160f01b6044820152606401610270565b60ad80546001600160a01b0319166001600160a01b0383169081179091556040519081527f7ce7ec0b50378fb6c0186ffb5f48325f6593fcb4ca4386f21861af3129188f5c90602001610f8d565b6112e961262d565b609780546001600160a01b0319166001600160a01b0383169081179091556040519081527fc7837d6c310ea8044f727d5d37f08177374e68c2f2cdf5adf1fbbacf3386553190602001610f8d565b600060026065540361135b5760405162461bcd60e51b815260040161027090615812565b600260655573eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6113856060840160408501615217565b6001600160a01b0316036113d25760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610270565b6113e26060830160408401615217565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015611428573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144c9190615849565b835261145a308585856122d7565b6001606555949350505050565b33600081815260b4602090815260409182902080546001600160a01b0319166001600160a01b03861690811790915591519182527fd58299b712891143e76310d5e664c4203c940a67db37cf856bdaa3c5c76a802c910160405180910390a250565b60008760800135428110156114f05760405162461bcd60e51b815260040161027090615862565b6002606554036115125760405162461bcd60e51b815260040161027090615812565b60026065556040518a8152600080516020615def8339815191529060200160405180910390a161158b61154a368b90038b018b61588a565b8989808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508b92508a9150899050883380612cdc565b60016065559a9950505050505050505050565b60008760800135428110156115c55760405162461bcd60e51b815260040161027090615862565b6002606554036115e75760405162461bcd60e51b815260040161027090615812565b60026065553360009081526099602052604090205460ff1615156001146116205760405162461bcd60e51b8152600401610270906157bc565b6040518a8152600080516020615def8339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa158015611681573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a591906157e3565b90925090506116fd6116bc368d90038d018d61588a565b8b8b808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508d92508c91508b90508a8888612cdc565b60016065559c9b505050505050505050505050565b3360009081526099602052604081205460ff1615156001146117465760405162461bcd60e51b8152600401610270906157bc565b60405160a087901c8152600080516020615def8339815191529060200160405180910390a1600080336001600160a01b031663534015b36040518163ffffffff1660e01b81526004016040805180830381865afa1580156117ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cf91906157e3565b91509150611071828289898989611d9e565b60008860800135428110156118085760405162461bcd60e51b815260040161027090615862565b60026065540361182a5760405162461bcd60e51b815260040161027090615812565b600260655589356001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed1981016118955760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21039b7bab931b2903a37b5b2b760611b6044820152606401610270565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156118dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119009190615849565b905060006040518060a001604052808e6000013581526020018e602001602081019061192c9190615217565b6001600160a01b031681526020018381526020018e6060013581526020018e60800135815250905060008c8c90506001600160401b0381111561197157611971615234565b60405190808252806020026020018201604052801561199a578160200160208202803683370190505b50905060005b8c811015611a08578e60400135848f8f848181106119c0576119c061559c565b905060200201356119d19190615926565b6119db919061593d565b8282815181106119ed576119ed61559c565b6020908102919091010152611a018161595f565b90506119a0565b50611a1982828d8d8d8d308e612cdc565b60016065559e9d5050505050505050505050505050565b611a3861262d565b6001600160a01b038116611a9d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610270565b610d938161271f565b60405160a089901c8152600090600080516020615def8339815191529060200160405180910390a1611ad988848461316b565b611af0336001600160a01b038b1689898989611d9e565b9998505050505050505050565b611b0561262d565b610d9381610d8a565b611b52565b3d6000803e3d6000fd5b80611b2a57611b2a611b13565b600160005114601f3d11163d151780611b4e57633c9fd93960e21b60005260046000fd5b5050565b604051601581017306ff0b40e9091053eee51fa1d482ce5d852f523360611b8252602081600484335afa611b8857611b88611b13565b60208082016004808501335afa611ba157611ba1611b13565b602060408201600460088501335afa611bbc57611bbc611b13565b6000806000881360018114611bda5760208401519250879150611be2565b835192508891505b507fff1f98431c8ad98523631ae4a59f267346ea31f984000000000000000000000084526060832083527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460208401526001600160a01b036055852016925033831815611c5a57635960139160e11b60005260046000fd5b60843592507306ff0b40e9091053eee51fa1d482ce5d852f523360611b845230831460018114611ccc57826014860152836034860152336054860152816074860152611cc76020600060846010890160007370cbb871e8f30fc8ce23609e9e0ea87b6b222f585af1611b1d565b611cef565b336010860152816030860152611cef602060006044600c89016000885af1611b1d565b505050505050505050565b611d0d8363a9059cbb60e01b84846132d1565b611d2a5760405163fb7f507960e01b815260040160405180910390fd5b505050565b60006040517f5d068ce469dcf41137bcb6c3e1894e076ad915392f28fda19ba41601d33c32a68152610120836020830137610140902092915050565b6000611d98611d78613324565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b600081808203611dc1576040516333f3e07b60e11b815260040160405180910390fd5b8591506000198101341515600080600160fd1b888886818110611de657611de661559c565b90506020020135161190508115611e7a57883414611e1757604051631841b4e160e01b815260040160405180910390fd5b600080516020615daf8339815191526001600160a01b031663d0e30db08a6040518263ffffffff1660e01b81526004016000604051808303818588803b158015611e6057600080fd5b505af1158015611e74573d6000803e3d6000fd5b50505050505b6001841115611f1a57611eb43083611e92578c611e94565b305b89896000818110611ea757611ea761559c565b9050602002013588613417565b945060015b83811015611eef57611ee530308a8a85818110611ed857611ed861559c565b9050602002013589613417565b9550600101611eb9565b50611f1381611efe578a611f00565b305b30898987818110611ea757611ea761559c565b9450611f38565b611f3581611f28578a611f2a565b305b83611e92578c611e94565b94505b87851015611f595760405163f32bec2f60e01b815260040160405180910390fd5b80156120635760405163a9059cbb60e01b8152735703b683c7f928b721ca95da988d73a3299d4757600482015260248101869052600080516020615daf8339815191529063a9059cbb906044016020604051808303816000875af1158015611fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe99190615978565b50604051632e1a7d4d60e01b815260048101869052735703b683c7f928b721ca95da988d73a3299d475790632e1a7d4d90602401600060405180830381600087803b15801561203757600080fd5b505af115801561204b573d6000803e3d6000fd5b50612063925050506001600160a01b038b16866135b3565b60008261216857600160ff1b888860008181106120825761208261559c565b905060200201351660001461211157878760008181106120a4576120a461559c565b905060200201356001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210c9190615995565b61217e565b878760008181106121245761212461559c565b905060200201356001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e8573d6000803e3d6000fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b905060008261228257600160ff1b89898781811061219e5761219e61559c565b905060200201351660001461222c578888868181106121bf576121bf61559c565b905060200201356001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122279190615995565b612298565b88888681811061223e5761223e61559c565b905060200201356001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612203573d6000803e3d6000fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee5b9050600080516020615dcf8339815191528282328e8b6040516122bf9594939291906159b2565b60405180910390a15050505050509695505050505050565b815160009081036122fb576040516387741f3360e01b815260040160405180910390fd5b8260600151801561230d575082513414155b801561233f5750600080516020615daf8339815191526123336060840160408501615217565b6001600160a01b031614155b1561235d576040516387741f3360e01b815260040160405180910390fd5b826080015180156123945750600080516020615daf8339815191526123886080840160608501615217565b6001600160a01b031614155b156123b25760405163591c75ef60e01b815260040160405180910390fd5b42836040015110156123d757604051632b32713d60e01b815260040160405180910390fd5b8260800151612461576123f06080830160608401615217565b6040516370a0823160e01b81526001600160a01b03868116600483015291909116906370a0823190602401602060405180830381865afa158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c9190615849565b61246d565b836001600160a01b0316315b9050600061248b8460000151878786886060015189608001516136cc565b905080156124af5760405163f70b432d60e01b815260048101829052602401610270565b836080015161254457816124c96080850160608601615217565b6040516370a0823160e01b81526001600160a01b03888116600483015291909116906370a0823190602401602060405180830381865afa158015612511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125359190615849565b61253f91906159e6565b612558565b612558826001600160a01b038716316159e6565b9150836020015182101561257f5760405163a7c6745960e01b815260040160405180910390fd5b6040805184358152610180850135602082018190529181018390527f5018f79d04d45a1d0ef7df4f8a02c44c1b0b59cd11983e44f1e9dfaf071db2199060600160405180910390a1600080516020615dcf8339815191526125e66060860160408701615217565b6125f66080870160608801615217565b6126066040880160208901615217565b885160405161261a949392919089906159b2565b60405180910390a150505b949350505050565b6033546001600160a01b03163314610da85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610270565b60f081901c6001600160a01b0382166127108211156126b957604051634bd934b560e01b815260040160405180910390fd5b6001600160a01b0381166126e057604051633480121760e21b815260040160405180910390fd5b60b683905560405183815233907f04e0c6a722afc105ccf81d8792757f388d3dad9bc137b2e269cfd6ee99faba999060200160405180910390a2505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166127985760405162461bcd60e51b8152600401610270906159f9565b610da8613b6a565b600054610100900460ff166127c75760405162461bcd60e51b8152600401610270906159f9565b610da8613b9a565b60006128c2565b62461bcd60e51b600052600160e51b6020528060405250806000fd5b630240bc6b60e21b81526000604082600484875afa61281357612813611b13565b60603d146128435761284360597c1472657365727665732063616c6c206661696c656400000000000000006127d6565b81516020830151861561285257905b63022c0d9f60e01b8452878502633b9aca0092909202820191020490508480156128885781600484015260006024840152612896565b600060048401528160248401525b50866044830152608060648301526000608483015260008060a4846000885af1610d2b57610d2b611b13565b60405160c081016040526004606435018035602082019150806020028201905081358b6000811461296e5734156129135761291360557111696e76616c6964206d73672e76616c756560581b6127d6565b63052f523360e11b85528c60048601528760248601526001600160a01b03821660448601528b606486015260008060848760007370cbb871e8f30fc8ce23609e9e0ea87b6b222f585af161296957612969611b13565b612a07565b348c146129955761299560557111696e76616c6964206d73672e76616c756560581b6127d6565b630d0e30db60e41b85526000806004878f600080516020615daf8339815191525af16129c3576129c3611b13565b63a9059cbb60e01b85526001600160a01b03821660048601528b60248601526000806044876000600080516020615daf8339815191525af1612a0757612a07611b13565b508a9450602083015b82811015612a58578035612a4c6001600160a01b03821663ffffffff60a01b851660a01c600160ff1b86166001600160a01b0387168b8b6127f2565b96509150602001612a10565b50600160fe1b81168015612b3657612a8f3063ffffffff60a01b841660a01c600160ff1b85166001600160a01b0386168a8a6127f2565b955063a9059cbb60e01b8552735703b683c7f928b721ca95da988d73a3299d475760048601528560248601526000806044876000600080516020615daf8339815191525af1612ae057612ae0611b13565b632e1a7d4d60e01b85528560048601526000806024876000735703b683c7f928b721ca95da988d73a3299d47575af1612b1b57612b1b611b13565b600080600080898b5af1612b3157612b31611b13565b612b62565b612b5f8763ffffffff60a01b841660a01c600160ff1b85166001600160a01b0386168a8a6127f2565b95505b505050505085811015612b9757612b97605a7c164d696e2072657475726e206e6f7420726561636865640000000000006127d6565b60008585612ba66001826159e6565b818110612bb557612bb561559c565b60200291909101359150506001600160a01b038116600160ff1b821680612c3d57816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c389190615995565b612c9f565b816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9f9190615995565b9150600080516020615dcf8339815191528b83328d88604051612cc69594939291906159b2565b60405180910390a1505050979650505050505050565b60408801516000908990612d3d5760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2066726f6d546f6b656e416d6f756e74206d757374206265203e604482015261020360f41b6064820152608401610270565b805160208201516001600160a01b0391821691612d5b911685613bc8565b9250612d6681613c53565b15612dd557600080516020615daf8339815191526001600160a01b031663d0e30db083604001516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612db857600080fd5b505af1158015612dcc573d6000803e3d6000fd5b50505050503094505b6000805b8b51811015612e11578b8181518110612df457612df461559c565b602002602001015182612e079190615a44565b9150600101612dd9565b508260400151811115612e845760405162461bcd60e51b815260206004820152603560248201527f526f7574653a206e756d626572206f6620626174636865732073686f756c64206044820152741899480f0f48199c9bdb551bdad95b905b5bdd5b9d605a1b6064820152608401610270565b508151600090600160ff1b1615612fb557825160009060f01c60ff169050612ed8878486604001518c8c8660ff16818110612ec157612ec161559c565b9050602002810190612ed391906155b2565b613c75565b915081600003612fb357612ef0846020015187613f41565b60208401518590612f0a906001600160a01b031688613bc8565b612f1491906159e6565b94508360600151851015612f755760405162461bcd60e51b815260206004820152602260248201527f526f7574653a2052657475726e20616d6f756e74206973206e6f7420656e6f756044820152610ced60f31b6064820152608401610270565b600080516020615dcf83398151915283856020015132876040015189604051612fa29594939291906159b2565b60405180910390a150505050611071565b505b881580612fe6575089896000818110612fd057612fd061559c565b9050602002810190612fe29190615a57565b1590505b156130075760405163f70b432d60e01b815260048101829052602401610270565b8a5189146130495760405162461bcd60e51b815260206004820152600f60248201526e0d8cadccee8d040dad2e6dac2e8c6d608b1b6044820152606401610270565b60005b898110156130a55761309d878d838151811061306a5761306a61559c565b60200260200101518d8d858181106130845761308461559c565b90506020028101906130969190615a57565b8d8d6141e6565b60010161304c565b506130b4836020015186613f41565b602083015184906130ce906001600160a01b031687613bc8565b6130d891906159e6565b935082606001518410156131275760405162461bcd60e51b8152602060048201526016602482015275135a5b881c995d1d5c9b881b9bdd081c995858da195960521b6044820152606401610270565b600080516020615dcf833981519152828460200151328660400151886040516131549594939291906159b2565b60405180910390a150505098975050505050505050565b8015611d2a576000606060e083900361320c576040516001600160a01b038616906131a59063d505accf60e01b9087908790602001615aa0565b60408051601f19818403018152908290526131bf91615ae8565b6000604051808303816000865af19150503d80600081146131fc576040519150601f19603f3d011682016040523d82523d6000602084013e613201565b606091505b50909250905061327b565b61010083900361323d576040516001600160a01b038616906131a5906323f2ebc360e21b9087908790602001615aa0565b60405162461bcd60e51b81526020600482015260136024820152720aee4dedcce40e0cae4dad2e840d8cadccee8d606b1b6044820152606401610270565b816132ca576132b1816040518060400160405280600f81526020016e02832b936b4ba103330b4b632b21d1608d1b8152506143da565b60405162461bcd60e51b81526004016102709190615b26565b5050505050565b60006040518481528360048201528260248201526020600060448360008a5af19150508015612625573d801561331357600160005114601f3d1116915061331b565b6000863b1191505b50949350505050565b600030733b3ae790df4f312e745d270119c6052904fb67901480156133495750600146145b1561337357507fa1dd89da16c54d4e250879e6df2d3033eb473974f277eca7f41cd882a24eb13190565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f9569cad29571f225e7f2c73ecd677d78be383da74efd13f4af2bade05dc1a8de828401527fe6bbd6277e1bf288eed5e8d1780f9a50b239e86b153736bceebccf4ea79d90b360608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6000600160ff1b83161580156134ed576000846001600160a01b031663128acb0888846134438861453d565b604080516001600160a01b038d1660208201526401000276a491016040516020818303038152906040526040518663ffffffff1660e01b815260040161348d959493929190615b39565b60408051808303816000875af11580156134ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134cf9190615b7f565b9150506134e4816134df90615ba3565b6145ab565b92505050612625565b6000846001600160a01b031663128acb0888846135098861453d565b604080516001600160a01b038d16602082015273fffd8963efd1fc6a506488495d951d5263988d2591016040516020818303038152906040526040518663ffffffff1660e01b8152600401613562959493929190615b39565b60408051808303816000875af1158015613580573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135a49190615b7f565b5090506134e46134df82615ba3565b804710156136035760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610270565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613650576040519150601f19603f3d011682016040523d82523d6000602084013e613655565b606091505b5050905080611d2a5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610270565b6000428460e0013510156136e257506002610d2b565b600060808501356136f760a08701358a615926565b613701919061593d565b905061022085013560006137358a8361372060608b0160408c01615217565b61373060808c0160608d01615217565b6145fd565b90508083111561377e57604080518281526020810183905291935083917facd4baa7803154e33bc54ca36afe61420bf31d5f1bf3587746c146d2f3a76e50910160405180910390a15b600061378c610c0d89611d2f565b90506137ea816137a260408b0160208c01615217565b6137b06101208c018c615bbf565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061482b92505050565b945084156137fb5750505050610d2b565b61380a84828a60a00135614868565b9450841561381b5750505050610d2b565b8515613963577370cbb871e8f30fc8ce23609e9e0ea87b6b222f58630a5ea46661384b60808b0160608c01615217565b61385b60408c0160208d01615217565b735703b683c7f928b721ca95da988d73a3299d4757886040518563ffffffff1660e01b81526004016138909493929190615c05565b600060405180830381600087803b1580156138aa57600080fd5b505af11580156138be573d6000803e3d6000fd5b5050604051632e1a7d4d60e01b815260048101879052735703b683c7f928b721ca95da988d73a3299d47579250632e1a7d4d9150602401600060405180830381600087803b15801561390f57600080fd5b505af1158015613923573d6000803e3d6000fd5b50506040516001600160a01b038c16925086156108fc02915086906000818181858888f1935050505015801561395d573d6000803e3d6000fd5b506139f1565b7370cbb871e8f30fc8ce23609e9e0ea87b6b222f58630a5ea46661398d60808b0160608c01615217565b61399d60408c0160208d01615217565b8c886040518563ffffffff1660e01b81526004016139be9493929190615c05565b600060405180830381600087803b1580156139d857600080fd5b505af11580156139ec573d6000803e3d6000fd5b505050505b8615613a8a57600080516020615daf8339815191526001600160a01b031663d0e30db08c6040518263ffffffff1660e01b81526004016000604051808303818588803b158015613a4057600080fd5b505af1158015613a54573d6000803e3d6000fd5b5050505050613a85886020016020810190613a6f9190615217565b600080516020615daf833981519152908d611cfa565b613b5c565b306001600160a01b038b1603613ace57613a85613aad60408a0160208b01615217565b8c613abe60608c0160408d01615217565b6001600160a01b03169190611cfa565b7370cbb871e8f30fc8ce23609e9e0ea87b6b222f58630a5ea466613af860608b0160408c01615217565b8c613b0960408d0160208e01615217565b8f6040518563ffffffff1660e01b8152600401613b299493929190615c05565b600060405180830381600087803b158015613b4357600080fd5b505af1158015613b57573d6000803e3d6000fd5b505050505b505050509695505050505050565b600054610100900460ff16613b915760405162461bcd60e51b8152600401610270906159f9565b610da83361271f565b600054610100900460ff16613bc15760405162461bcd60e51b8152600401610270906159f9565b6001606555565b6000613bd383613c53565b15613be957506001600160a01b03811631611d98565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015613c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7b9190615849565b6001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1490565b60008080613c87610120850185615bbf565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929350613cca9250889150613c539050565b15613ce157600080516020615daf83398151915295505b602081015191506001600160a01b038616613d026060860160408701615217565b6001600160a01b031614613d2c5760405163f70b432d60e01b815260086004820152602401610270565b6000613d3e6080860160608701615217565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015613d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613da89190615849565b90506000609760009054906101000a90046001600160a01b03166001600160a01b0316631c6eced56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e239190615995565b9050613e3f613e386060880160408901615217565b82896148f8565b613e4e878a30896000806136cc565b9450613e6b613e636060880160408901615217565b8260006148f8565b81613e7c6080880160608901615217565b6040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa158015613ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ee69190615849565b613ef091906159e6565b6040805188358152602081018790529081018790529092507f5018f79d04d45a1d0ef7df4f8a02c44c1b0b59cd11983e44f1e9dfaf071db2199060600160405180910390a150505050949350505050565b613f53826001600160a01b0316613c53565b15614168576040516370a0823160e01b8152306004820152600090600080516020615daf833981519152906370a0823190602401602060405180830381865afa158015613fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fc89190615849565b905080156140b35760985460405163a9059cbb60e01b81526001600160a01b03909116600482015260248101829052600080516020615daf8339815191529063a9059cbb906044016020604051808303816000875af115801561402f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140539190615978565b50609854604051632e1a7d4d60e01b8152600481018390526001600160a01b0390911690632e1a7d4d90602401600060405180830381600087803b15801561409a57600080fd5b505af11580156140ae573d6000803e3d6000fd5b505050505b478015614162576000836001600160a01b03168261138890604051600060405180830381858888f193505050503d806000811461410c576040519150601f19603f3d011682016040523d82523d6000602084013e614111565b606091505b50509050806132ca5760405162461bcd60e51b815260206004820152601c60248201527f7472616e73666572206e617469766520746f6b656e206661696c6564000000006044820152606401610270565b50505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa1580156141af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d39190615849565b90508015611d2a57611d2a838383611cfa565b600080614221868660008181106141ff576141ff61559c565b90506020028101906142119190615c2f565b608001356001600160a01b031690565b9050614258868660008181106142395761423961559c565b905060200281019061424b9190615c2f565b60800135600160ff1b1690565b156142bd57614292868660008181106142735761427361559c565b90506020028101906142859190615c2f565b6080013560f01c60ff1690565b91506142af88828987878760ff16818110612ec157612ec161559c565b6000036142bd5750506143d2565b8460005b818110156143cd5780156142ff576142e48888838181106141ff576141ff61559c565b92506142f96001600160a01b03841630613bc8565b98503099505b6143338888838181106143145761431461559c565b90506020028101906143269190615c2f565b60800135600160fe1b1690565b1561438f5761436c88888381811061434d5761434d61559c565b905060200281019061435f9190615c2f565b6080013560e81c60ff1690565b93506143898a848b89898960ff16818110612ec157612ec161559c565b156143bd575b6143bd8a8a8a8a858181106143a6576143a661559c565b90506020028101906143b89190615c2f565b614903565b6143c68161595f565b90506142c1565b505050505b505050505050565b6060600483511061450b5760208301516001600160e01b0319811662461bcd60e51b14801561440b57506044845110155b156144ab5760248481015180860182018051919290919061442d908490615a44565b6144379190615a44565b8651101561447f5760405162461bcd60e51b815260206004820152601560248201527424b73b30b634b2103932bb32b93a103932b0b9b7b760591b6044820152606401610270565b8481604051602001614492929190615c45565b6040516020818303038152906040529350505050611d98565b6001600160e01b03198116634e487b7160e01b1480156144cc575083516024145b15614509576024840151836144e082614c32565b6040516020016144f1929190615c94565b60405160208183030381529060405292505050611d98565b505b8161451584614c5a565b604051602001614526929190615cc9565b604051602081830303815290604052905092915050565b60006001600160ff1b038211156145a75760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610270565b5090565b6000808212156145a75760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401610270565b600060f084901c6001600160a01b0385168061471f5760405163e6a4390560e01b81526001600160a01b03808716600483015285166024820152735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063e6a4390590604401602060405180830381865afa158015614673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146979190615995565b90506000816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156146d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146fd9190615995565b9050846001600160a01b0316816001600160a01b03160361471d57600192505b505b600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015614760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147849190615d31565b5091509150816001600160701b0316600014806147a857506001600160701b038116155b156147bb57600019945050505050612625565b836001036147f357806001600160701b0316826001600160701b03168a6147e29190615926565b6147ec919061593d565b945061481f565b816001600160701b0316816001600160701b03168a6148129190615926565b61481c919061593d565b94505b50505050949350505050565b606081015160808201516000919061484d85614848888585614e41565b614eb0565b61485c57600192505050610d7b565b60009695505050505050565b600082815260b56020526040812054600160ff1b810161488d5760035b915050610d7b565b8015801561489b5750600083115b156148a35750815b808511156148b2576004614885565b8085036148d357600084815260b560205260409020600160ff1b90556148ed565b6148dd85826159e6565b600085815260b560205260409020555b600095945050505050565b611d2a838383614f04565b60808101356001600160a01b031660008061491e8480615a57565b9050905060005b81811015614c2957600061493c6040870187615a57565b8381811061494c5761494c61559c565b60200291909101359150506001600160a01b038116600160ff1b821661ffff60a084901c166127108111156149b95760405162461bcd60e51b8152602060048201526013602482015272776569676874206f7574206f662072616e676560681b6044820152606401610270565b6149c38188615a44565b96506149d06001876159e6565b8503614a3757612710871115614a375760405162461bcd60e51b815260206004820152602660248201527f746f74616c5765696768742063616e206e6f7420657863656564203130303030604482015265081b1a5b5a5d60d21b6064820152608401610270565b6000612710614a46838d615926565b614a50919061593d565b9050614a8f8c614a6360208d018d615a57565b89818110614a7357614a7361559c565b9050602002016020810190614a889190615217565b8b84614f69565b8215614b5957614a9f8a80615a57565b87818110614aaf57614aaf61559c565b9050602002016020810190614ac49190615217565b6001600160a01b0316636f7929f23086614ae160608f018f615a57565b8b818110614af157614af161559c565b9050602002810190614b039190615bbf565b6040518563ffffffff1660e01b8152600401614b229493929190615d81565b600060405180830381600087803b158015614b3c57600080fd5b505af1158015614b50573d6000803e3d6000fd5b50505050614c19565b614b638a80615a57565b87818110614b7357614b7361559c565b9050602002016020810190614b889190615217565b6001600160a01b03166330e6ae313086614ba560608f018f615a57565b8b818110614bb557614bb561559c565b9050602002810190614bc79190615bbf565b6040518563ffffffff1660e01b8152600401614be69493929190615d81565b600060405180830381600087803b158015614c0057600080fd5b505af1158015614c14573d6000803e3d6000fd5b505050505b8560010195505050505050614925565b50505050505050565b6060611d9882604051602001614c4a91815260200190565b6040516020818303038152906040525b80516060906f181899199a1a9b1b9c1cb0b131b232b360811b90600090614c82906002615926565b614c8d906002615a44565b6001600160401b03811115614ca457614ca4615234565b6040519080825280601f01601f191660200182016040528015614cce576020820181803683370190505b509050600360fc1b81600081518110614ce957614ce961559c565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614d1857614d1861559c565b60200101906001600160f81b031916908160001a90535060005b8451811015614e3957826004868381518110614d5057614d5061559c565b01602001516001600160f81b031916901c60f81c60108110614d7457614d7461559c565b1a60f81b82614d84836002615926565b614d8f906002615a44565b81518110614d9f57614d9f61559c565b60200101906001600160f81b031916908160001a90535082858281518110614dc957614dc961559c565b60209101015160f81c600f1660108110614de557614de561559c565b1a60f81b82614df5836002615926565b614e00906003615a44565b81518110614e1057614e1061559c565b60200101906001600160f81b031916908160001a90535080614e318161595f565b915050614d32565b509392505050565b60006001600160ff1b0382167f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a1811015614e39576040518581528360ff1c601b016020820152846040820152816060820152600080526020600060808360015afa505060005195945050505050565b6000826001600160a01b0316826001600160a01b03161480614eee57506001600160a01b03808416600090815260b460205260409020548382169116145b15614efb57506001611d98565b50600092915050565b614f178363095ea7b360e01b84846132d1565b611d2a57614f2f8363095ea7b360e01b8460006132d1565b1580614f4b5750614f498363095ea7b360e01b84846132d1565b155b15611d2a5760405163019be9a960e41b815260040160405180910390fd5b306001600160a01b03851603614f8957614f84828483611cfa565b614162565b60975460405163052f523360e11b81526001600160a01b0390911690630a5ea46690614fbf908590889088908790600401615c05565b600060405180830381600087803b158015614fd957600080fd5b505af1158015614fed573d6000803e3d6000fd5b5050505050505050565b6000806040838503121561500a57600080fd5b50508035926020909101359150565b60008083601f84011261502b57600080fd5b5081356001600160401b0381111561504257600080fd5b6020830191508360208260051b850101111561505d57600080fd5b9250929050565b6000806020838503121561507757600080fd5b82356001600160401b0381111561508d57600080fd5b61509985828601615019565b90969095509350505050565b6000806000806000608086880312156150bd57600080fd5b85359450602086013593506040860135925060608601356001600160401b038111156150e857600080fd5b6150f488828901615019565b969995985093965092949392505050565b600060a0828403121561511757600080fd5b50919050565b6000610140828403121561511757600080fd5b600080600060e0848603121561514557600080fd5b833592506151568560208601615105565b915060c08401356001600160401b0381111561517157600080fd5b61517d8682870161511d565b9150509250925092565b60006020828403121561519957600080fd5b5035919050565b6001600160a01b0381168114610d9357600080fd5b80356151c0816151a0565b919050565b8015158114610d9357600080fd5b80356151c0816151c5565b600080604083850312156151f157600080fd5b82356151fc816151a0565b9150602083013561520c816151c5565b809150509250929050565b60006020828403121561522957600080fd5b8135610d7b816151a0565b634e487b7160e01b600052604160045260246000fd5b600060a0828403121561525c57600080fd5b60405160a081018181106001600160401b038211171561528c57634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356152ba816151c5565b606082015260808301356152cd816151c5565b6080919091015292915050565b600080600060e084860312156152ef57600080fd5b83356152fa816151a0565b9250615156856020860161524a565b600080600080600080600080610120898b03121561532657600080fd5b883597506153378a60208b01615105565b965060c08901356001600160401b038082111561535357600080fd5b61535f8c838d01615019565b909850965060e08b013591508082111561537857600080fd5b6153848c838d01615019565b90965094506101008b013591508082111561539e57600080fd5b506153ab8b828c01615019565b999c989b5096995094979396929594505050565b600080600080600080600080610120898b0312156153dc57600080fd5b6153e68a8a615105565b975060a08901356001600160401b038082111561540257600080fd5b61540e8c838d01615019565b909950975060c08b013591508082111561542757600080fd5b6154338c838d01615019565b909750955060e08b013591508082111561544c57600080fd5b506154598b828c01615019565b90945092505061010089013561546e816151a0565b809150509295985092959890939650565b60008083601f84011261549157600080fd5b5081356001600160401b038111156154a857600080fd5b60208301915083602082850101111561505d57600080fd5b60008060008060008060008060c0898b0312156154dc57600080fd5b8835975060208901356154ee816151a0565b9650604089013595506060890135945060808901356001600160401b038082111561551857600080fd5b6155248c838d01615019565b909650945060a08b013591508082111561553d57600080fd5b506153ab8b828c0161547f565b6000806000806060858703121561556057600080fd5b843593506020850135925060408501356001600160401b0381111561558457600080fd5b6155908782880161547f565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b6000823561013e198336030181126155c957600080fd5b9190910192915050565b6000808335601e198436030181126155ea57600080fd5b83016020810192503590506001600160401b0381111561560957600080fd5b80360382131561505d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600081518084526020808501945080840160005b8381101561567157815187529582019590820190600101615655565b509495945050505050565b60408082528181018490526000906060808401600587901b850182018885805b8a81101561578b57888403605f190185528235368d900361013e190181126156c2578283fd5b8c018035855261014060206156d88184016151b5565b6001600160a01b0316818801526156f0838b016151b5565b6001600160a01b03168a880152615708838a016151b5565b6001600160a01b0316898801526080838101359088015260a0808401359088015260c0808401359088015260e0808401359088015261010061574b8185016151d3565b151590880152610120615760848201856155d3565b945083828a0152615774848a018683615618565b99830199985050509490940193505060010161569c565b505050858103602087015261481c8188615641565b600060a082840312156157b257600080fd5b610d7b838361524a565b6020808252600d908201526c6f6e6c79207072696f7269747960981b604082015260600190565b600080604083850312156157f657600080fd5b8251615801816151a0565b602084015190925061520c816151a0565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60006020828403121561585b57600080fd5b5051919050565b6020808252600e908201526d149bdd5d194e88195e1c1a5c995960921b604082015260600190565b600060a0828403121561589c57600080fd5b60405160a081018181106001600160401b03821117156158cc57634e487b7160e01b600052604160045260246000fd5b6040528235815260208301356158e1816151a0565b806020830152506040830135604082015260608301356060820152608083013560808201528091505092915050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611d9857611d98615910565b60008261595a57634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161597157615971615910565b5060010190565b60006020828403121561598a57600080fd5b8151610d7b816151c5565b6000602082840312156159a757600080fd5b8151610d7b816151a0565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b81810381811115611d9857611d98615910565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b80820180821115611d9857611d98615910565b6000808335601e19843603018112615a6e57600080fd5b8301803591506001600160401b03821115615a8857600080fd5b6020019150600581901b360382131561505d57600080fd5b6001600160e01b031984168152818360048301376000910160040190815292915050565b60005b83811015615adf578181015183820152602001615ac7565b50506000910152565b600082516155c9818460208701615ac4565b60008151808452615b12816020860160208601615ac4565b601f01601f19169290920160200192915050565b602081526000610d7b6020830184615afa565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a060808201819052600090615b7490830184615afa565b979650505050505050565b60008060408385031215615b9257600080fd5b505080516020909101519092909150565b6000600160ff1b8201615bb857615bb8615910565b5060000390565b6000808335601e19843603018112615bd657600080fd5b8301803591506001600160401b03821115615bf057600080fd5b60200191503681900382131561505d57600080fd5b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b60008235609e198336030181126155c957600080fd5b60008351615c57818460208801615ac4565b6508ae4e4dee4560d31b9083019081528351615c7a816006840160208801615ac4565b602960f81b60069290910191820152600701949350505050565b60008351615ca6818460208801615ac4565b650a0c2dcd2c6560d31b9083019081528351615c7a816006840160208801615ac4565b60008351615cdb818460208801615ac4565b670aadcd6dcdeeedc560c31b9083019081528351615d00816008840160208801615ac4565b602960f81b60089290910191820152600901949350505050565b80516001600160701b03811681146151c057600080fd5b600080600060608486031215615d4657600080fd5b615d4f84615d1a565b9250615d5d60208501615d1a565b9150604084015163ffffffff81168114615d7657600080fd5b809150509250925092565b6001600160a01b03858116825284166020820152606060408201819052600090610d2b908301848661561856fe000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21bb43f2da90e35f7b0cf38521ca95a49e68eb42fac49924930a5bd73cdf7576c7724394874fdd8ad13292ec739b441f85c6559f10dc4141b8d4c0fa4cbf55bdba264697066735822122000016085e7cf35dfe75a832d3b29f8832685a183641a91d251032205b2c0d87664736f6c63430008110033