608060405260006010553480156200001657600080fd5b50604051620035ec380380620035ec833981016040819052620000399162000487565b60405180604001604052806007815260200166141c9bdc1a195d60ca1b81525060405180604001604052806007815260200166141493d412115560ca1b81525081600090805190602001906200009192919062000314565b508051620000a790600190602084019062000314565b505050620000c4620000be6200011460201b60201c565b62000118565b8251620000d990600e90602086019062000314565b508151620000ef90600f90602085019062000314565b50620000fd6000336200016a565b6200010b816103e86200020f565b50505062000551565b3390565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff166200020b576000828152600a602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001ca3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6127106001600160601b0382161115620002835760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b60648201526084015b60405180910390fd5b6001600160a01b038216620002db5760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c69642072656365697665720000000000000060448201526064016200027a565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217600c55565b828054620003229062000514565b90600052602060002090601f01602090048101928262000346576000855562000391565b82601f106200036157805160ff191683800117855562000391565b8280016001018555821562000391579182015b828111156200039157825182559160200191906001019062000374565b506200039f929150620003a3565b5090565b5b808211156200039f5760008155600101620003a4565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620003e257600080fd5b81516001600160401b0380821115620003ff57620003ff620003ba565b604051601f8301601f19908116603f011681019082821181831017156200042a576200042a620003ba565b816040528381526020925086838588010111156200044757600080fd5b600091505b838210156200046b57858201830151818301840152908201906200044c565b838211156200047d5760008385830101525b9695505050505050565b6000806000606084860312156200049d57600080fd5b83516001600160401b0380821115620004b557600080fd5b620004c387838801620003d0565b94506020860151915080821115620004da57600080fd5b50620004e986828701620003d0565b604086015190935090506001600160a01b03811681146200050957600080fd5b809150509250925092565b600181811c908216806200052957607f821691505b602082108114156200054b57634e487b7160e01b600052602260045260246000fd5b50919050565b61308b80620005616000396000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806370a0823111610145578063c87b56dd116100bd578063e73496cd1161008c578063e985e9c511610071578063e985e9c5146105d4578063f2fde38b14610610578063fc97a3031461062357600080fd5b8063e73496cd146105ac578063e8a3d485146105cc57600080fd5b8063c87b56dd146104ee578063ceddc25b14610501578063d547741f1461055b578063d6603fb51461056e57600080fd5b8063938e3d7b11610114578063a217fddf116100f9578063a217fddf146104c0578063a22cb465146104c8578063b88d4fde146104db57600080fd5b8063938e3d7b146104a557806395d89b41146104b857600080fd5b806370a0823114610440578063715018a6146104535780638da5cb5b1461045b57806391d148541461046c57600080fd5b80632a55205a116101d85780633613a9f4116101a757806342842e0e1161018c57806342842e0e146104075780634f6ccce71461041a5780636352211e1461042d57600080fd5b80633613a9f4146103cf57806336568abe146103f457600080fd5b80632a55205a146103645780632f2ff15d146103965780632f745c59146103a957806330176e13146103bc57600080fd5b8063095ea7b31161022f57806318160ddd1161021457806318160ddd1461032657806323b872dd1461032e578063248a9ca31461034157600080fd5b8063095ea7b3146102de5780630dcdb427146102f157600080fd5b806301ffc9a714610261578063049f88011461028957806306fdde031461029e578063081812fc146102b3575b600080fd5b61027461026f36600461271d565b610643565b60405190151581526020015b60405180910390f35b61029c610297366004612777565b610654565b005b6102a6610830565b6040516102809190612852565b6102c66102c1366004612865565b6108c2565b6040516001600160a01b039091168152602001610280565b61029c6102ec36600461287e565b6108e9565b6103187f2bd42269a03a84c171764c4a64e2629832e914d7e67232b2b259c135f80d023581565b604051908152602001610280565b600854610318565b61029c61033c3660046128a8565b610a20565b61031861034f366004612865565b6000908152600a602052604090206001015490565b6103776103723660046128e4565b610aa7565b604080516001600160a01b039093168352602083019190915201610280565b61029c6103a4366004612906565b610b84565b6103186103b736600461287e565b610ba9565b61029c6103ca3660046129f5565b610c51565b6103e26103dd366004612865565b610c70565b60405160ff9091168152602001610280565b61029c610402366004612906565b610c99565b61029c6104153660046128a8565b610d21565b610318610428366004612865565b610d3c565b6102c661043b366004612865565b610de0565b61031861044e366004612a3e565b610e45565b61029c610edf565b600b546001600160a01b03166102c6565b61027461047a366004612906565b6000918252600a602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61029c6104b33660046129f5565b610ef3565b6102a6610f0e565b610318600081565b61029c6104d6366004612a59565b610f1d565b61029c6104e9366004612a83565b610f28565b6102a66104fc366004612865565b610fb6565b61051461050f366004612865565b610fca565b6040516102809190600060808201905063ffffffff835116825260ff602084015116602083015260ff604084015116604083015260ff606084015116606083015292915050565b61029c610569366004612906565b611056565b61059761057c366004612aff565b60ff1660009081526012602052604090205463ffffffff1690565b60405163ffffffff9091168152602001610280565b6105bf6105ba366004612865565b61107b565b6040516102809190612b1a565b6102a66111fd565b6102746105e2366004612c01565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61029c61061e366004612a3e565b61120c565b610636610631366004612a3e565b61129c565b6040516102809190612c2b565b600061064e8261133e565b92915050565b7f2bd42269a03a84c171764c4a64e2629832e914d7e67232b2b259c135f80d023561067e81611394565b60108054908190600061069083612c9e565b919050555061069f878261139e565b60ff868116600081815260126020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008116600163ffffffff9283169081018316919091179092558251608080820185528382528186018881528e8a168387018181528f8c1660608087018281528f8d5260118c529b8a902096518754955193519c5198167fffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000090951694909417640100000000928e1692909202919091177fffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffff16650100000000009a8d169a909a027fffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffff1699909917660100000000000095909b1694909402999099179091558351968752938601529084019290925286151593830193909352916001600160a01b038a169184917f22bdcb1e85a87f5838736b5a1c3305d4bcb788ebe910c6e1f2a483cb96c1fcf1910160405180910390a35050505050505050565b60606000805461083f90612cd7565b80601f016020809104026020016040519081016040528092919081815260200182805461086b90612cd7565b80156108b85780601f1061088d576101008083540402835291602001916108b8565b820191906000526020600020905b81548152906001019060200180831161089b57829003601f168201915b5050505050905090565b60006108cd82611504565b506000908152600460205260409020546001600160a01b031690565b60006108f482610de0565b9050806001600160a01b0316836001600160a01b031614156109835760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b038216148061099f575061099f81336105e2565b610a115760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c0000606482015260840161097a565b610a1b8383611568565b505050565b610a2a33826115ee565b610a9c5760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f766564000000000000000000000000000000000000606482015260840161097a565b610a1b83838361166d565b6000828152600d602090815260408083208151808301909252546001600160a01b038116808352740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16928201929092528291610b48575060408051808201909152600c546001600160a01b03811682527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1660208201525b602081015160009061271090610b6c906bffffffffffffffffffffffff1687612d2b565b610b769190612d97565b915196919550909350505050565b6000828152600a6020526040902060010154610b9f81611394565b610a1b838361185d565b6000610bb483610e45565b8210610c285760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e6473000000000000000000000000000000000000000000606482015260840161097a565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b610c5961191d565b8051610c6c90600e906020840190612656565b5050565b6000610c7b82611504565b50600090815260116020526040902054640100000000900460ff1690565b6001600160a01b0381163314610d175760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c660000000000000000000000000000000000606482015260840161097a565b610c6c8282611977565b610a1b83838360405180602001604052806000815250610f28565b6000610d4760085490565b8210610dbb5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e64730000000000000000000000000000000000000000606482015260840161097a565b60088281548110610dce57610dce612dab565b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b03168061064e5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604482015260640161097a565b60006001600160a01b038216610ec35760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e65720000000000000000000000000000000000000000000000606482015260840161097a565b506001600160a01b031660009081526003602052604090205490565b610ee761191d565b610ef16000611a18565b565b610efb61191d565b8051610c6c90600f906020840190612656565b60606001805461083f90612cd7565b610c6c338383611a82565b610f3233836115ee565b610fa45760405162461bcd60e51b815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f766564000000000000000000000000000000000000606482015260840161097a565b610fb084848484611b6f565b50505050565b6060610fc182611504565b61064e82611bf8565b604080516080810182526000808252602082018190529181018290526060810191909152610ff782611504565b506000908152601160209081526040918290208251608081018452905463ffffffff8116825260ff6401000000008204811693830193909352650100000000008104831693820193909352660100000000000090920416606082015290565b6000828152600a602052604090206001015461107181611394565b610a1b8383611977565b606061108682611504565b60008281526011602090815260408083208151608081018352905463ffffffff8116825260ff64010000000082048116838601526501000000000082048116838501526601000000000000909104166060808301919091528251600280825291810190935290939282015b6111166040805160608101909152806000815260200160608152602001606081525090565b8152602001906001900390816110f15790505090506111716040518060400160405280600581526020017f636c617373000000000000000000000000000000000000000000000000000000815250836020015160ff16611c2c565b8160008151811061118457611184612dab565b60200260200101819052506111d86040518060400160405280600781526020017f696d616765496400000000000000000000000000000000000000000000000000815250836000015163ffffffff16611c2c565b816001815181106111eb576111eb612dab565b60209081029190910101529392505050565b6060600f805461083f90612cd7565b61121461191d565b6001600160a01b0381166112905760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161097a565b61129981611a18565b50565b606060006112a983610e45565b905060008167ffffffffffffffff8111156112c6576112c6612932565b6040519080825280602002602001820160405280156112ef578160200160208202803683370190505b50905060005b82811015611336576113078582610ba9565b82828151811061131957611319612dab565b60209081029190910101528061132e81612c9e565b9150506112f5565b509392505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f2a55205a00000000000000000000000000000000000000000000000000000000148061064e575061064e82611cb4565b6112998133611d0a565b6001600160a01b0382166113f45760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161097a565b6000818152600260205260409020546001600160a01b0316156114595760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161097a565b61146560008383611da8565b6001600160a01b038216600090815260036020526040812080546001929061148e908490612dda565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000818152600260205260409020546001600160a01b03166112995760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e2049440000000000000000604482015260640161097a565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03841690811790915581906115b582610de0565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806115fa83610de0565b9050806001600160a01b0316846001600160a01b0316148061164157506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806116655750836001600160a01b031661165a846108c2565b6001600160a01b0316145b949350505050565b826001600160a01b031661168082610de0565b6001600160a01b0316146116fc5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e6572000000000000000000000000000000000000000000000000000000606482015260840161097a565b6001600160a01b0382166117775760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161097a565b611782838383611da8565b61178d600082611568565b6001600160a01b03831660009081526003602052604081208054600192906117b6908490612df2565b90915550506001600160a01b03821660009081526003602052604081208054600192906117e4908490612dda565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff16610c6c576000828152600a602090815260408083206001600160a01b0385168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556118d93390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600b546001600160a01b03163314610ef15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161097a565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff1615610c6c576000828152600a602090815260408083206001600160a01b038516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600b80546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415611ae45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161097a565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611b7a84848461166d565b611b8684848484611e60565b610fb05760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161097a565b6060600e611c058361202b565b604051602001611c16929190612e25565b6040516020818303038152906040529050919050565b611c516040805160608101909152806000815260200160608152602001606081525090565b6040805160608101909152806000815260200184815260200183604051602001611c7d91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290529392505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061064e575061064e8261215d565b6000828152600a602090815260408083206001600160a01b038516845290915290205460ff16610c6c57611d48816001600160a01b031660146121b3565b611d538360206121b3565b604051602001611d64929190612f03565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262461bcd60e51b825261097a91600401612852565b6001600160a01b038316611e0357611dfe81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611e26565b816001600160a01b0316836001600160a01b031614611e2657611e2683826123e3565b6001600160a01b038216611e3d57610a1b81612480565b826001600160a01b0316826001600160a01b031614610a1b57610a1b828261252f565b60006001600160a01b0384163b15612020576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290611ebd903390899088908890600401612f84565b602060405180830381600087803b158015611ed757600080fd5b505af1925050508015611f25575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611f2291810190612fc0565b60015b611fd5573d808015611f53576040519150601f19603f3d011682016040523d82523d6000602084013e611f58565b606091505b508051611fcd5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e7465720000000000000000000000000000606482015260840161097a565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050611665565b506001949350505050565b60608161206b57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115612095578061207f81612c9e565b915061208e9050600a83612d97565b915061206f565b60008167ffffffffffffffff8111156120b0576120b0612932565b6040519080825280601f01601f1916602001820160405280156120da576020820181803683370190505b5090505b8415611665576120ef600183612df2565b91506120fc600a86612fdd565b612107906030612dda565b60f81b81838151811061211c5761211c612dab565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612156600a86612d97565b94506120de565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f780e9d6300000000000000000000000000000000000000000000000000000000148061064e575061064e82612573565b606060006121c2836002612d2b565b6121cd906002612dda565b67ffffffffffffffff8111156121e5576121e5612932565b6040519080825280601f01601f19166020018201604052801561220f576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061224657612246612dab565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106122a9576122a9612dab565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122e5846002612d2b565b6122f0906001612dda565b90505b600181111561238d577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061233157612331612dab565b1a60f81b82828151811061234757612347612dab565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361238681612ff1565b90506122f3565b5083156123dc5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161097a565b9392505050565b600060016123f084610e45565b6123fa9190612df2565b60008381526007602052604090205490915080821461244d576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061249290600190612df2565b600083815260096020526040812054600880549394509092849081106124ba576124ba612dab565b9060005260206000200154905080600883815481106124db576124db612dab565b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061251357612513613026565b6001900381819060005260206000200160009055905550505050565b600061253a83610e45565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061260657507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061064e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461064e565b82805461266290612cd7565b90600052602060002090601f01602090048101928261268457600085556126ca565b82601f1061269d57805160ff19168380011785556126ca565b828001600101855582156126ca579182015b828111156126ca5782518255916020019190600101906126af565b506126d69291506126da565b5090565b5b808211156126d657600081556001016126db565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461129957600080fd5b60006020828403121561272f57600080fd5b81356123dc816126ef565b80356001600160a01b038116811461275157600080fd5b919050565b803560ff8116811461275157600080fd5b8035801515811461275157600080fd5b600080600080600060a0868803121561278f57600080fd5b6127988661273a565b94506127a660208701612756565b93506127b460408701612756565b92506127c260608701612756565b91506127d060808701612767565b90509295509295909350565b60005b838110156127f75781810151838201526020016127df565b83811115610fb05750506000910152565b600081518084526128208160208601602086016127dc565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006123dc6020830184612808565b60006020828403121561287757600080fd5b5035919050565b6000806040838503121561289157600080fd5b61289a8361273a565b946020939093013593505050565b6000806000606084860312156128bd57600080fd5b6128c68461273a565b92506128d46020850161273a565b9150604084013590509250925092565b600080604083850312156128f757600080fd5b50508035926020909101359150565b6000806040838503121561291957600080fd5b823591506129296020840161273a565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600067ffffffffffffffff8084111561297c5761297c612932565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156129c2576129c2612932565b816040528093508581528686860111156129db57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215612a0757600080fd5b813567ffffffffffffffff811115612a1e57600080fd5b8201601f81018413612a2f57600080fd5b61166584823560208401612961565b600060208284031215612a5057600080fd5b6123dc8261273a565b60008060408385031215612a6c57600080fd5b612a758361273a565b915061292960208401612767565b60008060008060808587031215612a9957600080fd5b612aa28561273a565b9350612ab06020860161273a565b925060408501359150606085013567ffffffffffffffff811115612ad357600080fd5b8501601f81018713612ae457600080fd5b612af387823560208401612961565b91505092959194509250565b600060208284031215612b1157600080fd5b6123dc82612756565b60006020808301818452808551808352604092508286019150828160051b8701018488016000805b84811015612bf2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08a850301865282516060815160038110612bac577f4e487b710000000000000000000000000000000000000000000000000000000085526021600452602485fd5b8652818a01518a8701829052612bc482880182612808565b91505088820151915085810389870152612bde8183612808565b978a01979550505091870191600101612b42565b50919998505050505050505050565b60008060408385031215612c1457600080fd5b612c1d8361273a565b91506129296020840161273a565b6020808252825182820181905260009190848201906040850190845b81811015612c6357835183529284019291840191600101612c47565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612cd057612cd0612c6f565b5060010190565b600181811c90821680612ceb57607f821691505b60208210811415612d25577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d6357612d63612c6f565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612da657612da6612d68565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115612ded57612ded612c6f565b500190565b600082821015612e0457612e04612c6f565b500390565b60008151612e1b8185602086016127dc565b9290920192915050565b600080845481600182811c915080831680612e4157607f831692505b6020808410821415612e7a577f4e487b710000000000000000000000000000000000000000000000000000000086526022600452602486fd5b818015612e8e5760018114612ebd57612eea565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650612eea565b60008b81526020902060005b86811015612ee25781548b820152908501908301612ec9565b505084890196505b505050505050612efa8185612e09565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612f3b8160178501602088016127dc565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612f788160288401602088016127dc565b01602801949350505050565b60006001600160a01b03808716835280861660208401525083604083015260806060830152612fb66080830184612808565b9695505050505050565b600060208284031215612fd257600080fd5b81516123dc816126ef565b600082612fec57612fec612d68565b500690565b60008161300057613000612c6f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea264697066735822122059398fa9df87696449ecae7d68cbec8c0ff242aafc310b8688c1f624109961a764736f6c63430008090033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000cd5541a9a567a7ebfdd4897d49b45c936c9c117f000000000000000000000000000000000000000000000000000000000000003268747470733a2f2f7777772e6e616e6e64612e78797a2f6170692f6d657461646174612f746f6b656e2f70726f706865742f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003468747470733a2f2f7777772e6e616e6e64612e78797a2f6170692f6d657461646174612f636f6e74726163742f70726f70686574000000000000000000000000