60806040523480156200001157600080fd5b50604051620012ec380380620012ec833981016040819052620000349162000203565b6200003f33620000ee565b60016200004d8382620002fc565b5060026200005c8282620002fc565b506003805460ff191660099081179091556200007a90600a620004dd565b6200008c90652d79883d2000620004f2565b60048190553360008181526005602090815260408083208590556008805460ff1916600117905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200050c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200016657600080fd5b81516001600160401b03808211156200018357620001836200013e565b604051601f8301601f19908116603f01168101908282118183101715620001ae57620001ae6200013e565b81604052838152602092508683858801011115620001cb57600080fd5b600091505b83821015620001ef5785820183015181830184015290820190620001d0565b600093810190920192909252949350505050565b600080604083850312156200021757600080fd5b82516001600160401b03808211156200022f57600080fd5b6200023d8683870162000154565b935060208501519150808211156200025457600080fd5b50620002638582860162000154565b9150509250929050565b600181811c908216806200028257607f821691505b602082108103620002a357634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002f757600081815260208120601f850160051c81016020861015620002d25750805b601f850160051c820191505b81811015620002f357828155600101620002de565b5050505b505050565b81516001600160401b038111156200031857620003186200013e565b62000330816200032984546200026d565b84620002a9565b602080601f8311600181146200036857600084156200034f5750858301515b600019600386901b1c1916600185901b178555620002f3565b600085815260208120601f198616915b82811015620003995788860151825594840194600190910190840162000378565b5085821015620003b85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200041f578160001904821115620004035762000403620003c8565b808516156200041157918102915b93841c9390800290620003e3565b509250929050565b6000826200043857506001620004d7565b816200044757506000620004d7565b81600181146200046057600281146200046b576200048b565b6001915050620004d7565b60ff8411156200047f576200047f620003c8565b50506001821b620004d7565b5060208310610133831016604e8410600b8410161715620004b0575081810a620004d7565b620004bc8383620003de565b8060001904821115620004d357620004d3620003c8565b0290505b92915050565b6000620004eb838362000427565b9392505050565b8082028115828204841417620004d757620004d7620003c8565b610dd0806200051c6000396000f3fe608060405234801561001057600080fd5b50600436106101155760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d714610237578063a9059cbb1461024a578063dd62ed3e1461025d578063e2684f0814610296578063f2fde38b146102a357600080fd5b806370a08231146101e3578063715018a61461020c5780638da5cb5b1461021457806395d89b411461022f57600080fd5b806323b872dd116100e957806323b872dd14610182578063313ce5671461019557806339509351146101aa57806344337ea1146101bd578063537df3b6146101d057600080fd5b8062370c081461011a57806306fdde031461012f578063095ea7b31461014d57806318160ddd14610170575b600080fd5b61012d610128366004610b7b565b6102b6565b005b610137610305565b6040516101449190610ba4565b60405180910390f35b61016061015b366004610c0e565b610397565b6040519015158152602001610144565b6004545b604051908152602001610144565b610160610190366004610c38565b61041a565b60035460405160ff9091168152602001610144565b6101606101b8366004610c0e565b6104cf565b61012d6101cb366004610c74565b61056a565b61012d6101de366004610c74565b6105d0565b6101746101f1366004610c74565b6001600160a01b031660009081526005602052604090205490565b61012d610627565b6000546040516001600160a01b039091168152602001610144565b61013761063b565b610160610245366004610c0e565b61064a565b610160610258366004610c0e565b6106e5565b61017461026b366004610c8f565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b6008546101609060ff1681565b61012d6102b1366004610c74565b610755565b6102be6107ce565b6008805460ff19168215159081179091556040519081527f056aafd06a16976e0b2d699e0a606d40fc9025f526ec1ba92c041911afb088cd9060200160405180910390a150565b60606001805461031490610cc2565b80601f016020809104026020016040519081016040528092919081815260200182805461034090610cc2565b801561038d5780601f106103625761010080835404028352916020019161038d565b820191906000526020600020905b81548152906001019060200180831161037057829003601f168201915b5050505050905090565b3360009081526007602052604081205460ff16156103d05760405162461bcd60e51b81526004016103c790610cfc565b60405180910390fd5b6000546001600160a01b031633146104055760085460ff16156104055760405162461bcd60e51b81526004016103c790610d33565b610410338484610828565b5060015b92915050565b3360009081526007602052604081205460ff161561044a5760405162461bcd60e51b81526004016103c790610cfc565b6000546001600160a01b0316331461047f5760085460ff161561047f5760405162461bcd60e51b81526004016103c790610d33565b61048a84848461094d565b6001600160a01b0384166000908152600660209081526040808320338085529252909120546104c59186916104c0908690610d74565b610828565b5060019392505050565b3360009081526007602052604081205460ff16156104ff5760405162461bcd60e51b81526004016103c790610cfc565b6000546001600160a01b031633146105345760085460ff16156105345760405162461bcd60e51b81526004016103c790610d33565b3360008181526006602090815260408083206001600160a01b0388168452909152902054610410919085906104c0908690610d87565b6105726107ce565b6001600160a01b038116600081815260076020908152604091829020805460ff1916600190811790915591519182527f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac91015b60405180910390a250565b6105d86107ce565b6001600160a01b0381166000818152600760209081526040808320805460ff19169055519182527f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac91016105c5565b61062f6107ce565b6106396000610b2b565b565b60606002805461031490610cc2565b3360009081526007602052604081205460ff161561067a5760405162461bcd60e51b81526004016103c790610cfc565b6000546001600160a01b031633146106af5760085460ff16156106af5760405162461bcd60e51b81526004016103c790610d33565b3360008181526006602090815260408083206001600160a01b0388168452909152902054610410919085906104c0908690610d74565b3360009081526007602052604081205460ff16156107155760405162461bcd60e51b81526004016103c790610cfc565b6000546001600160a01b0316331461074a5760085460ff161561074a5760405162461bcd60e51b81526004016103c790610d33565b61041033848461094d565b61075d6107ce565b6001600160a01b0381166107c25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c7565b6107cb81610b2b565b50565b6000546001600160a01b031633146106395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c7565b6001600160a01b03831661088a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103c7565b6001600160a01b0382166108eb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103c7565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166109b15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103c7565b6001600160a01b038216610a135760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103c7565b6001600160a01b038316600090815260056020526040902054811115610a8a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103c7565b6001600160a01b03831660009081526005602052604081208054839290610ab2908490610d74565b90915550506001600160a01b03821660009081526005602052604081208054839290610adf908490610d87565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161094091815260200190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610b8d57600080fd5b81358015158114610b9d57600080fd5b9392505050565b600060208083528351808285015260005b81811015610bd157858101830151858201604001528201610bb5565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610c0957600080fd5b919050565b60008060408385031215610c2157600080fd5b610c2a83610bf2565b946020939093013593505050565b600080600060608486031215610c4d57600080fd5b610c5684610bf2565b9250610c6460208501610bf2565b9150604084013590509250925092565b600060208284031215610c8657600080fd5b610b9d82610bf2565b60008060408385031215610ca257600080fd5b610cab83610bf2565b9150610cb960208401610bf2565b90509250929050565b600181811c90821680610cd657607f821691505b602082108103610cf657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252601b908201527f596f7572206164647265737320697320626c61636b6c69737465640000000000604082015260600190565b602080825260119082015270151c98591a5b99c81a5cc81c185d5cd959607a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561041457610414610d5e565b8082018082111561041457610414610d5e56fea2646970667358221220329b1263dbaf214aaeb1c03d2f6efff8dfc50948162507892e566244bf889b6264736f6c634300081200330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000064d616e646f78000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064d414e444f580000000000000000000000000000000000000000000000000000