0x608060405234801561001057600080fd5b50600061001b610089565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001808055336000908152600260205260409020805460ff1916909117905561008d565b3390565b61103c8061009c6000396000f3fe6080604052600436106101125760003560e01c8063715018a6116100a5578063cd84b89d11610074578063f136a87411610059578063f136a87414610459578063f2fde38b14610499578063f3fef3a3146104d957610119565b8063cd84b89d14610404578063ddca3f431461044457610119565b8063715018a6146103665780638da5cb5b1461037b578063bccc96d514610390578063c758b017146103ce57610119565b806366530579116100e1578063665305791461024b578063673448dd146102945780636c473aff146102e8578063704316e51461032657610119565b8063059416441461011b5780630b4d5107146101715780632ca4a5b0146101b9578063575765e21461020357610119565b3661011957005b005b34801561012757600080fd5b506101196004803603608081101561013e57600080fd5b5061ffff8135169073ffffffffffffffffffffffffffffffffffffffff602082013516906040810135906060013561051f565b34801561017d57600080fd5b506101a76004803603604081101561019457600080fd5b5061ffff813581169160200135166105cd565b60408051918252519081900360200190f35b3480156101c557600080fd5b50610119600480360360408110156101dc57600080fd5b50803561ffff16906020013573ffffffffffffffffffffffffffffffffffffffff166105f4565b34801561020f57600080fd5b506101196004803603604081101561022657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156106a0565b34801561025757600080fd5b506101196004803603606081101561026e57600080fd5b50803561ffff908116916020810135909116906040013567ffffffffffffffff166106f6565b3480156102a057600080fd5b506102d4600480360360208110156102b757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610749565b604080519115158252519081900360200190f35b3480156102f457600080fd5b506102fd610774565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561033257600080fd5b506101196004803603608081101561034957600080fd5b5061ffff8135169060208101359060408101359060600135610790565b34801561037257600080fd5b506101196108a1565b34801561038757600080fd5b506102fd6109b8565b34801561039c57600080fd5b50610119600480360360608110156103b357600080fd5b5061ffff8135811691602081013590911690604001356109d4565b3480156103da57600080fd5b506101a7600480360360408110156103f157600080fd5b5061ffff81358116916020013516610aa2565b34801561041057600080fd5b506101196004803603602081101561042757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610abf565b34801561045057600080fd5b506101a7610bae565b34801561046557600080fd5b506102d46004803603602081101561047c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bb4565b3480156104a557600080fd5b50610119600480360360208110156104bc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610bc9565b3480156104e557600080fd5b50610119600480360360408110156104fc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610d6a565b610527610fb0565b73ffffffffffffffffffffffffffffffffffffffff166105456109b8565b73ffffffffffffffffffffffffffffffffffffffff16146105c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b50505050565b61ffff80821660009081526003602090815260408083209386168352929052205492915050565b6105fc610fb0565b73ffffffffffffffffffffffffffffffffffffffff1661061a6109b8565b73ffffffffffffffffffffffffffffffffffffffff161461069c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b5050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6040805161ffff80861682528416602082015267ffffffffffffffff83168183015290517ff5f7eeb9c1ffb10aced9d0a5354641e9bccdde560963d05f8d26ad4a460c89a29181900360600190a1505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b3360009081526002602052604090205460ff166107f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180610fdb602c913960400191505060405180910390fd5b600554604080517f704316e500000000000000000000000000000000000000000000000000000000815261ffff87166004820152602481018690526044810185905260648101849052905173ffffffffffffffffffffffffffffffffffffffff9092169163704316e59160848082019260009290919082900301818387803b15801561088357600080fd5b505af1158015610897573d6000803e3d6000fd5b5050505050505050565b6108a9610fb0565b73ffffffffffffffffffffffffffffffffffffffff166108c76109b8565b73ffffffffffffffffffffffffffffffffffffffff161461094957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6109dc610fb0565b73ffffffffffffffffffffffffffffffffffffffff166109fa6109b8565b73ffffffffffffffffffffffffffffffffffffffff1614610a7c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61ffff918216600090815260036020908152604080832095909416825293909352912055565b600360209081526000928352604080842090915290825290205481565b610ac7610fb0565b73ffffffffffffffffffffffffffffffffffffffff16610ae56109b8565b73ffffffffffffffffffffffffffffffffffffffff1614610b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60045481565b60026020526000908152604090205460ff1681565b610bd1610fb0565b73ffffffffffffffffffffffffffffffffffffffff16610bef6109b8565b73ffffffffffffffffffffffffffffffffffffffff1614610c7157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180610fb56026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610d72610fb0565b73ffffffffffffffffffffffffffffffffffffffff16610d906109b8565b73ffffffffffffffffffffffffffffffffffffffff1614610e1257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60026001541415610e8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015560405160009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610ee1576040519150601f19603f3d011682016040523d82523d6000602084013e610ee6565b606091505b5050905080610f5657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6661696c656420746f2077697468647261770000000000000000000000000000604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff851681526020810184905281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a150506001805550565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734c617965725a65726f4f7261636c654d6f636b3a2063616c6c6572206d75737420626520617070726f766564a2646970667358221220881ad3773ffabc07dca95d4a44775184c51aeaffe6bd2193ce4cd0ff53b0b2e664736f6c63430007060033