0x61010060405234801561001157600080fd5b50604051611ea8380380611ea8833981016040819052610030916101a3565b81816001600160a01b03821615801561005057506001600160a01b038116155b1561006e576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038216156100f8576001600160a01b03821660c08190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156100c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100eb91906101dd565b6001600160a01b031660e0525b6001600160a01b03811615610182576001600160a01b038116608081905260408051631abe729160e31b8152905163d5f39488916004808201926020929091908290030181865afa158015610151573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017591906101dd565b6001600160a01b031660a0525b50505050610201565b6001600160a01b03811681146101a057600080fd5b50565b600080604083850312156101b657600080fd5b82516101c18161018b565b60208401519092506101d28161018b565b809150509250929050565b6000602082840312156101ef57600080fd5b81516101fa8161018b565b9392505050565b60805160a05160c05160e051611c54610254600039600081816101060152610c53015260008181610140015261090501526000818160df0152610ca5015260008181608701526108df0152611c546000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063c74c0fac1161005b578063c74c0fac14610101578063cbb4ed3914610128578063d82649201461013b578063fa461e331461016257600080fd5b806302ee17ad1461008257806323a69e75146100c55780638f63f9bd146100da575b600080fd5b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200160405180910390f35b6100d86100d33660046115a0565b610175565b005b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6100d8610136366004611620565b610189565b6100a97f000000000000000000000000000000000000000000000000000000000000000081565b6100d86101703660046115a0565b610459565b610183600185858585610463565b50505050565b61019781610100013561055b565b6101de6101a760e083018361165c565b6101c66101ba60c0860160a087016116bf565b6001600160a01b031690565b6101d96101ba60608701604088016116bf565b610588565b6000806101f160e0840160c085016116bf565b6001600160a01b0316636f1a30a860608501356102176101ba60c0880160a089016116bf565b61022a6101ba6060890160408a016116bf565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b03918216602484015216604482015260640160408051808303816000875af115801561027d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a191906116dc565b91509150818360600135146102db5760405163a17e11d560e01b815260608401356004820152602481018390526044015b60405180910390fd5b60008360800135121561032157610321336103016102fc6080870135611716565b61059e565b61031160608701604088016116bf565b6001600160a01b031691906105c5565b60006040518060e0016040528085602001602081019061034191906116bf565b6001600160a01b0316815260200161035f60c0870160a088016116bf565b6001600160a01b0316815260200183815260200185604001602081019061038691906116bf565b6001600160a01b0316815260208101859052608086013560408201526060016103b560e0870160c088016116bf565b6001600160a01b0316905290506101836103d26020860186611732565b836103e060e088018861165c565b85604051602001610445919081516001600160a01b039081168252602080840151821690830152604080840151908301526060808401518216908301526080808401519083015260a0838101519083015260c092830151169181019190915260e00190565b6040516020818303038152906040526105df565b6101836000858585855b60006104718284018461181f565b90506104818682604001516107a4565b60008513158015610493575060008413155b156104b15760405163b494d17560e01b815260040160405180910390fd5b60008060008713156104cc57505060408101515185906104e3565b60008613156104e357505060408101516020015184905b6000806104f385602001516107ec565b915091506105048560000151610852565b1561052e576000610518866000015161088c565b90506105288b82338887876108c3565b50610542565b6105426001600160a01b03841633866109e9565b61054f8560200151610a10565b50505050505050505050565b428110156105855760405163041f95d160e51b8152426004820152602481018290526044016102d2565b50565b610593848484610a47565b610183848483610acf565b6000808212156105c15760405163caccb6d960e01b815260040160405180910390fd5b5090565b6105da6001600160a01b038416833084610b64565b505050565b600080600061062386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b8d92505050565b9250925092506000610636848484610bc9565b905060006106448a83610c34565b9050600060405180606001604052808a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060208082018a9052604091820186905290516106a992910161196d565b60405160208183030381529060405290506000866001600160a01b031684602001516001600160a01b0316149050600081610702576106fd600173fffd8963efd1fc6a506488495d951d5263988d266119e3565b610712565b6107126401000276a36001611a0a565b9050836001600160a01b031663128acb0830848f61072f90611716565b85886040518663ffffffff1660e01b8152600401610751959493929190611a2a565b60408051808303816000875af115801561076f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079391906116dc565b505050505050505050505050505050565b60006107b08383610c34565b9050336001600160a01b038216146105da5760405163a415aad560e01b81526001600160a01b03821660048201523360248201526044016102d2565b6000806000838060200190518101906108059190611a65565b905060006108258260c00151836020015184606001518560800151610ceb565b905081606001516108478360a0015161083d84610e21565b6102fc9190611b0a565b935093505050915091565b600061086060036014611b2a565b601461086d600382611b2a565b6108779190611b2a565b6108819190611b2a565b825110159050919050565b60606108bd61089d60036014611b2a565b6108a960036014611b2a565b84516108b59190611b3d565b849190610e4b565b92915050565b6000808760018111156108d8576108d8611b50565b14610903577f0000000000000000000000000000000000000000000000000000000000000000610925565b7f00000000000000000000000000000000000000000000000000000000000000005b905061093b6001600160a01b0384168284610f58565b604080516080810182528781526001600160a01b0387811660208301528183018790526060820185905291516304dc09a360e11b8152918316916309b813469161098791600401611b66565b6020604051808303816000875af11580156109a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ca9190611bb4565b506109e06001600160a01b038416826000610f58565b50505050505050565b6105da8282610a00866001600160a01b0316610f6c565b6001600160a01b03169190610f7d565b600081806020019051810190610a269190611a65565b80516060820151919250610a43916001600160a01b031690610fe0565b5050565b6000610a8884848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611010915050565b9050816001600160a01b0316816001600160a01b031614610183576040516339569fd760e11b81526001600160a01b038084166004830152821660248201526044016102d2565b6000610b1d84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b18925060149150879050611b3d565b611010565b9050816001600160a01b0316816001600160a01b03161461018357604051632d5a499f60e01b81526001600160a01b038084166004830152821660248201526044016102d2565b610183838383610b7c886001600160a01b0316610f6c565b6001600160a01b0316929190611075565b60008080610b9b8482611010565b9250610ba88460146110ad565b9050610bc0610bb960036014611b2a565b8590611010565b91509193909250565b6040805160608101825260008082526020820181905291810191909152826001600160a01b0316846001600160a01b03161115610c04579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600080836001811115610c4957610c49611b50565b03610ca057610c997f00000000000000000000000000000000000000000000000000000000000000007fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5484611158565b90506108bd565b610c997f00000000000000000000000000000000000000000000000000000000000000007f6ce8eb472fa82df5469c6ab6d485f17c3ad13c8cd7af59b3d4a8026c5ce0f7e284611158565b600080610d00846001600160a01b0316611218565b90506000610d16866001600160a01b0316611218565b9050610d2c6001600160a01b0387168883610f58565b866001600160a01b031663f04c31878286610d4d8a6001600160a01b031690565b6001600160a01b038a166040516001600160e01b031960e087901b168152600481019490945260248401929092526001600160a01b03908116604484015216606482015230608482015260a40160408051808303816000875af1158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc91906116dc565b50610df490506001600160a01b038716886000610f58565b600082610e09876001600160a01b0316611218565b610e139190611b3d565b93505050505b949350505050565b60006001600160ff1b038211156105c157604051631a93c68960e11b815260040160405180910390fd5b606081610e5981601f611b2a565b1015610e985760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016102d2565b610ea28284611b2a565b84511015610ee65760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016102d2565b606082158015610f055760405191506000825260208201604052610f4f565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610f3e578051835260209283019201610f26565b5050858452601f01601f1916604052505b50949350505050565b6105da6001600160a01b038416838361122d565b60006001600160a01b0382166108bd565b6040516001600160a01b0383166024820152604481018290526105da90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611321565b6000610ff4836001600160a01b0316611218565b905080156105da576105da6001600160a01b03841683836109e9565b600061101d826014611b2a565b835110156110655760405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b60448201526064016102d2565b500160200151600160601b900490565b6040516001600160a01b03808516602483015283166044820152606481018290526101839085906323b872dd60e01b90608401610fa9565b6000816110bb816003611b2a565b10156110fd5760405162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b60448201526064016102d2565b611108826003611b2a565b8351101561114f5760405162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b60448201526064016102d2565b50016003015190565b600081602001516001600160a01b031682600001516001600160a01b03161061118057600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015295901b6bffffffffffffffffffffffff191660a183015260b582019490945260d5808201939093528151808203909301835260f5019052805191012090565b60006108bd6001600160a01b038316306113f6565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b17905291519091600091829187169061128b908590611bcd565b6000604051808303816000865af19150503d80600081146112c8576040519150601f19603f3d011682016040523d82523d6000602084013e6112cd565b606091505b50915091508115806112fb57508051158015906112fb5750808060200190518101906112f99190611be9565b155b1561131957604051633e3f8f7360e01b815260040160405180910390fd5b505050505050565b6000611376826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661147d9092919063ffffffff16565b90508051600014806113975750808060200190518101906113979190611be9565b6105da5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102d2565b600061140a836001600160a01b0316610f6c565b6040516370a0823160e01b81526001600160a01b03848116600483015291909116906370a0823190602401602060405180830381865afa158015611452573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114769190611bb4565b9392505050565b6060610e19848460008585600080866001600160a01b031685876040516114a49190611bcd565b60006040518083038185875af1925050503d80600081146114e1576040519150601f19603f3d011682016040523d82523d6000602084013e6114e6565b606091505b50915091506114f787838387611502565b979650505050505050565b6060831561157157825160000361156a576001600160a01b0385163b61156a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102d2565b5081610e19565b610e1983838151156115865781518083602001fd5b8060405162461bcd60e51b81526004016102d29190611c0b565b600080600080606085870312156115b657600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156115dc57600080fd5b818701915087601f8301126115f057600080fd5b8135818111156115ff57600080fd5b88602082850101111561161157600080fd5b95989497505060200194505050565b60006020828403121561163257600080fd5b813567ffffffffffffffff81111561164957600080fd5b8201610120818503121561147657600080fd5b6000808335601e1984360301811261167357600080fd5b83018035915067ffffffffffffffff82111561168e57600080fd5b6020019150368190038213156116a357600080fd5b9250929050565b6001600160a01b038116811461058557600080fd5b6000602082840312156116d157600080fd5b8135611476816116aa565b600080604083850312156116ef57600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b820161172b5761172b611700565b5060000390565b60006020828403121561174457600080fd5b81356002811061147657600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561178c5761178c611753565b60405290565b600082601f8301126117a357600080fd5b813567ffffffffffffffff808211156117be576117be611753565b604051601f8301601f19908116603f011681019082821181831017156117e6576117e6611753565b816040528381528660208588010111156117ff57600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561183157600080fd5b813567ffffffffffffffff8082111561184957600080fd5b9083019081850360a081121561185e57600080fd5b611866611769565b83358381111561187557600080fd5b61188188828701611792565b82525060208401358381111561189657600080fd5b6118a288828701611792565b6020830152506060603f19830112156118ba57600080fd5b6118c2611769565b9250604084013591506118d4826116aa565b9082526060830135906118e6826116aa565b8160208401526080840135935062ffffff8416841461190457600080fd5b8360408401528260408201528094505050505092915050565b60005b83811015611938578181015183820152602001611920565b50506000910152565b6000815180845261195981602086016020860161191d565b601f01601f19169290920160200192915050565b602081526000825160a0602084015261198960c0840182611941565b90506020840151601f198483030160408501526119a68282611941565b60409586015180516001600160a01b03908116606088015260208201511660808701529095015162ffffff1660a090940193909352509192915050565b6001600160a01b03828116828216039080821115611a0357611a03611700565b5092915050565b6001600160a01b03818116838216019080821115611a0357611a03611700565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190526000906114f790830184611941565b600060e08284031215611a7757600080fd5b60405160e0810181811067ffffffffffffffff82111715611a9a57611a9a611753565b6040528251611aa8816116aa565b81526020830151611ab8816116aa565b6020820152604083810151908201526060830151611ad5816116aa565b806060830152506080830151608082015260a083015160a082015260c0830151611afe816116aa565b60c08201529392505050565b8181036000831280158383131683831282161715611a0357611a03611700565b808201808211156108bd576108bd611700565b818103818111156108bd576108bd611700565b634e487b7160e01b600052602160045260246000fd5b602081526000825160806020840152611b8260a0840182611941565b905060018060a01b03602085015116604084015260408401516060840152606084015160808401528091505092915050565b600060208284031215611bc657600080fd5b5051919050565b60008251611bdf81846020870161191d565b9190910192915050565b600060208284031215611bfb57600080fd5b8151801515811461147657600080fd5b602081526000611476602083018461194156fea264697066735822122025ed08dc49cc718ccc7a6168d8261ab75b8cc502dea91d75f0af8ac8d109483f64736f6c6343000819003300000000000000000000000068b3465833fb72a70ecdf485e0e4c7bd8665fc4500000000000000000000000013f4ea83d0bd40e75c8222255bc855a974568dd4