//
0x60806040523480156200001157600080fd5b50604051620022dc380380620022dc833981810160405260408110156200003757600080fd5b508051602090910151816001600160a01b038116620000885760405162461bcd60e51b815260040180806020018281038252602a81526020018062002292602a913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911781556008829055604080516060810182527386702a7f8898b172de396eb304d7d81207127915815273a00744882684c3e4747faefd68d283ea44099d0360208083019190915273490cfbf9b9c43633ddd1968d062996227ef438a992820183905291909252600080516020620022bc83398151915290526200014c907f674df3e5df8a492a5b82d4157238cd807e32d3a1f1eb870875def0834ff4b53e9060036200034b565b506040805180820190915273490cfbf9b9c43633ddd1968d062996227ef438a9815273a00744882684c3e4747faefd68d283ea44099d0360208083018290526000919091527f78eee924a4d059c77c57ed796bd8f2b770693945059608f03cc30b5f1de19e229052620001e3907f79c37329606d43985415c11ac5fc946cfba75286f84cf316d066c0bf4338907b9060026200034b565b50604080518082019091527386702a7f8898b172de396eb304d7d81207127915815273a00744882684c3e4747faefd68d283ea44099d036020808301829052600091909152600080516020620022bc833981519152905262000269907f5ecfecad827379f1c3c592717c44b353f5eb59095fb148cfaadd41962e392a879060026200034b565b50507f5a21fdc5d86618a38b29cf991b39514ec399c3112bf7a0d3735886a1a7be369580547395cb18889b968ababb9104f30af5b310bd007fd86001600160a01b031991821681179092557f6d2aa59e1b60173d8873e4caeddcdcce2979787da53b1d3ab00859260adaa7d7805482168317905573a00744882684c3e4747faefd68d283ea44099d036000527f333298b99b13ea2cd42da4f63b1662c31c09b450e96050a23220a8cc3bf769466020527f94429d1a21351b92bca05412dda5328bacac9b7a7edb10da18ae11e7bfac8dc58054909116909117905550620003df565b828054828255906000526020600020908101928215620003a3579160200282015b82811115620003a357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906200036c565b50620003b1929150620003b5565b5090565b620003dc91905b80821115620003b15780546001600160a01b0319168155600101620003bc565b90565b611ea380620003ef6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80637f477738116100b8578063a7fa43c51161007c578063a7fa43c51461045f578063b7b246b014610497578063bd2560681461049f578063cfb83718146104a7578063db972965146104af578063ec362d4a146104cc57610142565b80637f477738146103f5578063841af244146103fd5780639137c1a714610429578063975057e71461044f578063a27067f81461045757610142565b806340c8e2db1161010a57806340c8e2db1461029f5780635844c5361461035b5780635aa6e67514610363578063600c557d1461036b578063616d6858146103a15780637764b4d2146103cf57610142565b8063060e90ff14610147578063327107f71461016f5780633734d80a146101935780633adefd24146101ad5780633ddc581814610269575b600080fd5b61016d6004803603602081101561015d57600080fd5b50356001600160a01b03166104d4565b005b6101776105fc565b604080516001600160a01b039092168252519081900360200190f35b61019b61060b565b60408051918252519081900360200190f35b61016d600480360360608110156101c357600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156101f757600080fd5b82018360208201111561020957600080fd5b8035906020019184602083028401116401000000008311171561022b57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610611945050505050565b6101776004803603606081101561027f57600080fd5b506001600160a01b03813581169160208101359091169060400135610702565b61016d600480360360608110156102b557600080fd5b6001600160a01b0382358116926020810135909116918101906060810160408201356401000000008111156102e957600080fd5b8201836020820111156102fb57600080fd5b8035906020019184602083028401116401000000008311171561031d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610744945050505050565b61017761082f565b610177610847565b6101776004803603606081101561038157600080fd5b506001600160a01b038135811691602081013590911690604001356108c8565b610177600480360360408110156103b757600080fd5b506001600160a01b03813581169160200135166108ed565b61016d600480360360208110156103e557600080fd5b50356001600160a01b0316610913565b610177610a49565b61016d6004803603604081101561041357600080fd5b506001600160a01b038135169060200135610a61565b61016d6004803603602081101561043f57600080fd5b50356001600160a01b0316610ea9565b610177610fc6565b610177610fd5565b61016d6004803603606081101561047557600080fd5b506001600160a01b038135811691602081013582169160409091013516610fed565b610177611125565b610177611134565b610177611143565b61016d600480360360208110156104c557600080fd5b503561115b565b61017761128c565b600054604080516337b87c3960e21b815233600482015290516001600160a01b039092169163dee1f0e491602480820192602092909190829003018186803b15801561051f57600080fd5b505afa158015610533573d6000803e3d6000fd5b505050506040513d602081101561054957600080fd5b505161058a576040805162461bcd60e51b815260206004820152601a6024820152600080516020611e4f833981519152604482015290519081900360640190fd5b600580546001600160a01b031990811673a00744882684c3e4747faefd68d283ea44099d0317909155600780546001600160a01b03841692168217905560408051918252517f2ded10d4f4b395ed8f052edc4b9f6ae686cfc137fcb324cd84bc56e67151a0479181900360200190a150565b6004546001600160a01b031681565b60085481565b600054604080516337b87c3960e21b815233600482015290516001600160a01b039092169163dee1f0e491602480820192602092909190829003018186803b15801561065c57600080fd5b505afa158015610670573d6000803e3d6000fd5b505050506040513d602081101561068657600080fd5b50516106c7576040805162461bcd60e51b815260206004820152601a6024820152600080516020611e4f833981519152604482015290519081900360640190fd5b6001600160a01b038084166000908152600360209081526040808320938616835292815291902082516106fc92840190611cb1565b50505050565b6003602052826000526040600020602052816000526040600020818154811061072757fe5b6000918252602090912001546001600160a01b0316925083915050565b600054604080516337b87c3960e21b815233600482015290516001600160a01b039092169163dee1f0e491602480820192602092909190829003018186803b15801561078f57600080fd5b505afa1580156107a3573d6000803e3d6000fd5b505050506040513d60208110156107b957600080fd5b50516107fa576040805162461bcd60e51b815260206004820152601a6024820152600080516020611e4f833981519152604482015290519081900360640190fd5b6001600160a01b038084166000908152600160209081526040808320938616835292815291902082516106fc92840190611cb1565b73490cfbf9b9c43633ddd1968d062996227ef438a981565b60008060009054906101000a90046001600160a01b03166001600160a01b0316635aa6e6756040518163ffffffff1660e01b815260040160206040518083038186803b15801561089657600080fd5b505afa1580156108aa573d6000803e3d6000fd5b505050506040513d60208110156108c057600080fd5b505190505b90565b6001602052826000526040600020602052816000526040600020818154811061072757fe5b60026020908152600092835260408084209091529082529020546001600160a01b031681565b600054604080516337b87c3960e21b815233600482015290516001600160a01b039092169163dee1f0e491602480820192602092909190829003018186803b15801561095e57600080fd5b505afa158015610972573d6000803e3d6000fd5b505050506040513d602081101561098857600080fd5b50516109c9576040805162461bcd60e51b815260206004820152601a6024820152600080516020611e4f833981519152604482015290519081900360640190fd5b600480546001600160a01b031990811673490cfbf9b9c43633ddd1968d062996227ef438a91791829055600680546001600160a01b0385811691909316811790915560408051939092168352602083015280517f250f0cc7fc2ed10e8df5e112b69b17c584e0a8b07f66ffe24a5d03e1731193ca9281900390910190a150565b7395cb18889b968ababb9104f30af5b310bd007fd881565b6004546001600160a01b0316610a7657610ea5565b6000610a9f612710610a936008548561129b90919063ffffffff16565b9063ffffffff6112fd16565b90506000610ab3838363ffffffff61133f16565b6007549091506001600160a01b031615610cb5576005546001600160a01b0385811691161415610b0457600754610aff906001600160a01b03868116913391168563ffffffff61138116565b610cb5565b6001600160a01b038085166000908152600160209081526040808320600554909416835292815290829020805483518184028101840190945280845260609392830182828015610b7d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610b5f575b50505050509050600181511115610cb357610ba96001600160a01b03861633308663ffffffff61138116565b6001600160a01b038086166000908152600260209081526040808320600554851684529091528120549091169060609082610c61576001600160a01b03808916600090815260036020908152604080832060055490941683529281529082902080548351818402810184019094528084529091830182828015610c5557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c37575b50505050509150600190505b60008115610c7c57610c75838a89886113db565b9050610c8b565b610c88848a89886115e4565b90505b600754600554610cae916001600160a01b0391821691168363ffffffff6117fd16565b505050505b505b6004546001600160a01b0385811691161415610cf257600654610ced906001600160a01b03868116913391168463ffffffff61138116565b6106fc565b6001600160a01b038085166000908152600160209081526040808320600454909416835292815290829020805483518184028101840190945280845260609392830182828015610d6b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4d575b50505050509050600181511115610ea157610d976001600160a01b03861633308563ffffffff61138116565b6001600160a01b038086166000908152600260209081526040808320600454851684529091528120549091169060609082610e4f576001600160a01b03808916600090815260036020908152604080832060045490941683529281529082902080548351818402810184019094528084529091830182828015610e4357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e25575b50505050509150600190505b60008115610e6a57610e63838a88886113db565b9050610e79565b610e76848a88886115e4565b90505b600654600454610e9c916001600160a01b0391821691168363ffffffff6117fd16565b505050505b5050505b5050565b600054604080516337b87c3960e21b815233600482015290516001600160a01b039092169163dee1f0e491602480820192602092909190829003018186803b158015610ef457600080fd5b505afa158015610f08573d6000803e3d6000fd5b505050506040513d6020811015610f1e57600080fd5b5051610f5f576040805162461bcd60e51b815260206004820152601a6024820152600080516020611e4f833981519152604482015290519081900360640190fd5b6001600160a01b038116610fa45760405162461bcd60e51b815260040180806020018281038252602a815260200180611d3b602a913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b7386702a7f8898b172de396eb304d7d8120712791581565b600054604080516337b87c3960e21b815233600482015290516001600160a01b039092169163dee1f0e491602480820192602092909190829003018186803b15801561103857600080fd5b505afa15801561104c573d6000803e3d6000fd5b505050506040513d602081101561106257600080fd5b50516110a3576040805162461bcd60e51b815260206004820152601a6024820152600080516020611e4f833981519152604482015290519081900360640190fd5b6001600160a01b0381166110e85760405162461bcd60e51b815260040180806020018281038252602e815260200180611dc1602e913960400191505060405180910390fd5b6001600160a01b03928316600090815260026020908152604080832094861683529390529190912080546001600160a01b03191691909216179055565b6007546001600160a01b031681565b6005546001600160a01b031681565b73a00744882684c3e4747faefd68d283ea44099d0381565b600054604080516337b87c3960e21b815233600482015290516001600160a01b039092169163dee1f0e491602480820192602092909190829003018186803b1580156111a657600080fd5b505afa1580156111ba573d6000803e3d6000fd5b505050506040513d60208110156111d057600080fd5b5051611211576040805162461bcd60e51b815260206004820152601a6024820152600080516020611e4f833981519152604482015290519081900360640190fd5b61271081106112515760405162461bcd60e51b815260040180806020018281038252603b815260200180611d65603b913960400191505060405180910390fd5b60088190556040805182815290517f665eca0a61ae78721823ec5b4514c3b1a357fa0f52fc199dd7d45891e28f80049181900360200190a150565b6006546001600160a01b031681565b6000826112aa575060006112f7565b828202828482816112b757fe5b04146112f45760405162461bcd60e51b8152600401808060200182810382526021815260200180611da06021913960400191505060405180910390fd5b90505b92915050565b60006112f483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611854565b60006112f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506118f6565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790526106fc908590611950565b6000805b85518110156115db5760008682815181106113f657fe5b602002602001015190506060600260405190808252806020026020018201604052801561142d578160200160208202803883390190505b50905084838151811061143c57fe5b60200260200101518160008151811061145157fe5b60200260200101906001600160a01b031690816001600160a01b03168152505084836001018151811061148057fe5b60200260200101518160018151811061149557fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506000816000815181106114c457fe5b602002602001015190506000886001600160a01b0316826001600160a01b031614156114f1575086611566565b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561153757600080fd5b505afa15801561154b573d6000803e3d6000fd5b505050506040513d602081101561156157600080fd5b505190505b8660018851038151811061157657fe5b60200260200101516001600160a01b03168360018151811061159457fe5b60200260200101516001600160a01b0316146115bc576115b6848383866115e4565b506115cb565b6115c8848383866115e4565b95505b5050600190920191506113df9050565b50949350505050565b60006116006001600160a01b038516868363ffffffff611b0816565b61161a6001600160a01b038516868563ffffffff611b0816565b60606001600160a01b0386166305a1450d85600086306116424261025863ffffffff611c1b16565b60006040518763ffffffff1660e01b81526004018087815260200186815260200180602001856001600160a01b03166001600160a01b03168152602001848152602001836001600160a01b03166001600160a01b03168152602001828103825286818151815260200191508051906020019060200280838360005b838110156116d55781810151838201526020016116bd565b50505050905001975050505050505050600060405180830381600087803b1580156116ff57600080fd5b505af1158015611713573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561173c57600080fd5b810190808051604051939291908464010000000082111561175c57600080fd5b90830190602082018581111561177157600080fd5b825186602082028301116401000000008211171561178e57600080fd5b82525081516020918201928201910280838360005b838110156117bb5781810151838201526020016117a3565b505050509050016040525050509050806117e06001835161133f90919063ffffffff16565b815181106117ea57fe5b6020026020010151915050949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261184f908490611950565b505050565b600081836118e05760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156118a557818101518382015260200161188d565b50505050905090810190601f1680156118d25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816118ec57fe5b0495945050505050565b600081848411156119485760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156118a557818101518382015260200161188d565b505050900390565b611962826001600160a01b0316611c75565b6119b3576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106119f15780518252601f1990920191602091820191016119d2565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a53576040519150601f19603f3d011682016040523d82523d6000602084013e611a58565b606091505b509150915081611aaf576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156106fc57808060200190516020811015611acb57600080fd5b50516106fc5760405162461bcd60e51b815260040180806020018281038252602a815260200180611def602a913960400191505060405180910390fd5b801580611b8e575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611b6057600080fd5b505afa158015611b74573d6000803e3d6000fd5b505050506040513d6020811015611b8a57600080fd5b5051155b611bc95760405162461bcd60e51b8152600401808060200182810382526036815260200180611e196036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261184f908490611950565b6000828201838110156112f4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611ca957508115155b949350505050565b828054828255906000526020600020908101928215611d06579160200282015b82811115611d0657825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611cd1565b50611d12929150611d16565b5090565b6108c591905b80821115611d125780546001600160a01b0319168155600101611d1c56fe476f7665726e61626c653a204e65772073746f726167652073686f756c646e277420626520656d707479466565526577617264466f727761726465723a2066756e644e756d657261746f722063616e6e6f7420676f206f766572207468652031303030302e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77466565526577617264466f727761726465723a2054686520726f757465722063616e6e6f7420626520656d7074795361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365476f7665726e61626c653a204e6f7420676f7665726e616e6365000000000000a265627a7a7231582033c5f76302bb8fbec23e5cab4e50a051952a888979436526e47af327af498aaf64736f6c63430005100032476f7665726e61626c653a204e65772073746f726167652073686f756c646e277420626520656d707479f7f3c52d22187fe55647f0ac04b624b0c552b1ce9eb8f67a3d037a94021ad43f000000000000000000000000be805a70b16b3e15c8666dfebe1d74517037abf50000000000000000000000000000000000000000000000000000000000000001