60806040526109dd600c556003600d556000600e55600f805460ff191690553480156200002b57600080fd5b506040518060400160405280600f81526020016e4772756d7079204772696e6368657360881b8152506040518060400160405280600681526020016508ea4929c86960d31b815250816002908162000084919062000242565b50600362000093828262000242565b5050600160005550620000a633620000c5565b620000b062000117565b600f805461ff0019166101001790556200030e565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62000138733cc6cdda760b79bafa08df41ecfa224f810dceb660016200013a565b565b6001600160a01b0390911690637d3e3dbe816200016a5782620001635750634420e4866200016a565b5063a0af29035b8060e01b60005250306004528160245260008060446000806daaeb6d7670e522a718067333cd4e5af15060006024525050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620001c857607f821691505b602082108103620001e957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200023d57600081815260208120601f850160051c81016020861015620002185750805b601f850160051c820191505b81811015620002395782815560010162000224565b5050505b505050565b81516001600160401b038111156200025e576200025e6200019d565b62000276816200026f8454620001b3565b84620001ef565b602080601f831160018114620002ae5760008415620002955750858301515b600019600386901b1c1916600185901b17855562000239565b600085815260208120601f198616915b82811015620002df57888601518255948401946001909101908401620002be565b5085821015620002fe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61206f806200031e6000396000f3fe60806040526004361061020f5760003560e01c80637cb6475911610118578063b85cecd3116100a0578063d5abeb011161006f578063d5abeb011461059b578063e268e4d3146105b1578063e985e9c5146105d1578063f2fde38b146105f1578063fb796e6c1461061157600080fd5b8063b85cecd314610528578063b88d4fde14610555578063ba41b0c614610568578063c87b56dd1461057b57600080fd5b806395d89b41116100e757806395d89b411461049d578063a0bcfc7f146104b2578063a22cb465146104d2578063b1c9fe6e146104f2578063b7c0b8e81461050857600080fd5b80637cb647591461041f5780637e2285aa1461043f5780638da5cb5b1461045f578063940cd05b1461047d57600080fd5b80632eb4a7ab1161019b5780635e1c07461161016a5780635e1c0746146103a05780636352211e146103b55780636c0360eb146103d557806370a08231146103ea578063715018a61461040a57600080fd5b80632eb4a7ab1461034757806342842e0e1461035d578063453c231014610370578063518302271461038657600080fd5b8063095ea7b3116101e2578063095ea7b3146102c557806318160ddd146102d857806323b872dd146102ff5780632cc82655146103125780632d5537b01461033257600080fd5b806301ffc9a71461021457806303339bcb1461024957806306fdde031461026b578063081812fc1461028d575b600080fd5b34801561022057600080fd5b5061023461022f366004611943565b610630565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061026961026436600461197c565b610682565b005b34801561027757600080fd5b5061028061071f565b60405161024091906119f8565b34801561029957600080fd5b506102ad6102a8366004611a0b565b6107b1565b6040516001600160a01b039091168152602001610240565b6102696102d3366004611a24565b6107f5565b3480156102e457600080fd5b5060015460005403600019015b604051908152602001610240565b61026961030d366004611a4e565b610821565b34801561031e57600080fd5b5061026961032d366004611a0b565b61085f565b34801561033e57600080fd5b5061028061088e565b34801561035357600080fd5b506102f160095481565b61026961036b366004611a4e565b61091c565b34801561037c57600080fd5b506102f1600d5481565b34801561039257600080fd5b50600f546102349060ff1681565b3480156103ac57600080fd5b50610269610953565b3480156103c157600080fd5b506102ad6103d0366004611a0b565b61095d565b3480156103e157600080fd5b50610280610968565b3480156103f657600080fd5b506102f1610405366004611a8a565b610975565b34801561041657600080fd5b506102696109c4565b34801561042b57600080fd5b5061026961043a366004611a0b565b6109f8565b34801561044b57600080fd5b5061026961045a366004611b31565b610a27565b34801561046b57600080fd5b506008546001600160a01b03166102ad565b34801561048957600080fd5b50610269610498366004611b8a565b610a5d565b3480156104a957600080fd5b50610280610a9a565b3480156104be57600080fd5b506102696104cd366004611b31565b610aa9565b3480156104de57600080fd5b506102696104ed366004611ba5565b610adf565b3480156104fe57600080fd5b506102f1600e5481565b34801561051457600080fd5b50610269610523366004611b8a565b610b05565b34801561053457600080fd5b506102f1610543366004611a8a565b60106020526000908152604090205481565b610269610563366004611bcf565b610b49565b610269610576366004611c4b565b610b89565b34801561058757600080fd5b50610280610596366004611a0b565b610e9e565b3480156105a757600080fd5b506102f1600c5481565b3480156105bd57600080fd5b506102696105cc366004611a0b565b610f71565b3480156105dd57600080fd5b506102346105ec366004611cca565b610fa0565b3480156105fd57600080fd5b5061026961060c366004611a8a565b610fce565b34801561061d57600080fd5b50600f5461023490610100900460ff1681565b60006301ffc9a760e01b6001600160e01b03198316148061066157506380ac58cd60e01b6001600160e01b03198316145b8061067c5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6008546001600160a01b031633146106b55760405162461bcd60e51b81526004016106ac90611cf4565b60405180910390fd5b600c5460015460005484919003600019016106d09190611d3f565b11156107115760405162461bcd60e51b815260206004820152601060248201526f4e6f206d6f7265204772696e6368657360801b60448201526064016106ac565b61071b8183611069565b5050565b60606002805461072e90611d52565b80601f016020809104026020016040519081016040528092919081815260200182805461075a90611d52565b80156107a75780601f1061077c576101008083540402835291602001916107a7565b820191906000526020600020905b81548152906001019060200180831161078a57829003601f168201915b5050505050905090565b60006107bc82611083565b6107d9576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b600f548290610100900460ff16801561081157610811826110b8565b61081b84846110fc565b50505050565b600f548390610100900460ff16801561084d576001600160a01b038216331461084d5761084d336110b8565b61085885858561119c565b5050505050565b6008546001600160a01b031633146108895760405162461bcd60e51b81526004016106ac90611cf4565b600e55565b600b805461089b90611d52565b80601f01602080910402602001604051908101604052809291908181526020018280546108c790611d52565b80156109145780601f106108e957610100808354040283529160200191610914565b820191906000526020600020905b8154815290600101906020018083116108f757829003601f168201915b505050505081565b600f548390610100900460ff168015610948576001600160a01b038216331461094857610948336110b8565b610858858585611331565b61095b61134c565b565b600061067c8261136b565b600a805461089b90611d52565b60006001600160a01b03821661099e576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6008546001600160a01b031633146109ee5760405162461bcd60e51b81526004016106ac90611cf4565b61095b60006113da565b6008546001600160a01b03163314610a225760405162461bcd60e51b81526004016106ac90611cf4565b600955565b6008546001600160a01b03163314610a515760405162461bcd60e51b81526004016106ac90611cf4565b600b61071b8282611dd2565b6008546001600160a01b03163314610a875760405162461bcd60e51b81526004016106ac90611cf4565b600f805460ff1916911515919091179055565b60606003805461072e90611d52565b6008546001600160a01b03163314610ad35760405162461bcd60e51b81526004016106ac90611cf4565b600a61071b8282611dd2565b600f548290610100900460ff168015610afb57610afb826110b8565b61081b848461142c565b6008546001600160a01b03163314610b2f5760405162461bcd60e51b81526004016106ac90611cf4565b600f80549115156101000261ff0019909216919091179055565b600f548490610100900460ff168015610b75576001600160a01b0382163314610b7557610b75336110b8565b610b8186868686611498565b505050505050565b6000600e5411610bd25760405162461bcd60e51b8152602060048201526014602482015273135a5b9d081a5cc81b9bdd081b1a5d99481e595d60621b60448201526064016106ac565b600d54831115610c185760405162461bcd60e51b8152602060048201526011602482015270546f6f206d616e79204772696e6368657360781b60448201526064016106ac565b333214610c565760405162461bcd60e51b815260206004820152600c60248201526b4e6f20636f6e74726163747360a01b60448201526064016106ac565b600c546001546000548591900360001901610c719190611d3f565b1115610cb25760405162461bcd60e51b815260206004820152601060248201526f4e6f206d6f7265204772696e6368657360801b60448201526064016106ac565b600e54600103610dfe57610d31828280806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506009546040516bffffffffffffffffffffffff193360601b1660208201529092506034019050604051602081830303815290604052805190602001206114dc565b610d725760405162461bcd60e51b8152602060048201526012602482015271139bdd081bdb881d1a194815da1bd31a5cdd60721b60448201526064016106ac565b600d5433600090815260106020526040902054610d90908590611d3f565b1115610dd45760405162461bcd60e51b8152602060048201526013602482015272151bdbc81b585b9e481c195c881dd85b1b195d606a1b60448201526064016106ac565b3360009081526010602052604081208054859290610df3908490611d3f565b90915550610e8f9050565b600e54600203610e8f57600d5433600090815260106020526040902054610e26908590611d3f565b1115610e6a5760405162461bcd60e51b8152602060048201526013602482015272151bdbc81b585b9e481c195c881dd85b1b195d606a1b60448201526064016106ac565b3360009081526010602052604081208054859290610e89908490611d3f565b90915550505b610e993384611069565b505050565b6060610ea982611083565b610ee95760405162461bcd60e51b81526020600482015260116024820152702737b732bc34b9ba32b73a103a37b5b2b760791b60448201526064016106ac565b600f5460ff16610f12576040518060600160405280602d815260200161200d602d913992915050565b6000610f1c6114f2565b90506000815111610f3c5760405180602001604052806000815250610f6a565b80610f4684611501565b600b604051602001610f5a93929190611e92565b6040516020818303038152906040525b9392505050565b6008546001600160a01b03163314610f9b5760405162461bcd60e51b81526004016106ac90611cf4565b600d55565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6008546001600160a01b03163314610ff85760405162461bcd60e51b81526004016106ac90611cf4565b6001600160a01b03811661105d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106ac565b611066816113da565b50565b61071b82826040518060200160405280600081525061160a565b600081600111158015611097575060005482105b801561067c575050600090815260046020526040902054600160e01b161590565b69c617113400112233445560005230601a5280603a52600080604460166daaeb6d7670e522a718067333cd4e5afa6110f4573d6000803e3d6000fd5b6000603a5250565b60006111078261095d565b9050336001600160a01b03821614611140576111238133610fa0565b611140576040516367d9dca160e11b815260040160405180910390fd5b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006111a78261136b565b9050836001600160a01b0316816001600160a01b0316146111da5760405162a1148160e81b815260040160405180910390fd5b60008281526006602052604090208054338082146001600160a01b038816909114176112275761120a8633610fa0565b61122757604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661124e57604051633a954ecd60e21b815260040160405180910390fd5b801561125957600082555b6001600160a01b038681166000908152600560205260408082208054600019019055918716808252919020805460010190554260a01b17600160e11b17600085815260046020526040812091909155600160e11b841690036112eb576001840160008181526004602052604081205490036112e95760005481146112e95760008181526004602052604090208490555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610b81565b610e9983838360405180602001604052806000815250610b49565b61095b733cc6cdda760b79bafa08df41ecfa224f810dceb66001611670565b600081806001116113c1576000548110156113c15760008181526004602052604081205490600160e01b821690036113bf575b80600003610f6a57506000190160008181526004602052604090205461139e565b505b604051636f96cda160e11b815260040160405180910390fd5b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6114a3848484610821565b6001600160a01b0383163b1561081b576114bf848484846116d0565b61081b576040516368d2bf6b60e11b815260040160405180910390fd5b6000826114e985846117bb565b14949350505050565b6060600a805461072e90611d52565b6060816000036115285750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611552578061153c81611f32565b915061154b9050600a83611f61565b915061152c565b60008167ffffffffffffffff81111561156d5761156d611aa5565b6040519080825280601f01601f191660200182016040528015611597576020820181803683370190505b5090505b8415611602576115ac600183611f75565b91506115b9600a86611f88565b6115c4906030611d3f565b60f81b8183815181106115d9576115d9611f9c565b60200101906001600160f81b031916908160001a9053506115fb600a86611f61565b945061159b565b949350505050565b611614838361182f565b6001600160a01b0383163b15610e99576000548281035b61163e60008683806001019450866116d0565b61165b576040516368d2bf6b60e11b815260040160405180910390fd5b81811061162b57816000541461085857600080fd5b6001600160a01b0390911690637d3e3dbe8161169d57826116965750634420e48661169d565b5063a0af29035b8060e01b60005250306004528160245260008060446000806daaeb6d7670e522a718067333cd4e5af15060006024525050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290611705903390899088908890600401611fb2565b6020604051808303816000875af1925050508015611740575060408051601f3d908101601f1916820190925261173d91810190611fef565b60015b61179e573d80801561176e576040519150601f19603f3d011682016040523d82523d6000602084013e611773565b606091505b508051600003611796576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050949350505050565b600081815b84518110156118275760008582815181106117dd576117dd611f9c565b602002602001015190508083116118035760008381526020829052604090209250611814565b600081815260208490526040902092505b508061181f81611f32565b9150506117c0565b509392505050565b60008054908290036118545760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b03831660008181526005602090815260408083208054680100000000000000018802019055848352600490915281206001851460e11b4260a01b178317905582840190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b81811461190357808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a46001016118cb565b508160000361192457604051622e076360e81b815260040160405180910390fd5b60005550505050565b6001600160e01b03198116811461106657600080fd5b60006020828403121561195557600080fd5b8135610f6a8161192d565b80356001600160a01b038116811461197757600080fd5b919050565b6000806040838503121561198f57600080fd5b8235915061199f60208401611960565b90509250929050565b60005b838110156119c35781810151838201526020016119ab565b50506000910152565b600081518084526119e48160208601602086016119a8565b601f01601f19169290920160200192915050565b602081526000610f6a60208301846119cc565b600060208284031215611a1d57600080fd5b5035919050565b60008060408385031215611a3757600080fd5b611a4083611960565b946020939093013593505050565b600080600060608486031215611a6357600080fd5b611a6c84611960565b9250611a7a60208501611960565b9150604084013590509250925092565b600060208284031215611a9c57600080fd5b610f6a82611960565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611ad657611ad6611aa5565b604051601f8501601f19908116603f01168101908282118183101715611afe57611afe611aa5565b81604052809350858152868686011115611b1757600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611b4357600080fd5b813567ffffffffffffffff811115611b5a57600080fd5b8201601f81018413611b6b57600080fd5b61160284823560208401611abb565b8035801515811461197757600080fd5b600060208284031215611b9c57600080fd5b610f6a82611b7a565b60008060408385031215611bb857600080fd5b611bc183611960565b915061199f60208401611b7a565b60008060008060808587031215611be557600080fd5b611bee85611960565b9350611bfc60208601611960565b925060408501359150606085013567ffffffffffffffff811115611c1f57600080fd5b8501601f81018713611c3057600080fd5b611c3f87823560208401611abb565b91505092959194509250565b600080600060408486031215611c6057600080fd5b83359250602084013567ffffffffffffffff80821115611c7f57600080fd5b818601915086601f830112611c9357600080fd5b813581811115611ca257600080fd5b8760208260051b8501011115611cb757600080fd5b6020830194508093505050509250925092565b60008060408385031215611cdd57600080fd5b611ce683611960565b915061199f60208401611960565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561067c5761067c611d29565b600181811c90821680611d6657607f821691505b602082108103611d8657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610e9957600081815260208120601f850160051c81016020861015611db35750805b601f850160051c820191505b81811015610b8157828155600101611dbf565b815167ffffffffffffffff811115611dec57611dec611aa5565b611e0081611dfa8454611d52565b84611d8c565b602080601f831160018114611e355760008415611e1d5750858301515b600019600386901b1c1916600185901b178555610b81565b600085815260208120601f198616915b82811015611e6457888601518255948401946001909101908401611e45565b5085821015611e825787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600084516020611ea58285838a016119a8565b855191840191611eb88184848a016119a8565b8554920191600090611ec981611d52565b60018281168015611ee15760018114611ef657611f22565b60ff1984168752821515830287019450611f22565b896000528560002060005b84811015611f1a57815489820152908301908701611f01565b505082870194505b50929a9950505050505050505050565b600060018201611f4457611f44611d29565b5060010190565b634e487b7160e01b600052601260045260246000fd5b600082611f7057611f70611f4b565b500490565b8181038181111561067c5761067c611d29565b600082611f9757611f97611f4b565b500690565b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611fe5908301846119cc565b9695505050505050565b60006020828403121561200157600080fd5b8151610f6a8161192d56fe68747470733a2f2f7777772e6772756d70796772696e636865732e636f6d2f70726572657665616c2e6a736f6ea26469706673582212208323624f8f29bc12168b4b3ae6e609a5568ffbf91f18c9a27e421d484f7a58e364736f6c63430008110033