60806040523480156200001157600080fd5b50604080518082018252600b81526a11985b594811db1bd8985b60aa1b6020808301919091528251808401909352600583526446414d454760d81b908301526000805460ff19169055906200006633620000c2565b62000071336200011b565b600a6200007f8382620002da565b50600b6200008e8282620002da565b505050620000b8620000a5620000be60201b60201c565b6b033b2e3c9fd0803ce80000006200016d565b620003ce565b3390565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907facf6a327286171e5ce7f9bf15425ff49aab0fd07752fec84b2bd232c9f480c1790600090a35050565b6001600160a01b038216620001c85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060096000828254620001dc9190620003a6565b90915550506001600160a01b0382166000818152600760209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200026057607f821691505b6020821081036200028157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002d557600081815260208120601f850160051c81016020861015620002b05750805b601f850160051c820191505b81811015620002d157828155600101620002bc565b5050505b505050565b81516001600160401b03811115620002f657620002f662000235565b6200030e816200030784546200024b565b8462000287565b602080601f8311600181146200034657600084156200032d5750858301515b600019600386901b1c1916600185901b178555620002d1565b600085815260208120601f198616915b82811015620003775788860151825594840194600190910190840162000356565b5085821015620003965787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620003c857634e487b7160e01b600052601160045260246000fd5b92915050565b61268a80620003de6000396000f3fe608060405234801561001057600080fd5b50600436106102535760003560e01c806370a0823111610146578063a9059cbb116100c3578063c47a784c11610087578063c47a784c146105b7578063ce62cd4a146105ca578063dd62ed3e146105dd578063f2fde38b146105f0578063f44637ba14610603578063f99a2ca01461061657600080fd5b8063a9059cbb1461054d578063ab0de0fe14610560578063b0a087c514610573578063ba40c71a1461057b578063be4329f4146105a457600080fd5b80638980f11f1161010a5780638980f11f146104f65780638d1fdf2f146105095780638da5cb5b1461051c57806395d89b4114610532578063a457c2d71461053a57600080fd5b806370a082311461047e578063715018a6146104a75780638111f24e146104af5780638456cb59146104db578063854d9ffe146104e357600080fd5b806339509351116101d457806345cc58901161019857806345cc5890146104005780634ca47ad11461041357806356e4b68b1461043b5780635c975abb146104605780636f395c831461046b57600080fd5b806339509351146103935780633f4ba83a146103a657806342966c68146103ae5780634334614a146103c157806345c8b1a6146103ed57600080fd5b806319651dbf1161021b57806319651dbf146102d357806323b872dd146103325780632ec63d7c14610345578063313ce56714610371578063363b3c151461038057600080fd5b8063028468581461025857806306fdde031461026d578063095ea7b31461028b5780630d605482146102ae57806318160ddd146102c1575b600080fd5b61026b610266366004612280565b610629565b005b610275610691565b60405161028291906122a2565b60405180910390f35b61029e6102993660046122f0565b610723565b6040519015158152602001610282565b61026b6102bc36600461231a565b61073d565b6009545b604051908152602001610282565b6103126102e1366004612280565b6001600160a01b03166000908152600660205260409020805460018201546002830154600390930154919390929190565b604080519485526020850193909352918301526060820152608001610282565b61029e61034036600461234d565b61079f565b61029e610353366004612280565b6001600160a01b031660009081526004602052604090205460ff1690565b60405160128152602001610282565b61026b61038e366004612280565b6107c3565b61029e6103a13660046122f0565b610888565b61026b6108aa565b61026b6103bc366004612389565b61092d565b61029e6103cf366004612280565b6001600160a01b031660009081526002602052604090205460ff1690565b61026b6103fb366004612280565b6109c4565b61026b61040e366004612280565b610a1a565b6104266104213660046123a2565b610a76565b60408051928352602083019190915201610282565b6001546001600160a01b03165b6040516001600160a01b039091168152602001610282565b60005460ff1661029e565b61026b6104793660046123a2565b610b6e565b6102c561048c366004612280565b6001600160a01b031660009081526007602052604090205490565b61026b610bc9565b61029e6104bd366004612280565b6001600160a01b031660009081526003602052604090205460ff1690565b61026b610c26565b6102c56104f1366004612280565b610c81565b61026b6105043660046122f0565b610c9f565b61026b610517366004612280565b610d67565b60005461010090046001600160a01b0316610448565b610275610dc3565b61029e6105483660046122f0565b610dd2565b61029e61055b3660046122f0565b610e4d565b6102c561056e366004612280565b610e5b565b61026b610f27565b6102c5610589366004612280565b6001600160a01b031660009081526005602052604090205490565b6102c56105b2366004612280565b610f7e565b61026b6105c53660046123df565b61104b565b61026b6105d8366004612280565b6110ce565b6102c56105eb366004612418565b61112a565b61026b6105fe366004612280565b611155565b61026b610611366004612280565b611216565b61026b610624366004612280565b611272565b6000546001600160a01b036101009091041633146106625760405162461bcd60e51b81526004016106599061244b565b60405180910390fd5b60005460ff16156106855760405162461bcd60e51b815260040161065990612480565b61068e816112c8565b50565b6060600a80546106a0906124aa565b80601f01602080910402602001604051908101604052809291908181526020018280546106cc906124aa565b80156107195780601f106106ee57610100808354040283529160200191610719565b820191906000526020600020905b8154815290600101906020018083116106fc57829003601f168201915b5050505050905090565b600033610731818585611311565b60019150505b92915050565b3360009081526004602052604090205460ff1661076c5760405162461bcd60e51b8152600401610659906124e4565b60005460ff161561078f5760405162461bcd60e51b815260040161065990612480565b61079a838383611436565b505050565b6000336107ad85828561154d565b6107b88585856115c1565b506001949350505050565b6001546001600160a01b031633146107ed5760405162461bcd60e51b815260040161065990612526565b60005460ff16156108105760405162461bcd60e51b815260040161065990612480565b6001600160a01b03811661087f5760405162461bcd60e51b815260206004820152603060248201527f537570657276697361626c653a206e65772073757065727669736f722069732060448201526f746865207a65726f206164647265737360801b6064820152608401610659565b61068e81611778565b60003361073181858561089b838361112a565b6108a59190612586565b611311565b6000546001600160a01b036101009091041633146108da5760405162461bcd60e51b81526004016106599061244b565b60005460ff166109235760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610659565b61092b6117ca565b565b3360009081526002602052604090205460ff166109975760405162461bcd60e51b815260206004820152602260248201527f4275726e61626c653a2063616c6c6572206973206e6f7420746865206275726e60448201526132b960f11b6064820152608401610659565b60005460ff16156109ba5760405162461bcd60e51b815260040161065990612480565b61068e338261185d565b6001546001600160a01b031633146109ee5760405162461bcd60e51b815260040161065990612526565b60005460ff1615610a115760405162461bcd60e51b815260040161065990612480565b61068e81611989565b6000546001600160a01b03610100909104163314610a4a5760405162461bcd60e51b81526004016106599061244b565b60005460ff1615610a6d5760405162461bcd60e51b815260040161065990612480565b61068e816119d2565b6001600160a01b038216600090815260056020526040812054819060ff8416108015610aa0575060015b610ae65760405162461bcd60e51b81526020600482015260176024820152760a8d2daca98dec6d67440d2dcecc2d8d2c840d2dcc8caf604b1b6044820152606401610659565b6001600160a01b0384166000908152600560205260409020805460ff8516908110610b1357610b13612599565b600091825260208083206002909202909101546001600160a01b038716835260059091526040909120805460ff8616908110610b5157610b51612599565b906000526020600020906002020160010154915091509250929050565b6001546001600160a01b03163314610b985760405162461bcd60e51b815260040161065990612526565b60005460ff1615610bbb5760405162461bcd60e51b815260040161065990612480565b610bc58282611a1e565b5050565b6000546001600160a01b03610100909104163314610bf95760405162461bcd60e51b81526004016106599061244b565b60005460ff1615610c1c5760405162461bcd60e51b815260040161065990612480565b61092b6000611bcf565b6000546001600160a01b03610100909104163314610c565760405162461bcd60e51b81526004016106599061244b565b60005460ff1615610c795760405162461bcd60e51b815260040161065990612480565b61092b611c28565b6000610c8c82610e5b565b610c9583610f7e565b6107379190612586565b6000546001600160a01b03610100909104163314610ccf5760405162461bcd60e51b81526004016106599061244b565b816001600160a01b031663a9059cbb610cf66000546001600160a01b036101009091041690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d43573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079a91906125af565b6000546001600160a01b03610100909104163314610d975760405162461bcd60e51b81526004016106599061244b565b60005460ff1615610dba5760405162461bcd60e51b815260040161065990612480565b61068e81611c80565b6060600b80546106a0906124aa565b60003381610de0828661112a565b905083811015610e405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610659565b6107b88286868403611311565b6000336107318185856115c1565b6001600160a01b03811660009081526006602052604081205481908015610f20576001600160a01b0384166000908152600660205260408120600180820154600283015460039093015490939091610eb390836125d1565b610ebd90846125e4565b610ec79085612586565b90504284811015610eda57859650610f1a565b81811015610f1a578284610eee83856125d1565b610ef89190612603565b610f03906001612586565b610f0d90886125e4565b610f179190612603565b96505b50505050505b5092915050565b6001546001600160a01b03163314610f515760405162461bcd60e51b815260040161065990612526565b60005460ff1615610f745760405162461bcd60e51b815260040161065990612480565b61092b6000611778565b6001600160a01b0381166000908152600560205260408120548190815b81811015611042576001600160a01b0385166000908152600560205260409020805482908110610fcd57610fcd612599565b906000526020600020906002020160010154421015611030576001600160a01b038516600090815260056020526040902080548290811061101057611010612599565b9060005260206000209060020201600001548361102d9190612586565b92505b8061103a81612625565b915050610f9b565b50909392505050565b3360009081526004602052604090205460ff1661107a5760405162461bcd60e51b8152600401610659906124e4565b60005460ff161561109d5760405162461bcd60e51b815260040161065990612480565b6110c8846110c0866001600160a01b031660009081526007602052604090205490565b858585611ccc565b50505050565b6000546001600160a01b036101009091041633146110fe5760405162461bcd60e51b81526004016106599061244b565b60005460ff16156111215760405162461bcd60e51b815260040161065990612480565b61068e81611ef4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6000546001600160a01b036101009091041633146111855760405162461bcd60e51b81526004016106599061244b565b60005460ff16156111a85760405162461bcd60e51b815260040161065990612480565b6001600160a01b03811661120d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610659565b61068e81611bcf565b6000546001600160a01b036101009091041633146112465760405162461bcd60e51b81526004016106599061244b565b60005460ff16156112695760405162461bcd60e51b815260040161065990612480565b61068e81611f3d565b6001546001600160a01b0316331461129c5760405162461bcd60e51b815260040161065990612526565b60005460ff16156112bf5760405162461bcd60e51b815260040161065990612480565b61068e81611f89565b6001600160a01b038116600081815260026020526040808220805460ff19169055517f90eabbc0c667db2a5029ed6bc0f5fe9f356d11684a4ca9fcfaec0e53f12b9c8e9190a250565b6001600160a01b0383166113735760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610659565b6001600160a01b0382166113d45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610659565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600082116114865760405162461bcd60e51b815260206004820152601a60248201527f54696d654c6f636b3a206c6f636b20616d6f756e7420697320300000000000006044820152606401610659565b4281116114d55760405162461bcd60e51b815260206004820152601d60248201527f54696d654c6f636b3a20696e76616c69642065787069726520646174650000006044820152606401610659565b6001600160a01b0383166000818152600560209081526040808320815180830183528781528084018781528254600181810185559387529486209151600290950290910193845551920191909155517fc80fbc3452298019908587d820303825af4187ac57ed90d7328886fd00b225579190a2505050565b6000611559848461112a565b905060001981146110c857818110156115b45760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610659565b6110c88484848403611311565b6001600160a01b0383166116255760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610659565b6001600160a01b0382166116875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610659565b611692838383612007565b6001600160a01b0383166000908152600760205260409020548181101561170a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610659565b6001600160a01b0380851660008181526007602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061176a9086815260200190565b60405180910390a350505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907facf6a327286171e5ce7f9bf15425ff49aab0fd07752fec84b2bd232c9f480c1790600090a35050565b60005460ff166118135760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610659565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0382166118bd5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610659565b6001600160a01b038216600090815260076020526040902054818110156119315760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610659565b6001600160a01b03831660008181526007602090815260408083208686039055600980548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611429565b6001600160a01b038116600081815260036020526040808220805460ff19169055517f4d1fe3cc0f516ce2cfc5e83d52ee28af7f55376b18f58e7081c5fd25d8eeb1df9190a250565b6001600160a01b038116600081815260046020526040808220805460ff19166001179055517f7c5af8d36d8be103bc583da8e01d3e98f15216cc7ef38832c7550b34e8feb43a9190a250565b6001600160a01b03821660009081526005602052604090205460ff8216108015611a46575060015b611a8c5760405162461bcd60e51b81526020600482015260176024820152760a8d2daca98dec6d67440d2dcecc2d8d2c840d2dcc8caf604b1b6044820152606401610659565b6001600160a01b03821660009081526005602052604090205460ff8216611ab46001836125d1565b14611b52576001600160a01b0383166000908152600560205260409020611adc6001836125d1565b81548110611aec57611aec612599565b906000526020600020906002020160056000856001600160a01b03166001600160a01b031681526020019081526020016000208360ff1681548110611b3357611b33612599565b6000918252602090912082546002909202019081556001918201549101555b6001600160a01b0383166000908152600560205260409020805480611b7957611b7961263e565b60008281526020812060026000199093019283020181815560010181905591556040516001600160a01b038516917fb34baa9e1ce392292123bbdca3018904b21991f7411e14d99a10aaf88ec8ea0d91a2505050565b600080546001600160a01b03838116610100818102610100600160a81b0319851617855560405193049190911692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35050565b60005460ff1615611c4b5760405162461bcd60e51b815260040161065990612480565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586118403390565b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517f0de8364a528e5ca2869160b20c375fe85b4e98d24a9cb48b4dc49c5f76d05b249190a250565b6001600160a01b038516611d325760405162461bcd60e51b815260206004820152602760248201527f56657374696e674c6f636b3a206c6f636b2066726f6d20746865207a65726f206044820152666164647265737360c81b6064820152608401610659565b428311611d815760405162461bcd60e51b815260206004820152601f60248201527f56657374696e674c6f636b3a206d75737420736574206166746572206e6f77006044820152606401610659565b60008411611dd15760405162461bcd60e51b815260206004820152601860248201527f56657374696e674c6f636b3a20616d6f756e74206973203000000000000000006044820152606401610659565b60008211611e215760405162461bcd60e51b815260206004820152601860248201527f56657374696e674c6f636b3a20706572696f64206973203000000000000000006044820152606401610659565b60008111611e715760405162461bcd60e51b815260206004820152601760248201527f56657374696e674c6f636b3a20636f756e7420697320300000000000000000006044820152606401610659565b604080516080810182528581526020808201868152828401868152606084018681526001600160a01b038b166000818152600690955286852095518655925160018601559051600285015551600390930192909255915190917f04a72c810da52db1f0e22421438d411667cd0c1559e9ae7c638f1aed4bfa066d91a25050505050565b6001600160a01b038116600081815260046020526040808220805460ff19169055517f95266445d018e5b30f957c915e91b04bb4a19bf0f8f21020a08dad9be7931df49190a250565b6001600160a01b038116600081815260026020526040808220805460ff19166001179055517f86e57fd2b90329052917118de7c3f521f400d439b9650deaa906a25b08b945609190a250565b6040805160808101825260008082526020808301828152838501838152606085018481526001600160a01b0388168086526006909452868520955186559151600186015551600285015551600390930192909255915190917ff71e9d23ff58e708ca92807894c580d899e97ab5bacc17df3543475e0e439f8491a250565b6001600160a01b03831660009081526003602052604090205460ff16156120875760405162461bcd60e51b815260206004820152602e60248201527f467265657a61626c653a20746f6b656e207472616e736665722066726f6d206660448201526d1c99595e9959081858d8dbdd5b9d60921b6064820152608401610659565b6001600160a01b03821660009081526003602052604090205460ff16156121055760405162461bcd60e51b815260206004820152602c60248201527f467265657a61626c653a20746f6b656e207472616e7366657220746f2066726560448201526b195e9959081858d8dbdd5b9d60a21b6064820152608401610659565b61210e336104bd565b156121795760405162461bcd60e51b815260206004820152603560248201527f467265657a61626c653a20746f6b656e207472616e736665722063616c6c656460448201527408199c9bdb48199c99595e9959081858d8dbdd5b9d605a1b6064820152608401610659565b60005460ff16156121da5760405162461bcd60e51b815260206004820152602560248201527f5061757361626c653a20746f6b656e207472616e73666572207768696c652070604482015264185d5cd95960da1b6064820152608401610659565b806121e484610c81565b6001600160a01b03851660009081526007602052604090205461220791906125d1565b101561079a5760405162461bcd60e51b815260206004820152602660248201527f4c6f636b61626c653a20696e73756666696369656e74207472616e7366657220604482015265185b5bdd5b9d60d21b6064820152608401610659565b80356001600160a01b038116811461227b57600080fd5b919050565b60006020828403121561229257600080fd5b61229b82612264565b9392505050565b600060208083528351808285015260005b818110156122cf578581018301518582016040015282016122b3565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561230357600080fd5b61230c83612264565b946020939093013593505050565b60008060006060848603121561232f57600080fd5b61233884612264565b95602085013595506040909401359392505050565b60008060006060848603121561236257600080fd5b61236b84612264565b925061237960208501612264565b9150604084013590509250925092565b60006020828403121561239b57600080fd5b5035919050565b600080604083850312156123b557600080fd5b6123be83612264565b9150602083013560ff811681146123d457600080fd5b809150509250929050565b600080600080608085870312156123f557600080fd5b6123fe85612264565b966020860135965060408601359560600135945092505050565b6000806040838503121561242b57600080fd5b61243483612264565b915061244260208401612264565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b600181811c908216806124be57607f821691505b6020821081036124de57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f4c6f636b61626c653a2063616c6c6572206973206e6f7420746865206c6f636b60408201526132b960f11b606082015260800190565b6020808252602a908201527f537570657276697361626c653a2063616c6c6572206973206e6f74207468652060408201526939bab832b93b34b9b7b960b11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561073757610737612570565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125c157600080fd5b8151801515811461229b57600080fd5b8181038181111561073757610737612570565b60008160001904831182151516156125fe576125fe612570565b500290565b60008261262057634e487b7160e01b600052601260045260246000fd5b500490565b60006001820161263757612637612570565b5060010190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212209e745cf95f09633579440fa010ef6515d49379fa51b9fd9c0548a60b2c2b818964736f6c63430008100033