//
0x6101606040523480156200001257600080fd5b5060405162001d5938038062001d59833981810160405260608110156200003857600080fd5b50805160208201516040909201519091906200005d836001600160e01b036200025b16565b62000071826001600160e01b036200025b16565b62000085816001600160e01b036200025b16565b6001600160601b0319606084901b1661010052604080516001600160a01b038516815290517f143219c9e69b09e07e095fcc889b43d8f46ca892bba65f08dc3a0050869a56789181900360200190a16001600160601b0319606083901b1661012052604080516001600160a01b038416815290517f82966d27eea39b038ee0fa30cd16532bb24f6e65d31cb58fb227aa5766cdcc7f9181900360200190a16001600160601b0319606082901b1661014052604080516001600160a01b038316815290517f3ca631ffcd2a9b5d9ae18543fc82f58eb4ca33af9e6ab01b7a8e95331e6ed9859181900360200190a160408051808201825260058152641a5bd554d160da1b602091820152815180830190925260018252603160f81b9101527fd7f4cf1b477a1d2bef8b303174a41eeb5b3f68c568803d80dde679355a1408c460c08190527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660e0819052620002016001600160e01b036200031016565b60a0526200023a7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f83836001600160e01b036200031416565b608052620002506001600160e01b036200037516565b505050505062000472565b6001600160a01b038116620002b7576040805162461bcd60e51b815260206004820152601e60248201527f4163636f756e742063616e6e6f74206265207a65726f20616464726573730000604482015290519081900360640190fd5b803b806200030c576040805162461bcd60e51b815260206004820181905260248201527f4163636f756e7420636f64652073697a652063616e6e6f74206265207a65726f604482015290519081900360640190fd5b5050565b4690565b60008383836200032c6001600160e01b036200031016565b6040805160208082019690965280820194909452606084019290925260808301523060a0808401919091528151808403909101815260c090920190528051910120949350505050565b6200038a60ff6001600160e01b036200038d16565b50565b603354600090610100900460ff16156200040c578160ff166001148015620003c65750620003c4306001600160e01b036200046c16565b155b620004035760405162461bcd60e51b815260040180806020018281038252602e81526020018062001d2b602e913960400191505060405180910390fd5b50600062000467565b60335460ff808416911610620004545760405162461bcd60e51b815260040180806020018281038252602e81526020018062001d2b602e913960400191505060405180910390fd5b506033805460ff191660ff831617905560015b919050565b3b151590565b60805160a05160c05160e0516101005160601c6101205160601c6101405160601c61182a62000501600039806108a85280610f4f52806110c0528061133b5250806105895280610d355280610ed452806113a052806114bd5250806106de5280610d035280610f11528061136d525080610c4b525080610c2a525080610bb0525080610be0525061182a6000f3fe608060405234801561001057600080fd5b506004361061016a5760003560e01c806306fdde031461016f578063095ea7b3146101ec5780630b622ab21461022c57806310ce43bd1461025057806318160ddd1461026a57806320c582be1461027257806323b872dd146102aa578063313ce567146102e057806331f7d964146102fe578063395093511461030657806340c10f191461033257806354fd4d501461035e5780635a4d28bb1461036657806370a082311461036e57806379ba5097146103945780637ecebe001461039c5780638129fc1c146103c25780638da5cb5b146103ca5780638f32d59b146103d257806395d89b411461016f5780639dc29fac146103da578063a457c2d714610406578063a9059cbb14610432578063b7f8cf9b1461045e578063bb997bac14610466578063d505accf1461049c578063dd62ed3e146104ed578063e30c39781461051b578063f2fde38b14610523578063f698da2514610549575b600080fd5b610177610551565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101b1578181015183820152602001610199565b50505050905090810190601f1680156101de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102186004803603604081101561020257600080fd5b506001600160a01b038135169060200135610571565b604080519115158252519081900360200190f35b610234610587565b604080516001600160a01b039092168252519081900360200190f35b6102586105ab565b60408051918252519081900360200190f35b6102586105cf565b6102a86004803603606081101561028857600080fd5b506001600160a01b038135811691602081013590911690604001356105d5565b005b610218600480360360608110156102c057600080fd5b506001600160a01b038135811691602081013590911690604001356105ed565b6102e8610665565b6040805160ff9092168252519081900360200190f35b61023461066a565b6102186004803603604081101561031c57600080fd5b506001600160a01b03813516906020013561066f565b6102a86004803603604081101561034857600080fd5b506001600160a01b0381351690602001356106ab565b6101776106c1565b6102346106dc565b6102586004803603602081101561038457600080fd5b50356001600160a01b0316610700565b6102a861071f565b610258600480360360208110156103b257600080fd5b50356001600160a01b031661077a565b6102a8610795565b610234610809565b610218610818565b6102a8600480360360408110156103f057600080fd5b506001600160a01b038135169060200135610829565b6102186004803603604081101561041c57600080fd5b506001600160a01b03813516906020013561083b565b6102186004803603604081101561044857600080fd5b506001600160a01b038135169060200135610890565b6102346108a6565b6102a86004803603606081101561047c57600080fd5b506001600160a01b038135811691602081013590911690604001356108ca565b6102a8600480360360e08110156104b257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356108d2565b6102586004803603604081101561050357600080fd5b506001600160a01b0381358116916020013516610abb565b610234610ae6565b6102a86004803603602081101561053957600080fd5b50356001600160a01b0316610af5565b610258610bac565b6040805180820190915260058152641a5bd554d160da1b60208201525b90565b600061057e338484610c76565b50600192915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c990565b60345490565b6105dd610cf8565b6105e8838383610d94565b505050565b60006105f883610e76565b610603848484610d94565b61065b843361065685604051806060016040528060288152602001611758602891396001600160a01b038a166000908152603760209081526040808320338452909152902054919063ffffffff610fbf16565b610c76565b5060019392505050565b601290565b600081565b3360008181526037602090815260408083206001600160a01b0387168452909152812054909161057e918590610656908663ffffffff61105616565b6106b36110b5565b6106bd8282611132565b5050565b6040805180820190915260018152603160f81b602082015290565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152603660205260409020545b919050565b3380610729610ae6565b6001600160a01b03161461076e5760405162461bcd60e51b81526004018080602001828103825260298152602001806116436029913960400191505060405180910390fd5b610777816111c7565b50565b6001600160a01b031660009081526035602052604090205490565b60006107a16001611221565b905080156107b9576033805461ff0019166101001790555b6107c16112ed565b8015610777576033805461ff0019169055604080516001815290517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989181900360200190a150565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b610831611330565b6106bd82826113fd565b600061057e3384610656856040518060600160405280602581526020016117d0602591393360009081526037602090815260408083206001600160a01b038d168452909152902054919063ffffffff610fbf16565b600061089b83610e76565b61057e338484610d94565b7f000000000000000000000000000000000000000000000000000000000000000081565b6105dd6114b2565b4284101561091a576040805162461bcd60e51b815260206004820152601060248201526f6578706972656420646561646c696e6560801b604482015290519081900360640190fd5b6000610924610bac565b6001600160a01b03808a1660008181526035602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958e166060860152608085018d905260a085019590955260c08085018c90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff8a166101828501526101a284018990526101c284018890525194955090936101e280840193601f198301929081900390910190855afa158015610a3f573d6000803e3d6000fd5b505050602060405103519050886001600160a01b0316816001600160a01b031614610aa5576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b610ab0898989610c76565b505050505050505050565b6001600160a01b03918216600090815260376020908152604080832093909416825291909152205490565b6001546001600160a01b031690565b610afd610818565b610b4e576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b038316908117909155610b74610809565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60007f0000000000000000000000000000000000000000000000000000000000000000610bd761152f565b1415610c0457507f000000000000000000000000000000000000000000000000000000000000000061056e565b610c6f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611533565b905061056e565b6001600160a01b038316610c8657fe5b6001600160a01b038216610c9657fe5b6001600160a01b03808416600081815260376020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610d575750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610d925760405162461bcd60e51b81526004018080602001828103825260308152602001806117a06030913960400191505060405180910390fd5b565b6001600160a01b038316610da457fe5b6001600160a01b038216610db457fe5b610df78160405180606001604052806026815260200161166c602691396001600160a01b038616600090815260366020526040902054919063ffffffff610fbf16565b6001600160a01b038085166000908152603660205260408082209390935590841681522054610e2c908263ffffffff61105616565b6001600160a01b03808416600081815260366020908152604091829020949094558051858152905191939287169260008051602061178083398151915292918290030190a3505050565b6001600160a01b03811615801590610e9757506001600160a01b0381163014155b610ed25760405162461bcd60e51b815260040180806020018281038252604f8152602001806115d2604f913960600191505060405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614158015610f4657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b8015610f8457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b6107775760405162461bcd60e51b81526004018080602001828103825260518152602001806117076051913960600191505060405180910390fd5b6000818484111561104e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611013578181015183820152602001610ffb565b50505050905090810190601f1680156110405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156110ae576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d92576040805162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f7420426f72726f7765724f7065726174696f6e73604482015290519081900360640190fd5b6001600160a01b03821661114257fe5b603454611155908263ffffffff61105616565b6034556001600160a01b038216600090815260366020526040902054611181908263ffffffff61105616565b6001600160a01b03831660008181526036602090815260408083209490945583518581529351929391926000805160206117808339815191529281900390910190a35050565b600180546001600160a01b0319908116909155600080546001600160a01b03848116938216841783556040519116929183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b603354600090610100900460ff1615611290578160ff16600114801561124d575061124b30611589565b155b6112885760405162461bcd60e51b815260040180806020018281038252602e8152602001806116d9602e913960400191505060405180910390fd5b50600061071a565b60335460ff8084169116106112d65760405162461bcd60e51b815260040180806020018281038252602e8152602001806116d9602e913960400191505060405180910390fd5b506033805460ff191660ff8316179055600161071a565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061138f5750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b806113c25750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b610d925760405162461bcd60e51b81526004018080602001828103825260478152602001806116926047913960600191505060405180910390fd5b6001600160a01b03821661140d57fe5b61145081604051806060016040528060228152602001611621602291396001600160a01b038516600090815260366020526040902054919063ffffffff610fbf16565b6001600160a01b03831660009081526036602052604090205560345461147c908263ffffffff61158f16565b6034556040805182815290516000916001600160a01b038516916000805160206117808339815191529181900360200190a35050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d92576040805162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206973206e6f74207468652053746162696c697479506f6f6c00604482015290519081900360640190fd5b4690565b600083838361154061152f565b6040805160208082019690965280820194909452606084019290925260808301523060a0808401919091528151808403909101815260c090920190528051910120949350505050565b3b151590565b60006110ae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fbf56fe43616e6e6f74207472616e7366657220746f6b656e73206469726563746c7920746f2074686520696f55534420746f6b656e20636f6e7472616374206f7220746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206e6577206f776e657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636543616c6c6572206973206e65697468657220426f72726f7765724f7065726174696f6e73206e6f722054726f76654d616e61676572206e6f722053746162696c697479506f6f6c496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656443616e6e6f74207472616e7366657220746f6b656e73206469726563746c7920746f207468652053746162696c697479506f6f6c2c2054726f76654d616e61676572206f7220426f72726f7765724f707345524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef43616c6c6572206973206e6569746865722054726f76654d616e61676572206e6f722053746162696c697479506f6f6c45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212205bfa1123fd1e9a2f36e80eaafea14d9c7c80b3cc58a814c6c655adc8d1f1ebc464736f6c634300060b0033496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a65640000000000000000000000004315bce6076953571caf1903d15d682727fbd935000000000000000000000000265a1e0b70f5dfc9bd3fcfc98fb33d833515bab7000000000000000000000000564cc0e0ff15b0414b5db1b804f67d07c231fce5