60806040526000600d819055600e556011805461ffff191690553480156200002657600080fd5b50604080518082018252600c81526b084cad6de9ccad6def440acb60a31b60208083019182528351808501909452600484526342454b4f60e01b90840152815191929162000077916000916200010b565b5080516200008d9060019060208401906200010b565b505050620000aa620000a4620000b560201b60201c565b620000b9565b6001600b55620001ee565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200011990620001b1565b90600052602060002090601f0160209004810192826200013d576000855562000188565b82601f106200015857805160ff191683800117855562000188565b8280016001018555821562000188579182015b82811115620001885782518255916020019190600101906200016b565b50620001969291506200019a565b5090565b5b808211156200019657600081556001016200019b565b600181811c90821680620001c657607f821691505b60208210811415620001e857634e487b7160e01b600052602260045260246000fd5b50919050565b61300180620001fe6000396000f3fe6080604052600436106102dc5760003560e01c806368428a1b11610184578063a22cb465116100d6578063ceacb2551161008a578063e985e9c511610064578063e985e9c5146107a2578063f2fde38b146107eb578063f3ca4d801461080b57600080fd5b8063ceacb25514610749578063db4bec441461075f578063e95cd1451461078c57600080fd5b8063b88d4fde116100bb578063b88d4fde14610709578063c51c2d261461068c578063c87b56dd1461072957600080fd5b8063a22cb465146106c9578063b7822ede146106e957600080fd5b806373fc16ad1161013857806390919a4b1161011257806390919a4b1461068c57806395d89b41146106a1578063a0712d68146106b657600080fd5b806373fc16ad1461062c578063853828b6146106595780638da5cb5b1461066e57600080fd5b806370a082311161016957806370a08231146105e1578063715018a614610601578063738e72181461061657600080fd5b806368428a1b146105a45780636c6177e8146105c157600080fd5b806329e378ec1161023d57806353135ca0116101f157806360d938dc116101cb57806360d938dc146105555780636131285a1461056f5780636352211e1461058457600080fd5b806353135ca0146104fe57806355f804b314610516578063564566a81461053657600080fd5b80632fbba115116102225780632fbba1151461049e57806342842e0e146104be5780634f6ccce7146104de57600080fd5b806329e378ec1461044c5780632f745c591461047e57600080fd5b80631486e4821161029457806318712c211161027957806318712c21146103f157806323b872dd1461041157806324f7f5eb1461043157600080fd5b80631486e482146103b257806318160ddd146103dc57600080fd5b8063081812fc116102c5578063081812fc14610338578063095ea7b314610370578063113929d81461039257600080fd5b806301ffc9a7146102e157806306fdde0314610316575b600080fd5b3480156102ed57600080fd5b506103016102fc3660046129be565b61081e565b60405190151581526020015b60405180910390f35b34801561032257600080fd5b5061032b61082f565b60405161030d9190612a33565b34801561034457600080fd5b50610358610353366004612a46565b6108c1565b6040516001600160a01b03909116815260200161030d565b34801561037c57600080fd5b5061039061038b366004612a7b565b61095b565b005b34801561039e57600080fd5b506103906103ad366004612ab5565b610a71565b3480156103be57600080fd5b506103ce67013fbe85edc9000081565b60405190815260200161030d565b3480156103e857600080fd5b506008546103ce565b3480156103fd57600080fd5b5061039061040c366004612ad0565b610ade565b34801561041d57600080fd5b5061039061042c366004612af2565b610b51565b34801561043d57600080fd5b506103ce66f8b0a10e47000081565b34801561045857600080fd5b5061046c610467366004612b7a565b610bcc565b60405160ff909116815260200161030d565b34801561048a57600080fd5b506103ce610499366004612a7b565b610cbc565b3480156104aa57600080fd5b506103906104b9366004612a46565b610d64565b3480156104ca57600080fd5b506103906104d9366004612af2565b610e56565b3480156104ea57600080fd5b506103ce6104f9366004612a46565b610e71565b34801561050a57600080fd5b5060115460ff16610301565b34801561052257600080fd5b50610390610531366004612c72565b610f15565b34801561054257600080fd5b5060115461030190610100900460ff1681565b34801561056157600080fd5b506011546103019060ff1681565b34801561057b57600080fd5b506103ce600681565b34801561059057600080fd5b5061035861059f366004612a46565b610f82565b3480156105b057600080fd5b50601154610100900460ff16610301565b3480156105cd57600080fd5b506103906105dc366004612ab5565b61100d565b3480156105ed57600080fd5b506103ce6105fc366004612cbb565b611081565b34801561060d57600080fd5b5061039061111b565b34801561062257600080fd5b506103ce611e6181565b34801561063857600080fd5b506103ce610647366004612cbb565b600f6020526000908152604090205481565b34801561066557600080fd5b50610390611181565b34801561067a57600080fd5b50600a546001600160a01b0316610358565b34801561069857600080fd5b506103ce600381565b3480156106ad57600080fd5b5061032b6111ff565b6103906106c4366004612a46565b61120e565b3480156106d557600080fd5b506103906106e4366004612cd6565b6114f4565b3480156106f557600080fd5b50610301610704366004612d09565b6114ff565b34801561071557600080fd5b50610390610724366004612d83565b611574565b34801561073557600080fd5b5061032b610744366004612a46565b6115f6565b34801561075557600080fd5b506103ce600e5481565b34801561076b57600080fd5b506103ce61077a366004612cbb565b60106020526000908152604090205481565b34801561079857600080fd5b506103ce600d5481565b3480156107ae57600080fd5b506103016107bd366004612dff565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b3480156107f757600080fd5b50610390610806366004612cbb565b6116df565b610390610819366004612d09565b6117c1565b600061082982611b81565b92915050565b60606000805461083e90612e29565b80601f016020809104026020016040519081016040528092919081815260200182805461086a90612e29565b80156108b75780601f1061088c576101008083540402835291602001916108b7565b820191906000526020600020905b81548152906001019060200180831161089a57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661093f5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061096682610f82565b9050806001600160a01b0316836001600160a01b031614156109d45760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610936565b336001600160a01b03821614806109f057506109f081336107bd565b610a625760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610936565b610a6c8383611ba6565b505050565b600a546001600160a01b03163314610acb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610936565b6011805460ff1916911515919091179055565b600a546001600160a01b03163314610b385760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610936565b8160011415610b4757600d5550565b600e8190555b5050565b610b5b3382611c14565b610bc15760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b6064820152608401610936565b610a6c838383611d07565b604080513360601b6bffffffffffffffffffffffff19166020808301919091528251601481840301815260349092019092528051910120600090610c1286868686611ec6565b610c5e5760405162461bcd60e51b815260206004820152601f60248201527f53656e646572206973206e6f74204f47206f722077686974656c6973746564006044820152606401610936565b610c9f86868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600d549150849050611f17565b15610cae576001915050610cb4565b60029150505b949350505050565b6000610cc783611081565b8210610d3b5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201527f74206f6620626f756e64730000000000000000000000000000000000000000006064820152608401610936565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b600a546001600160a01b03163314610dbe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610936565b6000610dc960085490565b9050611e61610dd88383612e7a565b1115610e265760405162461bcd60e51b815260206004820152601860248201527f4d61782042656b6f7a20616d6f756e74207265616368656400000000000000006044820152606401610936565b60005b82811015610a6c57610e4433610e3f8385612e7a565b611f2d565b80610e4e81612e92565b915050610e29565b610a6c83838360405180602001604052806000815250611574565b6000610e7c60085490565b8210610ef05760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201527f7574206f6620626f756e647300000000000000000000000000000000000000006064820152608401610936565b60088281548110610f0357610f03612ead565b90600052602060002001549050919050565b600a546001600160a01b03163314610f6f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610936565b8051610b4d90600c90602084019061290f565b6000818152600260205260408120546001600160a01b0316806108295760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610936565b600a546001600160a01b031633146110675760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610936565b601180549115156101000261ff0019909216919091179055565b60006001600160a01b0382166110ff5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610936565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b031633146111755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610936565b61117f6000611f47565b565b600a546001600160a01b031633146111db5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610936565b60405133904780156108fc02916000818181858888f1935050505061117f57600080fd5b60606001805461083e90612e29565b333281146112555760405162461bcd60e51b815260206004820152601460248201527310d85b1b195c881a5cc8184818dbdb9d1c9858dd60621b6044820152606401610936565b6001600160a01b0381163b156112a45760405162461bcd60e51b815260206004820152601460248201527310d85b1b195c881a5cc8184818dbdb9d1c9858dd60621b6044820152606401610936565b6002600b5414156112f75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610936565b6002600b55600061130760085490565b601154909150610100900460ff166113615760405162461bcd60e51b815260206004820152601960248201527f5075626c69632073616c65206973206e6f7420616374697665000000000000006044820152606401610936565b600083116113b15760405162461bcd60e51b815260206004820152601e60248201527f4d696e7420616d6f756e742073686f756c6420626520706f73697469766500006044820152606401610936565b60038311156114025760405162461bcd60e51b815260206004820152601e60248201527f4d696e7420616d6f756e742065786365656473206d61782070657220747800006044820152606401610936565b611e6161140f8483612e7a565b111561145d5760405162461bcd60e51b815260206004820152601860248201527f4d61782042656b6f7a20616d6f756e74207265616368656400000000000000006044820152606401610936565b346114708467013fbe85edc90000612ec3565b11156114be5760405162461bcd60e51b815260206004820152601460248201527f496e636f72726563742076616c75652073656e740000000000000000000000006044820152606401610936565b60005b838110156114e9576114d733610e3f8385612e7a565b806114e181612e92565b9150506114c1565b50506001600b555050565b610b4d338383611f99565b60008061150e86868686610bcc565b905060008160ff166001141561154a5750336000908152600f6020526040902054600690819061153f908a90612e7a565b11159250505061156b565b5033600090815260106020526040902054600390819061153f908a90612e7a565b95945050505050565b61157e3383611c14565b6115e45760405162461bcd60e51b815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6044820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b6064820152608401610936565b6115f084848484612068565b50505050565b6000818152600260205260409020546060906001600160a01b03166116835760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610936565b600061168d6120e6565b905060008151116116ad57604051806020016040528060008152506116d8565b806116b7846120f5565b6040516020016116c8929190612ee2565b6040516020818303038152906040525b9392505050565b600a546001600160a01b031633146117395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610936565b6001600160a01b0381166117b55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610936565b6117be81611f47565b50565b333281146118085760405162461bcd60e51b815260206004820152601460248201527310d85b1b195c881a5cc8184818dbdb9d1c9858dd60621b6044820152606401610936565b6001600160a01b0381163b156118575760405162461bcd60e51b815260206004820152601460248201527310d85b1b195c881a5cc8184818dbdb9d1c9858dd60621b6044820152606401610936565b6002600b5414156118aa5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610936565b6002600b5560006118ba60085490565b60115490915060ff1661190f5760405162461bcd60e51b815260206004820152601560248201527f50726573616c65206973206e6f742061637469766500000000000000000000006044820152606401610936565b6000871161195f5760405162461bcd60e51b815260206004820152601e60248201527f4d696e7420616d6f756e742073686f756c6420626520706f73697469766500006044820152606401610936565b61196b86868686611ec6565b6119b75760405162461bcd60e51b815260206004820152601f60248201527f53656e646572206973206e6f74204f47206f722077686974656c6973746564006044820152606401610936565b6119c487878787876114ff565b611a1a5760405162461bcd60e51b815260206004820152602160248201527f53656e646572206d61782070726573616c6520636c61696d20657863656564656044820152601960fa1b6064820152608401610936565b611e61611a278883612e7a565b1115611a755760405162461bcd60e51b815260206004820152601860248201527f4d61782042656b6f7a20616d6f756e74207265616368656400000000000000006044820152606401610936565b34611a878866f8b0a10e470000612ec3565b1115611ad55760405162461bcd60e51b815260206004820152601460248201527f496e636f72726563742076616c75652073656e740000000000000000000000006044820152606401610936565b6000611ae387878787610bcc565b90508060ff1660011415611b1e57336000908152600f60205260408120805460ff8b169290611b13908490612e7a565b90915550611b469050565b336000908152601060205260408120805460ff8b169290611b40908490612e7a565b90915550505b60005b88811015611b7157611b5f33610e3f8386612e7a565b80611b6981612e92565b915050611b49565b50506001600b5550505050505050565b60006001600160e01b0319821663780e9d6360e01b148061082957506108298261220b565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611bdb82610f82565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316611c8d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610936565b6000611c9883610f82565b9050806001600160a01b0316846001600160a01b03161480611cd35750836001600160a01b0316611cc8846108c1565b6001600160a01b0316145b80610cb457506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff16610cb4565b826001600160a01b0316611d1a82610f82565b6001600160a01b031614611d965760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201527f73206e6f74206f776e00000000000000000000000000000000000000000000006064820152608401610936565b6001600160a01b038216611df85760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610936565b611e0383838361225b565b611e0e600082611ba6565b6001600160a01b0383166000908152600360205260408120805460019290611e37908490612f11565b90915550506001600160a01b0382166000908152600360205260408120805460019290611e65908490612e7a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600061156b85858585611f12336040516bffffffffffffffffffffffff19606083901b166020820152600090603401604051602081830303815290604052805190602001209050919050565b612266565b600082611f2485846122fa565b14949350505050565b610b4d8282604051806020016040528060008152506123a6565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03161415611ffb5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610936565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612073848484611d07565b61207f84848484612424565b6115f05760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610936565b6060600c805461083e90612e29565b6060816121195750506040805180820190915260018152600360fc1b602082015290565b8160005b8115612143578061212d81612e92565b915061213c9050600a83612f3e565b915061211d565b60008167ffffffffffffffff81111561215e5761215e612be6565b6040519080825280601f01601f191660200182016040528015612188576020820181803683370190505b5090505b8415610cb45761219d600183612f11565b91506121aa600a86612f52565b6121b5906030612e7a565b60f81b8183815181106121ca576121ca612ead565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350612204600a86612f3e565b945061218c565b60006001600160e01b031982166380ac58cd60e01b148061223c57506001600160e01b03198216635b5e139f60e01b145b8061082957506301ffc9a760e01b6001600160e01b0319831614610829565b610a6c838383612579565b60006122a986868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600d549150859050611f17565b806122f057506122f084848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600e549150859050611f17565b9695505050505050565b600081815b845181101561239e57600085828151811061231c5761231c612ead565b6020026020010151905080831161235e57604080516020810185905290810182905260600160405160208183030381529060405280519060200120925061238b565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b508061239681612e92565b9150506122ff565b509392505050565b6123b08383612631565b6123bd6000848484612424565b610a6c5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610936565b60006001600160a01b0384163b1561257157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612468903390899088908890600401612f66565b602060405180830381600087803b15801561248257600080fd5b505af19250505080156124b2575060408051601f3d908101601f191682019092526124af91810190612f98565b60015b612557573d8080156124e0576040519150601f19603f3d011682016040523d82523d6000602084013e6124e5565b606091505b50805161254f5760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b6064820152608401610936565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610cb4565b506001610cb4565b6001600160a01b0383166125d4576125cf81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6125f7565b816001600160a01b0316836001600160a01b0316146125f7576125f7838261277f565b6001600160a01b03821661260e57610a6c8161281c565b826001600160a01b0316826001600160a01b031614610a6c57610a6c82826128cb565b6001600160a01b0382166126875760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610936565b6000818152600260205260409020546001600160a01b0316156126ec5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610936565b6126f86000838361225b565b6001600160a01b0382166000908152600360205260408120805460019290612721908490612e7a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6000600161278c84611081565b6127969190612f11565b6000838152600760205260409020549091508082146127e9576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061282e90600190612f11565b6000838152600960205260408120546008805493945090928490811061285657612856612ead565b90600052602060002001549050806008838154811061287757612877612ead565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806128af576128af612fb5565b6001900381819060005260206000200160009055905550505050565b60006128d683611081565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b82805461291b90612e29565b90600052602060002090601f01602090048101928261293d5760008555612983565b82601f1061295657805160ff1916838001178555612983565b82800160010185558215612983579182015b82811115612983578251825591602001919060010190612968565b5061298f929150612993565b5090565b5b8082111561298f5760008155600101612994565b6001600160e01b0319811681146117be57600080fd5b6000602082840312156129d057600080fd5b81356116d8816129a8565b60005b838110156129f65781810151838201526020016129de565b838111156115f05750506000910152565b60008151808452612a1f8160208601602086016129db565b601f01601f19169290920160200192915050565b6020815260006116d86020830184612a07565b600060208284031215612a5857600080fd5b5035919050565b80356001600160a01b0381168114612a7657600080fd5b919050565b60008060408385031215612a8e57600080fd5b612a9783612a5f565b946020939093013593505050565b80358015158114612a7657600080fd5b600060208284031215612ac757600080fd5b6116d882612aa5565b60008060408385031215612ae357600080fd5b50508035926020909101359150565b600080600060608486031215612b0757600080fd5b612b1084612a5f565b9250612b1e60208501612a5f565b9150604084013590509250925092565b60008083601f840112612b4057600080fd5b50813567ffffffffffffffff811115612b5857600080fd5b6020830191508360208260051b8501011115612b7357600080fd5b9250929050565b60008060008060408587031215612b9057600080fd5b843567ffffffffffffffff80821115612ba857600080fd5b612bb488838901612b2e565b90965094506020870135915080821115612bcd57600080fd5b50612bda87828801612b2e565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115612c1757612c17612be6565b604051601f8501601f19908116603f01168101908282118183101715612c3f57612c3f612be6565b81604052809350858152868686011115612c5857600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215612c8457600080fd5b813567ffffffffffffffff811115612c9b57600080fd5b8201601f81018413612cac57600080fd5b610cb484823560208401612bfc565b600060208284031215612ccd57600080fd5b6116d882612a5f565b60008060408385031215612ce957600080fd5b612cf283612a5f565b9150612d0060208401612aa5565b90509250929050565b600080600080600060608688031215612d2157600080fd5b85359450602086013567ffffffffffffffff80821115612d4057600080fd5b612d4c89838a01612b2e565b90965094506040880135915080821115612d6557600080fd5b50612d7288828901612b2e565b969995985093965092949392505050565b60008060008060808587031215612d9957600080fd5b612da285612a5f565b9350612db060208601612a5f565b925060408501359150606085013567ffffffffffffffff811115612dd357600080fd5b8501601f81018713612de457600080fd5b612df387823560208401612bfc565b91505092959194509250565b60008060408385031215612e1257600080fd5b612e1b83612a5f565b9150612d0060208401612a5f565b600181811c90821680612e3d57607f821691505b60208210811415612e5e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115612e8d57612e8d612e64565b500190565b6000600019821415612ea657612ea6612e64565b5060010190565b634e487b7160e01b600052603260045260246000fd5b6000816000190483118215151615612edd57612edd612e64565b500290565b60008351612ef48184602088016129db565b835190830190612f088183602088016129db565b01949350505050565b600082821015612f2357612f23612e64565b500390565b634e487b7160e01b600052601260045260246000fd5b600082612f4d57612f4d612f28565b500490565b600082612f6157612f61612f28565b500690565b60006001600160a01b038087168352808616602084015250836040830152608060608301526122f06080830184612a07565b600060208284031215612faa57600080fd5b81516116d8816129a8565b634e487b7160e01b600052603160045260246000fdfea264697066735822122069f564129ad4225fc7aae7363b19ab23ccfc9f6196400cb5d7825d378ac7be9164736f6c63430008090033