0x6080604052620000126009600a6200050f565b620000259066038d7ea4c6800062000527565b600655620000366009600a6200050f565b62000048906512309ce5400062000527565b600755620000596009600a6200050f565b6200006b906512309ce5400062000527565b6008556200007c6009600a6200050f565b6200008d9064e8d4a5100062000527565b6009553480156200009d57600080fd5b5060405162001dea38038062001dea833981016040819052620000c0916200055e565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b038085166001600160a01b031992831617909255600a80549284169290911691909117905560065460036000620001403390565b6001600160a01b0316815260208082019290925260409081016000908120939093556002600c9081556003600d556006600e55600f55805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ea919062000596565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000238573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025e919062000596565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d2919062000596565b600180546001600160a01b038086166001600160a01b03199283161783556002805482861693169290921790915533600090815260056020526040808220805460ff199081168617909155600b5490931682528082208054841685179055308252812080548316841790557f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805483168417905561dead90527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805490911690911790559050620003a03390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620003e891815260200190565b60405180910390a350505050620005b4565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000451578160001904821115620004355762000435620003fa565b808516156200044357918102915b93841c939080029062000415565b509250929050565b6000826200046a5750600162000509565b81620004795750600062000509565b81600181146200049257600281146200049d57620004bd565b600191505062000509565b60ff841115620004b157620004b1620003fa565b50506001821b62000509565b5060208310610133831016604e8410600b8410161715620004e2575081810a62000509565b620004ee838362000410565b8060001904821115620005055762000505620003fa565b0290505b92915050565b60006200052060ff84168362000459565b9392505050565b8082028115828204841417620005095762000509620003fa565b80516001600160a01b03811681146200055957600080fd5b919050565b600080604083850312156200057257600080fd5b6200057d8362000541565b91506200058d6020840162000541565b90509250929050565b600060208284031215620005a957600080fd5b620005208262000541565b61182680620005c46000396000f3fe6080604052600436106101a05760003560e01c80635342acb4116100ec57806395d89b411161008a578063c024666811610064578063c0246668146104f4578063dd62ed3e14610514578063f1d5f5171461055a578063f2fde38b1461057a57600080fd5b806395d89b4114610486578063a457c2d7146104b4578063a9059cbb146104d457600080fd5b806370a08231116100c657806370a08231146103fd578063715018a61461043357806375f0a874146104485780638da5cb5b1461046857600080fd5b80635342acb41461038c578063667f6526146103c55780636c0a24eb146103e757600080fd5b806323b872dd11610159578063313ce56711610133578063313ce567146103155780633950935114610331578063470624021461035157806349bd5a5e1461036c57600080fd5b806323b872dd146102a5578063264d26dd146102c55780632b14ca56146102e557600080fd5b806303e403b0146101ac5780630492f055146101d557806306fdde03146101eb578063095ea7b3146102285780631694505e1461025857806318160ddd1461029057600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101c260095481565b6040519081526020015b60405180910390f35b3480156101e157600080fd5b506101c260085481565b3480156101f757600080fd5b5060408051808201909152600b81526a534849424f4b5520494e5560a81b60208201525b6040516101cc9190611491565b34801561023457600080fd5b506102486102433660046114f7565b61059a565b60405190151581526020016101cc565b34801561026457600080fd5b50600154610278906001600160a01b031681565b6040516001600160a01b0390911681526020016101cc565b34801561029c57600080fd5b506006546101c2565b3480156102b157600080fd5b506102486102c0366004611523565b6105b1565b3480156102d157600080fd5b50600a54610278906001600160a01b031681565b3480156102f157600080fd5b50600e54600f54610300919082565b604080519283526020830191909152016101cc565b34801561032157600080fd5b50604051600981526020016101cc565b34801561033d57600080fd5b5061024861034c3660046114f7565b610603565b34801561035d57600080fd5b50600c54600d54610300919082565b34801561037857600080fd5b50600254610278906001600160a01b031681565b34801561039857600080fd5b506102486103a7366004611564565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103d157600080fd5b506103e56103e0366004611581565b61063a565b005b3480156103f357600080fd5b506101c260075481565b34801561040957600080fd5b506101c2610418366004611564565b6001600160a01b031660009081526003602052604090205490565b34801561043f57600080fd5b506103e5610682565b34801561045457600080fd5b50600b54610278906001600160a01b031681565b34801561047457600080fd5b506000546001600160a01b0316610278565b34801561049257600080fd5b50604080518082019091526005815264534849424b60d81b602082015261021b565b3480156104c057600080fd5b506102486104cf3660046114f7565b6106f6565b3480156104e057600080fd5b506102486104ef3660046114f7565b61072d565b34801561050057600080fd5b506103e561050f3660046115a3565b61073a565b34801561052057600080fd5b506101c261052f3660046115e1565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561056657600080fd5b506103e561057536600461160f565b61078f565b34801561058657600080fd5b506103e5610595366004611564565b6107f9565b60006105a73384846108e3565b5060015b92915050565b60006105be848484610a07565b6001600160a01b0384166000908152600460209081526040808320338085529252909120546105f99186916105f490869061163e565b6108e3565b5060019392505050565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105a79185906105f4908690611651565b6000546001600160a01b0316331461066d5760405162461bcd60e51b815260040161066490611664565b60405180910390fd5b600c829055600d819055600e91909155600f55565b6000546001600160a01b031633146106ac5760405162461bcd60e51b815260040161066490611664565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105a79185906105f490869061163e565b60006105a7338484610a07565b6000546001600160a01b031633146107645760405162461bcd60e51b815260040161066490611664565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146107b95760405162461bcd60e51b815260040161066490611664565b6103e8816006546107ca9190611699565b6107d491906116b0565b6007556006546103e8906107e9908390611699565b6107f391906116b0565b60085550565b6000546001600160a01b031633146108235760405162461bcd60e51b815260040161066490611664565b6001600160a01b0381166108885760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610664565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109455760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610664565b6001600160a01b0382166109a65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610664565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610664565b6001600160a01b038216610acd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610664565b60008111610b2f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610664565b6001600160a01b03831660009081526003602052604081208054839290610b5790849061163e565b90915550506001600160a01b03831660009081526005602052604081205482919060ff16158015610ba157506001600160a01b03841660009081526005602052604090205460ff16155b15610baa575060015b6002546001600160a01b038681169116148015610bd45750600a546001600160a01b038581169116145b15610c1157610be38380611699565b6001600160a01b03851660009081526003602052604081208054909190610c0b908490611651565b90915550505b8015610e2e576002546001600160a01b038681169116148015610c4257506002546001600160a01b03858116911614155b15610d0357600854831115610cab5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546044820152681e1b9cd05b5bdd5b9d60ba1b6064820152608401610664565b60075483610cce866001600160a01b031660009081526003602052604090205490565b610cd89190611651565b1115610cf65760405162461bcd60e51b8152600401610664906116d2565b610d008385610eb1565b91505b6002546001600160a01b038581169116148015610d2e57506002546001600160a01b03868116911614155b15610db257600a546001600160a01b031660009081526003602052604090205415610d5857600080fd5b610d628386610f88565b6009543060009081526003602052604090205491935011158015610d89575060125460ff16155b15610db2576012805460ff19166001179055600954610da790610fbf565b6012805460ff191690555b6002546001600160a01b03858116911614801590610dde57506002546001600160a01b03868116911614155b15610e2e5760075483610e06866001600160a01b031660009081526003602052604090205490565b610e109190611651565b1115610e2e5760405162461bcd60e51b8152600401610664906116d2565b6001600160a01b03841660009081526003602052604081208054849290610e56908490611651565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ea291815260200190565b60405180910390a35050505050565b6000806064600c6000015485610ec79190611699565b610ed191906116b0565b905060006064600c6001015486610ee89190611699565b610ef291906116b0565b9050610efe8183611651565b3060009081526003602052604081208054909190610f1d908490611651565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610f598585611651565b60405190815260200160405180910390a380610f75838761163e565b610f7f919061163e565b95945050505050565b6000806064600e6000015485610f9e9190611699565b610fa891906116b0565b905060006064600e6001015486610ee89190611699565b600e54600f54600c54600d54849360009390929091610fde9190611651565b610fe89190611651565b610ff29190611651565b600e54600c546110029190611651565b61100c9084611699565b61101691906116b0565b600e54600f54600c54600d549394506000936110329190611651565b61103c9190611651565b6110469190611651565b600f54600d546110569190611651565b6110609085611699565b61106a91906116b0565b905060006110788284611651565b90506000611087846002611117565b905060006110958683611160565b9050476110a1826111a2565b60006110ad4783611160565b905060006110c5866110bf848b6112fc565b90611117565b90506110d1858261137e565b600b546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561110a573d6000803e3d6000fd5b5050505050505050505050565b600061115983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611432565b9392505050565b600061115983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611460565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106111d7576111d761171e565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611230573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112549190611734565b816001815181106112675761126761171e565b6001600160a01b03928316602091820292909201015260015461128d91309116846108e3565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906112c6908590600090869030904290600401611751565b600060405180830381600087803b1580156112e057600080fd5b505af11580156112f4573d6000803e3d6000fd5b505050505050565b60008260000361130e575060006105ab565b600061131a8385611699565b90508261132785836116b0565b146111595760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610664565b6001546113969030906001600160a01b0316846108e3565b600154600a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611406573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061142b91906117c2565b5050505050565b600081836114535760405162461bcd60e51b81526004016106649190611491565b506000610f7f84866116b0565b600081848411156114845760405162461bcd60e51b81526004016106649190611491565b506000610f7f848661163e565b600060208083528351808285015260005b818110156114be578581018301518582016040015282016114a2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146114f457600080fd5b50565b6000806040838503121561150a57600080fd5b8235611515816114df565b946020939093013593505050565b60008060006060848603121561153857600080fd5b8335611543816114df565b92506020840135611553816114df565b929592945050506040919091013590565b60006020828403121561157657600080fd5b8135611159816114df565b6000806040838503121561159457600080fd5b50508035926020909101359150565b600080604083850312156115b657600080fd5b82356115c1816114df565b9150602083013580151581146115d657600080fd5b809150509250929050565b600080604083850312156115f457600080fd5b82356115ff816114df565b915060208301356115d6816114df565b60006020828403121561162157600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105ab576105ab611628565b808201808211156105ab576105ab611628565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80820281158282048414176105ab576105ab611628565b6000826116cd57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252602c908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526b30b63632ba20b6b7bab73a1760a11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561174657600080fd5b8151611159816114df565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117a15784516001600160a01b03168352938301939183019160010161177c565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156117d757600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122058d252a1088795f2317b5e05ff4b032c91d2d71dd1b0b1b66e60b2e1798415b364736f6c634300081100330000000000000000000000007ba3c055dbb74ce436ef52810a6486f46a9ea0ed000000000000000000000000c97aa664457b5e67d74ae5b253a0c7f4f9655bb1