0x60a06040523060805234801561001457600080fd5b5061001f6001610024565b610076565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60805161206e6100bb600039600081816105120152818161055201528181610a5f01528181610a9f01528181610b3901528181610b790152610bf5015261206e6000f3fe6080604052600436106101085760003560e01c8063715018a6116100955780638f283970116100645780638f2839701461029557806391aa880c146102b5578063a797533d146102d5578063e78cea921461030e578063f2fde38b1461032e57600080fd5b8063715018a61461022d578063726dc60b146102425780638456cb59146102625780638da5cb5b1461027757600080fd5b80633659cfe6116100dc5780633659cfe61461019f5780633f4ba83a146101bf5780634f1ef286146101d457806352d1902d146101e75780635c975abb1461020a57600080fd5b80620cc9e61461010d57806303bdcfc91461014a578063073aec9a1461016c5780631806b5f21461018c575b600080fd5b34801561011957600080fd5b5060fc5461012d906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561015657600080fd5b5061016a610165366004611a15565b61034e565b005b34801561017857600080fd5b5061016a610187366004611a70565b610508565b61016a61019a366004611b93565b6108c3565b3480156101ab57600080fd5b5061016a6101ba366004611bf3565b610a55565b3480156101cb57600080fd5b5061016a610b1d565b61016a6101e2366004611c10565b610b2f565b3480156101f357600080fd5b506101fc610be8565b604051908152602001610141565b34801561021657600080fd5b5060655460ff166040519015158152602001610141565b34801561023957600080fd5b5061016a610c9b565b34801561024e57600080fd5b5061016a61025d366004611c60565b610cad565b34801561026e57600080fd5b5061016a610ce5565b34801561028357600080fd5b506033546001600160a01b031661012d565b3480156102a157600080fd5b5061016a6102b0366004611bf3565b610cf5565b3480156102c157600080fd5b5060fd5461012d906001600160a01b031681565b3480156102e157600080fd5b5060fb546102f990600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610141565b34801561031a57600080fd5b5060fb5461012d906001600160a01b031681565b34801561033a57600080fd5b5061016a610349366004611bf3565b610d8b565b610356610e01565b6001600160a01b0383166103a45760405162461bcd60e51b815260206004820152601060248201526f24a72b20a624a22fa922a1a2a4ab22a960811b60448201526064015b60405180910390fd5b60fd546103bc906001600160a01b0316333085610e47565b60fd54604051630852cd8d60e31b8152600481018490526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561040257600080fd5b505af1158015610416573d6000803e3d6000fd5b5050604080516001600160a01b038716602082015290810185905260009250606001905060408051808303601f190181529082905260fb5460fc54630481fe6f60e31b84529193506001600160a01b038082169363240ff3789361049093600160a01b900463ffffffff1692169087908790600401611d4f565b600060405180830381600087803b1580156104aa57600080fd5b505af11580156104be573d6000803e3d6000fd5b50506040518581526001600160a01b03871692503391507f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9060200160405180910390a350505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105505760405162461bcd60e51b815260040161039b90611d87565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610582610ea7565b6001600160a01b0316146105a85760405162461bcd60e51b815260040161039b90611dd3565b6105b0610ec8565b6001600160a01b0316336001600160a01b0316146105e05760405162461bcd60e51b815260040161039b90611e1f565b600054610100900460ff16158080156106005750600054600160ff909116105b8061061a5750303b15801561061a575060005460ff166001145b61067d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161039b565b6000805460ff1916600117905580156106a0576000805461ff0019166101001790555b6001600160a01b0385166106e75760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f42524944474560901b604482015260640161039b565b6001600160a01b0383166107305760405162461bcd60e51b815260206004820152601060248201526f494e56414c49445f4c31455343524f5760801b604482015260640161039b565b6001600160a01b0382166107775760405162461bcd60e51b815260206004820152600e60248201526d494e56414c49445f555344435f4560901b604482015260640161039b565b6001600160a01b0387166107bd5760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015260640161039b565b6001600160a01b0386166108035760405162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa0a226a4a760991b604482015260640161039b565b61080b610ef0565b61081487610f2f565b61081d86610f81565b60fb80546001600160a01b038781166001600160c01b031990921691909117600160a01b63ffffffff8816021790915560fc80546001600160a01b03199081168684161790915560fd805490911691841691909117905580156108ba576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050565b6108cb610e01565b60fb546001600160a01b031633146109125760405162461bcd60e51b815260206004820152600a6024820152694e4f545f42524944474560b01b604482015260640161039b565b60fc546001600160a01b038481169116146109685760405162461bcd60e51b81526020600482015260166024820152751393d517d30c57d154d0d493d5d7d0d3d395149050d560521b604482015260640161039b565b60fb5463ffffffff838116600160a01b90920416146109b85760405162461bcd60e51b815260206004820152600c60248201526b2727aa2fa618afa1a420a4a760a11b604482015260640161039b565b600080828060200190518101906109cf9190611e42565b60fd546040516340c10f1960e01b81526001600160a01b0380851660048301526024820184905293955091935091909116906340c10f19906044016020604051808303816000875af1158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d9190611e70565b505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a9d5760405162461bcd60e51b815260040161039b90611d87565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610acf610ea7565b6001600160a01b031614610af55760405162461bcd60e51b815260040161039b90611dd3565b610afe81610fd5565b60408051600080825260208201909252610b1a9183919061100d565b50565b610b2561117d565b610b2d6111d7565b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610b775760405162461bcd60e51b815260040161039b90611d87565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610ba9610ea7565b6001600160a01b031614610bcf5760405162461bcd60e51b815260040161039b90611dd3565b610bd882610fd5565b610be48282600161100d565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610c885760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161039b565b50600080516020611ff283398151915290565b610ca361117d565b610b2d6000610f2f565b610cb5610e01565b8015610cd35760fd54610cd3906001600160a01b0316858484611229565b610cde85858561034e565b5050505050565b610ced61117d565b610b2d6113eb565b610cfd610ec8565b6001600160a01b0316336001600160a01b031614610d2d5760405162461bcd60e51b815260040161039b90611e1f565b610d35610ec8565b6001600160a01b0316816001600160a01b031603610d825760405162461bcd60e51b815260206004820152600a60248201526929a0a6a2afa0a226a4a760b11b604482015260640161039b565b610b1a81610f81565b610d9361117d565b6001600160a01b038116610df85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161039b565b610b1a81610f2f565b60655460ff1615610b2d5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161039b565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ea1908590611428565b50505050565b6000600080516020611ff28339815191525b546001600160a01b0316919050565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103610eb9565b600054610100900460ff16610f175760405162461bcd60e51b815260040161039b90611e8d565b610f1f6114fd565b610f2761152c565b610b2d61155b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610faa610ec8565b604080516001600160a01b03928316815291841660208301520160405180910390a1610b1a81611582565b610fdd610ec8565b6001600160a01b0316336001600160a01b031614610b1a5760405162461bcd60e51b815260040161039b90611e1f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611045576110408361162b565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561109f575060408051601f3d908101601f1916820190925261109c91810190611ed8565b60015b6111025760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161039b565b600080516020611ff283398151915281146111715760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161039b565b506110408383836116ad565b6033546001600160a01b03163314610b2d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039b565b6111df6116d2565b6065805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b63d505accf60e01b61123f600460008486611ef1565b61124891611f1b565b6001600160e01b0319161461127057604051637eb349ff60e11b815260040160405180910390fd5b6000808080808080611285886004818c611ef1565b8101906112929190611f4b565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146112d25760405163912ecce760e01b815260040160405180910390fd5b6001600160a01b03861630146112fb5760405163750643af60e01b815260040160405180910390fd5b89851461131b576040516303fffc4b60e01b815260040160405180910390fd5b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918d16916113999190611fc2565b6000604051808303816000865af19150503d80600081146113d6576040519150601f19603f3d011682016040523d82523d6000602084013e6113db565b606091505b5050505050505050505050505050565b6113f3610e01565b6065805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861120c3390565b600061147d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661171b9092919063ffffffff16565b905080516000148061149e57508080602001905181019061149e9190611e70565b6110405760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161039b565b600054610100900460ff166115245760405162461bcd60e51b815260040161039b90611e8d565b610b2d611732565b600054610100900460ff166115535760405162461bcd60e51b815260040161039b90611e8d565b610b2d611762565b600054610100900460ff16610b2d5760405162461bcd60e51b815260040161039b90611e8d565b6001600160a01b0381166115e75760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161039b565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381163b6116985760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161039b565b80600080516020611ff283398151915261160a565b6116b683611795565b6000825111806116c35750805b1561104057610ea183836117d5565b60655460ff16610b2d5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161039b565b606061172a8484600085611801565b949350505050565b600054610100900460ff166117595760405162461bcd60e51b815260040161039b90611e8d565b610b2d33610f2f565b600054610100900460ff166117895760405162461bcd60e51b815260040161039b90611e8d565b6065805460ff19169055565b61179e8161162b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606117fa8383604051806060016040528060278152602001612012602791396118dc565b9392505050565b6060824710156118625760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161039b565b600080866001600160a01b0316858760405161187e9190611fc2565b60006040518083038185875af1925050503d80600081146118bb576040519150601f19603f3d011682016040523d82523d6000602084013e6118c0565b606091505b50915091506118d187838387611954565b979650505050505050565b6060600080856001600160a01b0316856040516118f99190611fc2565b600060405180830381855af49150503d8060008114611934576040519150601f19603f3d011682016040523d82523d6000602084013e611939565b606091505b509150915061194a86838387611954565b9695505050505050565b606083156119c35782516000036119bc576001600160a01b0385163b6119bc5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161039b565b508161172a565b61172a83838151156119d85781518083602001fd5b8060405162461bcd60e51b815260040161039b9190611fde565b6001600160a01b0381168114610b1a57600080fd5b8015158114610b1a57600080fd5b600080600060608486031215611a2a57600080fd5b8335611a35816119f2565b9250602084013591506040840135611a4c81611a07565b809150509250925092565b803563ffffffff81168114611a6b57600080fd5b919050565b60008060008060008060c08789031215611a8957600080fd5b8635611a94816119f2565b95506020870135611aa4816119f2565b94506040870135611ab4816119f2565b9350611ac260608801611a57565b92506080870135611ad2816119f2565b915060a0870135611ae2816119f2565b809150509295509295509295565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611b1757600080fd5b813567ffffffffffffffff80821115611b3257611b32611af0565b604051601f8301601f19908116603f01168101908282118183101715611b5a57611b5a611af0565b81604052838152866020858801011115611b7357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215611ba857600080fd5b8335611bb3816119f2565b9250611bc160208501611a57565b9150604084013567ffffffffffffffff811115611bdd57600080fd5b611be986828701611b06565b9150509250925092565b600060208284031215611c0557600080fd5b81356117fa816119f2565b60008060408385031215611c2357600080fd5b8235611c2e816119f2565b9150602083013567ffffffffffffffff811115611c4a57600080fd5b611c5685828601611b06565b9150509250929050565b600080600080600060808688031215611c7857600080fd5b8535611c83816119f2565b9450602086013593506040860135611c9a81611a07565b9250606086013567ffffffffffffffff80821115611cb757600080fd5b818801915088601f830112611ccb57600080fd5b813581811115611cda57600080fd5b896020828501011115611cec57600080fd5b9699959850939650602001949392505050565b60005b83811015611d1a578181015183820152602001611d02565b50506000910152565b60008151808452611d3b816020860160208601611cff565b601f01601f19169290920160200192915050565b63ffffffff851681526001600160a01b0384166020820152821515604082015260806060820181905260009061194a90830184611d23565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252600990820152682727aa2fa0a226a4a760b91b604082015260600190565b60008060408385031215611e5557600080fd5b8251611e60816119f2565b6020939093015192949293505050565b600060208284031215611e8257600080fd5b81516117fa81611a07565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600060208284031215611eea57600080fd5b5051919050565b60008085851115611f0157600080fd5b83861115611f0e57600080fd5b5050820193919092039150565b6001600160e01b03198135818116916004851015611f435780818660040360031b1b83161692505b505092915050565b600080600080600080600060e0888a031215611f6657600080fd5b8735611f71816119f2565b96506020880135611f81816119f2565b95506040880135945060608801359350608088013560ff81168114611fa557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008251611fd4818460208701611cff565b9190910192915050565b6020815260006117fa6020830184611d2356fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220acb1d63baa8f23b63ca2a86ec2fbacf35cdb56a4be6dfecaef2fe9c1ffc1ba9e64736f6c63430008110033