6080604052620000126012600a620006a3565b6200002290633b9aca00620006b4565b6001819055600280546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560038054821661dead1790556004805482169055600580548216737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155600680549092161790556103e890620000a090600a620006b4565b620000ac9190620006ce565b6007556103e8600154600a620000c39190620006b4565b620000cf9190620006ce565b6008556103e86001546014620000e69190620006b4565b620000f29190620006ce565b6009556032600e5560c8600f5560966010556101906011556127106012556015805460ff60a01b1916600160a01b17905560015462000135906107d090620006ce565b6017553480156200014557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001db573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002019190620006f1565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000253573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002799190620006f1565b601680546001600160a01b039283166001600160a01b03199182161790915560138054821673b98b0322f0443adf8f2fb2bb015bb001ce631ba61781556014805483167333277b5bddd86786b3828256743cd2043038e1c41781556015805490931673ad0fce7813eb24afed0810a3fbc8efefc8caddfd178355306000818152600b60209081526040808320600654891684528252808320600019905533808452600c8352818420805460ff19908116600190811790925588548b168652838620805482168317905587548b168652838620805482168317905589548b16865283862080548216831790558686528386208054821683179055918552600d90935281842080548216841790559554881683528083208054871683179055935487168252838220805486168217905594548616815282812080548516861790556004549095168552818520805484168517905584529092208054909216811790915554620003f790606490620003f090600562000473565b906200050a565b6013546001600160a01b03166000908152600a60205260409020556001546200042a90606490620003f090600f62000473565b6015546001600160a01b03166000908152600a60205260409020556001546200045d90606490620003f090605062000473565b336000908152600a60205260409020556200076c565b600082600003620004875750600062000504565b6000620004958385620006b4565b905082620004a48583620006ce565b14620005015760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200050183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200055460201b60201c565b60008183620005785760405162461bcd60e51b8152600401620004f891906200071c565b506000620005878486620006ce565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005e7578160001904821115620005cb57620005cb62000590565b80851615620005d957918102915b93841c9390800290620005ab565b509250929050565b600082620006005750600162000504565b816200060f5750600062000504565b8160018114620006285760028114620006335762000653565b600191505062000504565b60ff84111562000647576200064762000590565b50506001821b62000504565b5060208310610133831016604e8410600b841016171562000678575081810a62000504565b620006848383620005a6565b80600019048211156200069b576200069b62000590565b029392505050565b60006200050160ff841683620005ef565b808202811582820484141762000504576200050462000590565b600082620006ec57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200070457600080fd5b81516001600160a01b03811681146200050157600080fd5b600060208083528351808285015260005b818110156200074b578581018301518582016040015282016200072d565b506000604082860101526040601f19601f8301168501019250505092915050565b611e2e806200077c6000396000f3fe60806040526004361061021e5760003560e01c806377e741c711610123578063af6727ed116100ab578063dd62ed3e1161006f578063dd62ed3e1461061d578063df20fd4914610663578063f2fde38b14610683578063f84ba65d146106a3578063f887ea40146106c357600080fd5b8063af6727ed14610587578063b2c6e1e6146105a7578063cf4be394146105c7578063d7c01032146105dd578063dab84ee7146105fd57600080fd5b80638f9a55c0116100f25780638f9a55c0146104e457806395d89b41146104fa578063a8aa1b3114610527578063a9059cbb14610547578063abe57e701461056757600080fd5b806377e741c7146104915780637ae316d0146104b1578063893d20e8146104c65780638da5cb5b146104c657600080fd5b8063313ce567116101a657806364c0a2f81161017557806364c0a2f8146103e5578063658d4b7f1461040657806370a0823114610426578063711370c51461045c578063715018a61461047c57600080fd5b8063313ce56714610373578063334773271461038f578063571ac8b0146103a5578063625e764c146103c557600080fd5b806318160ddd116101ed57806318160ddd146102d15780631c75b6b2146102e657806323b872dd146103065780632af10fac146103265780632b112e491461035e57600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b31461028a5780630e90edf6146102ba57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060175481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b506040805180820190915260058152642732bc30b760d91b60208201525b60405161024a9190611aab565b34801561029657600080fd5b506102aa6102a5366004611b15565b6106e3565b604051901515815260200161024a565b3480156102c657600080fd5b506102cf610750565b005b3480156102dd57600080fd5b50600154610240565b3480156102f257600080fd5b506102cf610301366004611b3f565b610833565b34801561031257600080fd5b506102aa610321366004611b58565b6108af565b34801561033257600080fd5b50601554610346906001600160a01b031681565b6040516001600160a01b03909116815260200161024a565b34801561036a57600080fd5b50610240610971565b34801561037f57600080fd5b506040516012815260200161024a565b34801561039b57600080fd5b5061024060075481565b3480156103b157600080fd5b506102aa6103c0366004611b94565b6109c3565b3480156103d157600080fd5b506102cf6103e0366004611b3f565b6109d1565b3480156103f157600080fd5b506015546102aa90600160a01b900460ff1681565b34801561041257600080fd5b506102cf610421366004611bbf565b610a47565b34801561043257600080fd5b50610240610441366004611b94565b6001600160a01b03166000908152600a602052604090205490565b34801561046857600080fd5b506102cf610477366004611b3f565b610a9c565b34801561048857600080fd5b506102cf610b52565b34801561049d57600080fd5b506102cf6104ac366004611b3f565b610bc6565b3480156104bd57600080fd5b50601154610240565b3480156104d257600080fd5b506000546001600160a01b0316610346565b3480156104f057600080fd5b5061024060095481565b34801561050657600080fd5b50604080518082019091526004815263272c20a760e11b602082015261027d565b34801561053357600080fd5b50601654610346906001600160a01b031681565b34801561055357600080fd5b506102aa610562366004611b15565b610c3c565b34801561057357600080fd5b506102cf610582366004611bf2565b610c49565b34801561059357600080fd5b50601454610346906001600160a01b031681565b3480156105b357600080fd5b506102cf6105c2366004611b3f565b610cc0565b3480156105d357600080fd5b5061024060085481565b3480156105e957600080fd5b506102cf6105f8366004611c14565b610d76565b34801561060957600080fd5b50601354610346906001600160a01b031681565b34801561062957600080fd5b50610240610638366004611c57565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b34801561066f57600080fd5b506102cf61067e366004611c81565b610ddf565b34801561068f57600080fd5b506102cf61069e366004611b94565b610e2b565b3480156106af57600080fd5b506102cf6106be366004611bbf565b610f15565b3480156106cf57600080fd5b50600654610346906001600160a01b031681565b336000818152600b602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061073e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107835760405162461bcd60e51b815260040161077a90611c9d565b60405180910390fd5b60135460405147916000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146107d9576040519150601f19603f3d011682016040523d82523d6000602084013e6107de565b606091505b505090508061082f5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161077a565b5050565b6000546001600160a01b0316331461085d5760405162461bcd60e51b815260040161077a90611c9d565b600061088060105461087a600e5485610f6a90919063ffffffff16565b90610f6a565b90506101908111156108a45760405162461bcd60e51b815260040161077a90611cd2565b600f91909155601155565b6001600160a01b0383166000908152600b602090815260408083203384529091528120546000191461095c576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610937918490610fc9565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610967848484611003565b90505b9392505050565b6004546001600160a01b03166000908152600a60205260408120546109be906003546001600160a01b03166000908152600a60205260409020546109b8906001549061131d565b9061131d565b905090565b600061074a826000196106e3565b6000546001600160a01b031633146109fb5760405162461bcd60e51b815260040161077a90611c9d565b6000610a18600e5461087a600f5485610f6a90919063ffffffff16565b9050610190811115610a3c5760405162461bcd60e51b815260040161077a90611cd2565b601091909155601155565b6000546001600160a01b03163314610a715760405162461bcd60e51b815260040161077a90611c9d565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ac65760405162461bcd60e51b815260040161077a90611c9d565b60006103e86001546005610ada9190611d12565b610ae49190611d29565b905060006103e883600154610af99190611d12565b610b039190611d29565b905081811015610b4b5760405162461bcd60e51b81526020600482015260136024820152725478204c696d697420697320746f6f206c6f7760681b604482015260640161077a565b6008555050565b6000546001600160a01b03163314610b7c5760405162461bcd60e51b815260040161077a90611c9d565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610bf05760405162461bcd60e51b815260040161077a90611c9d565b6000610c0d60105461087a600f5485610f6a90919063ffffffff16565b9050610190811115610c315760405162461bcd60e51b815260040161077a90611cd2565b600e91909155601155565b600061096a338484611003565b6000546001600160a01b03163314610c735760405162461bcd60e51b815260040161077a90611c9d565b600082118015610c835750600081115b8015610c9157506127108111155b610c9a57600080fd5b610cb981610cb38460015461135f90919063ffffffff16565b906113e1565b6009555050565b6000546001600160a01b03163314610cea5760405162461bcd60e51b815260040161077a90611c9d565b60006103e86001546005610cfe9190611d12565b610d089190611d29565b905060006103e883600154610d1d9190611d12565b610d279190611d29565b905081811015610d6f5760405162461bcd60e51b81526020600482015260136024820152725478204c696d697420697320746f6f206c6f7760681b604482015260640161077a565b6007555050565b6000546001600160a01b03163314610da05760405162461bcd60e51b815260040161077a90611c9d565b601380546001600160a01b039485166001600160a01b031991821617909155601480549385169382169390931790925560158054919093169116179055565b6000546001600160a01b03163314610e095760405162461bcd60e51b815260040161077a90611c9d565b60158054921515600160a01b0260ff60a01b1990931692909217909155601755565b6000546001600160a01b03163314610e555760405162461bcd60e51b815260040161077a90611c9d565b6001600160a01b038116610eba5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161077a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610f3f5760405162461bcd60e51b815260040161077a90611c9d565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b600080610f778385611d4b565b90508381101561096a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161077a565b60008184841115610fed5760405162461bcd60e51b815260040161077a9190611aab565b506000610ffa8486611d5e565b95945050505050565b60185460009060ff16156110235761101c848484611423565b905061096a565b6001600160a01b0384166000908152600d602052604081205460ff168061106257506001600160a01b0384166000908152600d602052604090205460ff165b905060006001600160a01b03861630148061108557506001600160a01b03851630145b6016549091506000906001600160a01b0388811691161480156110b557506006546001600160a01b038781169116145b806110e557506016546001600160a01b0387811691161480156110e557506006546001600160a01b038881169116145b9050821580156110f3575081155b80156110fd575080155b1561110d5761110d878787611509565b6016546001600160a01b0387811691161480159061113957506003546001600160a01b03878116911614155b156111e7576001600160a01b0386166000908152600d602052604090205460ff168061118a57506009546001600160a01b0387166000908152600a6020526040902054611187908790611d4b565b11155b6111e75760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e742065786365656473207468652077616c6c60448201526732ba1039b4bd329760c11b606482015260840161077a565b6111ef611605565b156111fc576111fc61165b565b600061120888886117e1565b611212578561121c565b61121c888761185b565b90506112848660405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b815250600a60008c6001600160a01b03166001600160a01b0316815260200190815260200160002054610fc99092919063ffffffff16565b6001600160a01b03808a166000908152600a602052604080822093909355908916815220546112b39082610f6a565b6001600160a01b038089166000818152600a602052604090819020939093559151908a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113079085815260200190565b60405180910390a3506001979650505050505050565b600061096a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fc9565b6000826000036113715750600061074a565b600061137d8385611d12565b90508261138a8583611d29565b1461096a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161077a565b600061096a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506118ff565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611474918490610fc9565b6001600160a01b038086166000908152600a602052604080822093909355908516815220546114a39083610f6a565b6001600160a01b038085166000818152600a602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114f79086815260200190565b60405180910390a35060019392505050565b6016546000906001600160a01b038581169116148061153557506006546001600160a01b038581169116145b6016549091506000906001600160a01b038581169116148061156457506006546001600160a01b038581169116145b905081156115b2576007548311156115b25760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161077a565b80156115fe576008548311156115fe5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161077a565b5050505050565b6016546000906001600160a01b03163314801590611626575060185460ff16155b801561163b5750601554600160a01b900460ff165b80156109be575050601754306000908152600a6020526040902054101590565b6018805460ff1916600117905560175460408051600280825260608201835260009260208301908036833701905050905030816000815181106116a0576116a0611d71565b6001600160a01b0392831660209182029290920101526002548251911690829060019081106116d1576116d1611d71565b6001600160a01b03928316602091820292909201015260065460405163791ac94760e01b81524792919091169063791ac9479061171b908690600090879030904290600401611d87565b600060405180830381600087803b15801561173557600080fd5b505af1158015611749573d6000803e3d6000fd5b505050506000611762824761131d90919063ffffffff16565b905060006011549050600061178682610cb3600f548661135f90919063ffffffff16565b905060006117a383610cb36010548761135f90919063ffffffff16565b905060006117c084610cb3600e548861135f90919063ffffffff16565b90506117cd83838361192d565b50506018805460ff19169055505050505050565b6016546000906001600160a01b038481169116148061180d57506016546001600160a01b038381169116145b801561183257506001600160a01b0383166000908152600c602052604090205460ff16155b801561096a5750506001600160a01b03166000908152600c602052604090205460ff1615919050565b600080611877601254610cb361187060115490565b869061135f565b306000908152600a60205260409020549091506118949082610f6a565b306000818152600a6020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906118e59085815260200190565b60405180910390a36118f7838261131d565b949350505050565b600081836119205760405162461bcd60e51b815260040161077a9190611aab565b506000610ffa8486611d29565b6013546040516000916001600160a01b03169061753090869084818181858888f193505050503d806000811461197f576040519150601f19603f3d011682016040523d82523d6000602084013e611984565b606091505b50506014546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d80600081146119dd576040519150601f19603f3d011682016040523d82523d6000602084013e6119e2565b606091505b50506015546040519192506000916001600160a01b039091169061753090869084818181858888f193505050503d8060008114611a3b576040519150601f19603f3d011682016040523d82523d6000602084013e611a40565b606091505b50509050828015611a4e5750815b8015611a575750805b611aa35760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161077a565b505050505050565b600060208083528351808285015260005b81811015611ad857858101830151858201604001528201611abc565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611b1057600080fd5b919050565b60008060408385031215611b2857600080fd5b611b3183611af9565b946020939093013593505050565b600060208284031215611b5157600080fd5b5035919050565b600080600060608486031215611b6d57600080fd5b611b7684611af9565b9250611b8460208501611af9565b9150604084013590509250925092565b600060208284031215611ba657600080fd5b61096a82611af9565b80358015158114611b1057600080fd5b60008060408385031215611bd257600080fd5b611bdb83611af9565b9150611be960208401611baf565b90509250929050565b60008060408385031215611c0557600080fd5b50508035926020909101359150565b600080600060608486031215611c2957600080fd5b611c3284611af9565b9250611c4060208501611af9565b9150611c4e60408501611af9565b90509250925092565b60008060408385031215611c6a57600080fd5b611c7383611af9565b9150611be960208401611af9565b60008060408385031215611c9457600080fd5b611b3183611baf565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526010908201526f4665657320746f6f206869676820212160801b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761074a5761074a611cfc565b600082611d4657634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561074a5761074a611cfc565b8181038181111561074a5761074a611cfc565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611dd75784516001600160a01b031683529383019391830191600101611db2565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212200d910098c01628c7f23b07d049eab34f8dc50ddea290a1ba28e10a3ed044646e64736f6c63430008130033