60806040523480156200001157600080fd5b50604080518082018252600480825263504c555360e01b60208084018290528451808601909552918452908301529060036200004e8382620002ab565b5060046200005d8282620002ab565b505050600062000072620000f060201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620000ea33620000d36012600a6200048c565b620000e4906402540be400620004a4565b620000f4565b620004d4565b3390565b6001600160a01b0382166200014f5760405162461bcd60e51b815260206004820152601860248201527f4d696e7420746f20746865207a65726f20616464726573730000000000000000604482015260640160405180910390fd5b6200015d60008383620001ea565b8060026000828254620001719190620004be565b90915550506001600160a01b03821660009081526020819052604081208054839290620001a0908490620004be565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620002028383836200020260201b62000aec1760201c565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200023257607f821691505b6020821081036200025357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020257600081815260208120601f850160051c81016020861015620002825750805b601f850160051c820191505b81811015620002a3578281556001016200028e565b505050505050565b81516001600160401b03811115620002c757620002c762000207565b620002df81620002d884546200021d565b8462000259565b602080601f831160018114620003175760008415620002fe5750858301515b600019600386901b1c1916600185901b178555620002a3565b600085815260208120601f198616915b82811015620003485788860151825594840194600190910190840162000327565b5085821015620003675787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003ce578160001904821115620003b257620003b262000377565b80851615620003c057918102915b93841c939080029062000392565b509250929050565b600082620003e75750600162000486565b81620003f65750600062000486565b81600181146200040f57600281146200041a576200043a565b600191505062000486565b60ff8411156200042e576200042e62000377565b50506001821b62000486565b5060208310610133831016604e8410600b84101617156200045f575081810a62000486565b6200046b83836200038d565b806000190482111562000482576200048262000377565b0290505b92915050565b60006200049d60ff841683620003d6565b9392505050565b808202811582820484141762000486576200048662000377565b8082018082111562000486576200048662000377565b61158b80620004e46000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806395d89b41116100b8578063d29dad831161007c578063d29dad8314610296578063d8fb9337146102a9578063dd62ed3e146102df578063de6baccb14610318578063e20bc67b1461032b578063f2fde38b1461033e57600080fd5b806395d89b411461022d578063a457c2d714610235578063a9059cbb14610248578063b2520a7c1461025b578063d1c469161461028357600080fd5b8063395093511161010a57806339509351146101bc57806342966c68146101cf57806370a08231146101e4578063715018a6146101f75780637eee288d146101ff5780638da5cb5b1461021257600080fd5b806306fdde0314610147578063095ea7b31461016557806318160ddd1461018857806323b872dd1461019a578063313ce567146101ad575b600080fd5b61014f610351565b60405161015c9190611296565b60405180910390f35b610178610173366004611300565b6103e3565b604051901515815260200161015c565b6002545b60405190815260200161015c565b6101786101a836600461132a565b6103fa565b6040516012815260200161015c565b6101786101ca366004611300565b6104a2565b6101e26101dd366004611366565b6104de565b005b61018c6101f236600461137f565b6104eb565b6101e2610593565b61017861020d366004611300565b610607565b6005546040516001600160a01b03909116815260200161015c565b61014f6106af565b610178610243366004611300565b6106be565b610178610256366004611300565b61073f565b61026e610269366004611300565b6107ca565b6040805192835260208301919091520161015c565b61017861029136600461137f565b610831565b61018c6102a436600461137f565b61090a565b61026e6102b736600461137f565b6001600160a01b03166000908152600760209081526040808320546006909252909120549091565b61018c6102ed3660046113a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101786103263660046113d4565b610928565b61017861033936600461137f565b610989565b6101e261034c36600461137f565b610a10565b60606003805461036090611407565b80601f016020809104026020016040519081016040528092919081815260200182805461038c90611407565b80156103d95780601f106103ae576101008083540402835291602001916103d9565b820191906000526020600020905b8154815290600101906020018083116103bc57829003601f168201915b5050505050905090565b60006103f0338484610af1565b5060015b92915050565b6001600160a01b0383166000908152600660205260408120548490839080156104285761042683610989565b505b6001600160a01b03831660009081526007602052604090205461044c908390611457565b6001600160a01b038416600090815260208190526040902054101561048c5760405162461bcd60e51b81526004016104839061146a565b60405180910390fd5b610497878787610bff565b979650505050505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916103f09185906104d9908690611457565b610af1565b6104e83382610c97565b50565b6001600160a01b038116600090815260208181526040808320546007835281842054600690935290832054909183918184101561052757600080fd5b80156105745760005b818110156105725760008061054589846107ca565b9150915042821161055d5761055a8187611457565b95505b5050808061056a906114af565b915050610530565b505b8261057f83866114c8565b6105899190611457565b9695505050505050565b6005546001600160a01b031633146105bd5760405162461bcd60e51b8152600401610483906114db565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546000906001600160a01b031633146106345760405162461bcd60e51b8152600401610483906114db565b6001600160a01b038316600090815260066020526040902054821061069b5760405162461bcd60e51b815260206004820152601d60248201527f5468657265206973206e6f206c6f636b20696e666f726d6174696f6e2e0000006044820152606401610483565b6106a58383610dc8565b5060019392505050565b60606004805461036090611407565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156107325760405162461bcd60e51b815260206004820152601e60248201527f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f00006044820152606401610483565b6106a53385858403610af1565b33600081815260066020526040812054909190839080156107655761076383610989565b505b6001600160a01b038316600090815260076020526040902054610789908390611457565b6001600160a01b03841660009081526020819052604090205410156107c05760405162461bcd60e51b81526004016104839061146a565b6105898686610f83565b6001600160a01b0382166000908152600660205260408120805482918291859081106107f8576107f8611512565b60009182526020918290206040805180820190915260029092020180548083526001909101549190920181905290969095509350505050565b6005546000906001600160a01b0316331461085e5760405162461bcd60e51b8152600401610483906114db565b6001600160a01b0382166000908152600660205260409020546108c35760405162461bcd60e51b815260206004820152601d60248201527f5468657265206973206e6f206c6f636b20696e666f726d6174696f6e2e0000006044820152606401610483565b6001600160a01b0382166000908152600660205260409020545b80156103f0576108f7836108f26001846114c8565b610dc8565b508061090281611528565b9150506108dd565b6001600160a01b0381166000908152602081905260408120546103f4565b6005546000906001600160a01b031633146109555760405162461bcd60e51b8152600401610483906114db565b6001600160a01b03841661096857600080fd5b610973338585610f8c565b61097e848484611132565b506001949350505050565b6000805b6001600160a01b0383166000908152600660205260409020548110156103f0576001600160a01b03831660009081526006602052604090208054429190839081106109da576109da611512565b90600052602060002090600202016000015410156109fe576109fc8382610dc8565b505b80610a08816114af565b91505061098d565b6005546001600160a01b03163314610a3a5760405162461bcd60e51b8152600401610483906114db565b6001600160a01b038116610a905760405162461bcd60e51b815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f20616464726573730000006044820152606401610483565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b505050565b6001600160a01b038316610b475760405162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f20616464726573730000006044820152606401610483565b6001600160a01b038216610b9d5760405162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f206164647265737300000000006044820152606401610483565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610c0c848484610f8c565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610c8a5760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b6064820152608401610483565b61097e8533858403610af1565b6001600160a01b038216610ced5760405162461bcd60e51b815260206004820152601a60248201527f4275726e2066726f6d20746865207a65726f20616464726573730000000000006044820152606401610483565b6001600160a01b03821660009081526020819052604090205481811015610d565760405162461bcd60e51b815260206004820152601b60248201527f4275726e20616d6f756e7420657863656564732062616c616e636500000000006044820152606401610483565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610d859084906114c8565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610bf2565b6001600160a01b0382166000908152600660205260408120805482919084908110610df557610df5611512565b90600052602060002090600202019050806001015460076000866001600160a01b03166001600160a01b0316815260200190815260200160002054610e3a91906114c8565b6001600160a01b03851660008181526007602052604090819020929092556001830154915190917f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f191610e8f91815260200190565b60405180910390a26001600160a01b03841660009081526006602052604090208054610ebd906001906114c8565b81548110610ecd57610ecd611512565b906000526020600020906002020160066000866001600160a01b03166001600160a01b031681526020019081526020016000208481548110610f1157610f11611512565b60009182526020808320845460029093020191825560019384015493909101929092556001600160a01b0386168152600690915260409020805480610f5857610f5861153f565b6000828152602081206002600019909301928302018181556001908101919091559155949350505050565b60006103f03384845b6001600160a01b038316610fe25760405162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610483565b6001600160a01b0382166110385760405162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610483565b6001600160a01b038316600090815260208190526040902054818110156110a15760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657220616d6f756e7420657863656564732062616c616e6365006044820152606401610483565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906110d8908490611457565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161112491815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600760205260408120546111559084611457565b6001600160a01b03851660009081526020819052604090205410156111d05760405162461bcd60e51b815260206004820152602b60248201527f4c6f636b656420746f74616c2073686f756c6420626520736d616c6c6572207460448201526a68616e2062616c616e636560a81b6064820152608401610483565b6001600160a01b0384166000908152600760205260409020546111f4908490611457565b6001600160a01b0385166000818152600760209081526040808320949094556006815283822084518086018652878152808301898152825460018181018555938652939094209051600290930201918255915191015590517f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b906112849086908690918252602082015260400190565b60405180910390a25060019392505050565b600060208083528351808285015260005b818110156112c3578581018301518582016040015282016112a7565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146112fb57600080fd5b919050565b6000806040838503121561131357600080fd5b61131c836112e4565b946020939093013593505050565b60008060006060848603121561133f57600080fd5b611348846112e4565b9250611356602085016112e4565b9150604084013590509250925092565b60006020828403121561137857600080fd5b5035919050565b60006020828403121561139157600080fd5b61139a826112e4565b9392505050565b600080604083850312156113b457600080fd5b6113bd836112e4565b91506113cb602084016112e4565b90509250929050565b6000806000606084860312156113e957600080fd5b6113f2846112e4565b95602085013595506040909401359392505050565b600181811c9082168061141b57607f821691505b60208210810361143b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156103f4576103f4611441565b60208082526025908201527f43616e6e6f742073656e64206d6f7265207468616e20756e6c6f636b656420616040820152641b5bdd5b9d60da1b606082015260800190565b6000600182016114c1576114c1611441565b5060010190565b818103818111156103f4576103f4611441565b60208082526017908201527f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60008161153757611537611441565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220bfd00908ac54ed32b0f213558643f7b310a69a662d778017ad2bd7003785190c64736f6c63430008110033