60e060405273874fc168cb97599803afa12e9dac683ba1bf4ad86080526301406f4060a0526103e860c0523480156200003757600080fd5b5060405162004774380380620047748339810160408190526200005a916200058b565b8060405180604001604052806009815260200168494e534320506c757360b81b81525060405180604001604052806005815260200164494e53432b60d81b8152508160009081620000ac919062000661565b506001620000bb828262000661565b5050506001600160a01b038116620000ee57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000f98162000169565b5060068054600160a01b600160e01b031916610a4160a31b1781556241a0c87fbb6daa0c283751197dfdc76590680f9005e97d6f23870deb1164ab60b28b9f5f556001600160a01b038216600090815260086020526040902081905562000162908290620001bb565b506200072d565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620001e757604051633250574960e11b815260006004820152602401620000e5565b6000620001f68383836200022a565b90506001600160a01b0381161562000225576040516339e3563760e11b815260006004820152602401620000e5565b505050565b6000828152600260205260408120546001600160a01b03908116908316156200025a576200025a81848662000329565b6001600160a01b038116156200029a5762000279600085818062000393565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b03851615620002ca576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b62000336838383620004c1565b62000225576001600160a01b0383166200036757604051637e27328960e01b815260048101829052602401620000e5565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000e5565b8080620003a857506001600160a01b03821615155b1562000491576000620003bb846200054a565b90506001600160a01b03831615801590620003e85750826001600160a01b0316816001600160a01b031614155b80156200041b57506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620004465760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000e5565b81156200048f5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620005425750826001600160a01b0316846001600160a01b031614806200051d57506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b806200054257506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200058557604051637e27328960e01b815260048101849052602401620000e5565b92915050565b6000602082840312156200059e57600080fd5b81516001600160a01b0381168114620005b657600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005e857607f821691505b6020821081036200060957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022557600081815260208120601f850160051c81016020861015620006385750805b601f850160051c820191505b81811015620006595782815560010162000644565b505050505050565b81516001600160401b038111156200067d576200067d620005bd565b62000695816200068e8454620005d3565b846200060f565b602080601f831160018114620006cd5760008415620006b45750858301515b600019600386901b1c1916600185901b17855562000659565b600085815260208120601f198616915b82811015620006fe57888601518255948401946001909101908401620006dd565b50858210156200071d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c051613fe66200078e60003960008181610493015281816108940152818161111e015281816119060152611a920152600081816105520152611b570152600081816105e5015281816116dd015261180e0152613fe66000f3fe608060405234801561001057600080fd5b50600436106102775760003560e01c80638da5cb5b11610160578063c87b56dd116100d8578063e16669341161008c578063f2fde38b11610071578063f2fde38b14610650578063f4aedf2c14610663578063f5b100ea1461068357600080fd5b8063e1666934146105e0578063e985e9c51461060757600080fd5b8063d63b1cce116100bd578063d63b1cce14610574578063d93bf4fe14610587578063dd62ed3e1461059a57600080fd5b8063c87b56dd1461053a578063d5abeb011461054d57600080fd5b8063a22cb4651161012f578063b30bbecc11610114578063b30bbecc146104fb578063b88d4fde14610504578063c81d72631461051757600080fd5b8063a22cb465146104d5578063a9059cbb146104e857600080fd5b80638da5cb5b1461046857806395d89b4114610486578063996517cf1461048e578063a15b0bc6146104b557600080fd5b80632a55205a116101f35780634b3f6fdf116101c257806370a08231116101a757806370a082311461043a578063715018a61461044d5780638a0401c01461045557600080fd5b80634b3f6fdf146104145780636352211e1461042757600080fd5b80632a55205a146103a0578063313ce567146103df57806341e42f30146103ee57806342842e0e1461040157600080fd5b80630963ae281161024a57806318160ddd1161022f57806318160ddd1461035c57806323b872dd14610378578063286de78b1461038b57600080fd5b80630963ae2814610304578063129763c21461034957600080fd5b806301ffc9a71461027c57806306fdde03146102a4578063081812fc146102b9578063095ea7b3146102f1575b600080fd5b61028f61028a366004613119565b610696565b60405190151581526020015b60405180910390f35b6102ac61077b565b60405161029b91906131a4565b6102cc6102c73660046131b7565b61080d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029b565b61028f6102ff3660046131f2565b610843565b6006546103309074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff909116815260200161029b565b61028f61035736600461321e565b61085b565b60075467ffffffffffffffff165b60405190815260200161029b565b61028f61038636600461321e565b610a55565b61039e61039936600461325f565b610a6d565b005b6103b36103ae36600461328b565b610bf9565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520161029b565b6040516000815260200161029b565b61039e6103fc3660046132ad565b610c47565b61039e61040f36600461321e565b610ca2565b61039e610422366004613351565b610cc2565b6102cc6104353660046131b7565b610eb4565b61036a6104483660046132ad565b610ebf565b61039e610fcd565b61039e6104633660046133cb565b610fe1565b60065473ffffffffffffffffffffffffffffffffffffffff166102cc565b6102ac6110bb565b6103307f000000000000000000000000000000000000000000000000000000000000000081565b61036a6104c33660046132ad565b60086020526000908152604090205481565b61039e6104e3366004613425565b6110ca565b61028f6104f63660046131f2565b6110d9565b61036a600c5481565b61039e61051236600461348d565b6110e7565b61028f6105253660046131b7565b600b6020526000908152604090205460ff1681565b6102ac6105483660046131b7565b6112d9565b6103307f000000000000000000000000000000000000000000000000000000000000000081565b61039e61058236600461358b565b6113f9565b61039e610595366004613606565b6116cf565b61036a6105a8366004613648565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152600a6020908152604080832093909416825291909152205490565b6102cc7f000000000000000000000000000000000000000000000000000000000000000081565b61028f610615366004613648565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b61039e61065e3660046132ad565b611be2565b61036a6106713660046131b7565b60096020526000908152604090205481565b61036a6106913660046132ad565b611c46565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061072957507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061077557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461078a90613676565b80601f01602080910402602001604051908101604052809291908181526020018280546107b690613676565b80156108035780601f106107d857610100808354040283529160200191610803565b820191906000526020600020905b8154815290600101906020018083116107e657829003601f168201915b5050505050905090565b600061081882611cf4565b5060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff16610775565b600033610851818585611d53565b5060019392505050565b600083838373ffffffffffffffffffffffffffffffffffffffff83166108b757600081815260096020526040902067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690555b73ffffffffffffffffffffffffffffffffffffffff831615801590610900575073ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604090205481145b156109c95761090e83611efe565b6001146109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f536c6f742063616e206f6e6c79206265207472616e736665727265642061742060448201527f74686520656e640000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260408120555b73ffffffffffffffffffffffffffffffffffffffff821615801590610a11575073ffffffffffffffffffffffffffffffffffffffff8216600090815260086020526040902054155b15610a3f5773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604090208190555b610a4a878787611f79565b979650505050505050565b6000610a62843384612071565b610851848484612148565b33610a7784610eb4565b73ffffffffffffffffffffffffffffffffffffffff16148015610ab7575033610a9f83610eb4565b73ffffffffffffffffffffffffffffffffffffffff16145b610b1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4973206e6f7420796f75727300000000000000000000000000000000000000006044820152606401610999565b60008381526009602052604090205481811015610b96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610999565b600084815260096020526040808220848403905584825281208054849290610bbf9084906136f8565b90915550506040518290849086907fd89f06b1f63d55b2d8a47b44736ea451c5aef662eea7abaeaa86b31508624ba990600090a450505050565b600754600090819068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff166103e8610c3185600561370b565b610c3b9190613722565b915091505b9250929050565b610c4f61241d565b6007805473ffffffffffffffffffffffffffffffffffffffff90921668010000000000000000027fffffffff0000000000000000000000000000000000000000ffffffffffffffff909216919091179055565b610cbd838383604051806020016040528060008152506110e7565b505050565b610cd5610cce86610eb4565b3387612470565b610d61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243373538333a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f76656400000000000000000000000000000000006064820152608401610999565b6000858585604051602001610d78939291906137a6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083015201604051602081830303815290604052805190602001209050610e0c83838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050600c549150849050612537565b610e72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d65726b6c6520766572696669636174696f6e206661696c65640000000000006044820152606401610999565b857f5b9f74685a608e4f93707210c49f21840b9e3c4fd84b353a8659851c85606e3c8686604051610ea49291906137c9565b60405180910390a2505050505050565b600061077582611cf4565b600073ffffffffffffffffffffffffffffffffffffffff8216610f64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a2061646472657373207a65726f206973206e6f7420612076616c60448201527f6964206f776e65720000000000000000000000000000000000000000000000006064820152608401610999565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600860205260408120549003610f97576000610775565b5073ffffffffffffffffffffffffffffffffffffffff166000908152600860209081526040808320548352600990915290205490565b610fd561241d565b610fdf600061254d565b565b610fe961241d565b6152088310611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f45786365656400000000000000000000000000000000000000000000000000006044820152606401610999565b61107c61107660065473ffffffffffffffffffffffffffffffffffffffff1690565b846125c4565b827f5b9f74685a608e4f93707210c49f21840b9e3c4fd84b353a8659851c85606e3c83836040516110ae9291906137c9565b60405180910390a2505050565b60606001805461078a90613676565b6110d5338383612675565b5050565b600033610851818585612148565b83838373ffffffffffffffffffffffffffffffffffffffff831661114157600081815260096020526040902067ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690555b73ffffffffffffffffffffffffffffffffffffffff83161580159061118a575073ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604090205481145b1561124e5761119883611efe565b600114611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f536c6f742063616e206f6e6c79206265207472616e736665727265642061742060448201527f74686520656e64000000000000000000000000000000000000000000000000006064820152608401610999565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600860205260408120555b73ffffffffffffffffffffffffffffffffffffffff821615801590611296575073ffffffffffffffffffffffffffffffffffffffff8216600090815260086020526040902054155b156112c45773ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604090208190555b6112d087878787612772565b50505050505050565b60606112e482611cf4565b506000828152600960205260408120546112fd9061278a565b60405160200161130d91906137f9565b6040516020818303038152906040529050600061135061132c83612848565b60405160200161133c9190613a99565b604051602081830303815290604052612848565b9050806040516020016113639190613b9d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181526102a0830190915261026a80835290935060009190613d076020830139905060006113bb61132c83612848565b9050806040516020016113ce9190613b9d565b6040516020818303038152906040529150856000146113ed57836113ef565b815b9695505050505050565b6101f4821115611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f596f75206472696e6b20746f6f206d75636821000000000000000000000000006044820152606401610999565b3361146f82610eb4565b73ffffffffffffffffffffffffffffffffffffffff16146114ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4973206e6f7420796f75727300000000000000000000000000000000000000006044820152606401610999565b6000805b838110156116a557600085858381811061150c5761150c613be2565b6040029190910135915033905061152282610eb4565b73ffffffffffffffffffffffffffffffffffffffff161461159f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4973206e6f7420796f75727300000000000000000000000000000000000000006044820152606401610999565b60008686848181106115b3576115b3613be2565b90506040020160200135905060006009600084815260200190815260200160002054905081811015611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610999565b6000838152600960205260409020828203905561165e82866136f8565b94508186847fd89f06b1f63d55b2d8a47b44736ea451c5aef662eea7abaeaa86b31508624ba960405160405180910390a4505050808061169d90613c11565b9150506114f0565b50600082815260096020526040812080548392906116c49084906136f8565b909155505050505050565b60005b81811015611a7f57337f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e85858581811061172957611729613be2565b905060200201356040518263ffffffff1660e01b815260040161174e91815260200190565b602060405180830381865afa15801561176b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178f9190613c49565b73ffffffffffffffffffffffffffffffffffffffff161461180c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4973206e6f7420796f75727300000000000000000000000000000000000000006044820152606401610999565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd3361dead86868681811061185e5761185e613be2565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b16815273ffffffffffffffffffffffffffffffffffffffff9586166004820152949093166024850152506020909102013560448201526064016020604051808303816000875af11580156118df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119039190613c66565b507f0000000000000000000000000000000000000000000000000000000000000000601e0167ffffffffffffffff166009600085858581811061194857611948613be2565b90506020020135815260200190815260200160002081905550600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000036119d8578282828181106119ba576119ba613be2565b33600090815260086020908152604090912091029290920135909155505b6119fa338484848181106119ee576119ee613be2565b905060200201356125c4565b60096000848484818110611a1057611a10613be2565b90506020020135815260200190815260200160002054838383818110611a3857611a38613be2565b9050602002013560007fd89f06b1f63d55b2d8a47b44736ea451c5aef662eea7abaeaa86b31508624ba960405160405180910390a480611a7781613c11565b9150506116d2565b506007805467ffffffffffffffff8181167f00000000000000000000000000000000000000000000000000000000000000008216850201167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116179055601e810260096000600881611b0860065473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081205484529183019390935291019020805491909103905560075467ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116911611156110d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4578636565646564206c696d69740000000000000000000000000000000000006044820152606401610999565b611bea61241d565b73ffffffffffffffffffffffffffffffffffffffff8116611c3a576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610999565b611c438161254d565b50565b600073ffffffffffffffffffffffffffffffffffffffff8216611ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610999565b61077582611efe565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610775576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101849052602401610999565b73ffffffffffffffffffffffffffffffffffffffff8316611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610999565b73ffffffffffffffffffffffffffffffffffffffff8216611e98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610999565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600a602090815260408083209487168084529490915280822085905551849392917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b600073ffffffffffffffffffffffffffffffffffffffff8216611f50576040517f89c62b6400000000000000000000000000000000000000000000000000000000815260006004820152602401610999565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b600073ffffffffffffffffffffffffffffffffffffffff8316611fcb576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610999565b6000611fd884843361299b565b90508473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612066576040517f64283d7b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820185905282166044820152606401610999565b506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600a60209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146121425781811015612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610999565b6121428484848403611d53565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526008602052604081205490036121d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f5468652073656e646572206d757374206f776e206120736c6f740000000000006044820152606401610999565b73ffffffffffffffffffffffffffffffffffffffff821660009081526008602052604081205490036122be5760065461223290839074010000000000000000000000000000000000000000900467ffffffffffffffff166125c4565b6006805473ffffffffffffffffffffffffffffffffffffffff8416600090815260086020526040902067ffffffffffffffff740100000000000000000000000000000000000000009283900481169091558254919091041690601461229683613c83565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b73ffffffffffffffffffffffffffffffffffffffff8316600090815260086020908152604080832054835260099091529020548181101561235b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f496e73756666696369656e742062616c616e63650000000000000000000000006044820152606401610999565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526008602081815260408084205484526009808352818520888803905594881684529181528183205483529290925290812080548492906123b99084906136f8565b909155505073ffffffffffffffffffffffffffffffffffffffff8084166000908152600860205260408082205492871682528082205490518593927fd89f06b1f63d55b2d8a47b44736ea451c5aef662eea7abaeaa86b31508624ba991a450505050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610fdf576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610999565b600073ffffffffffffffffffffffffffffffffffffffff83161580159061252f57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806124fe575073ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352929052205460ff165b8061252f575060008281526004602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116145b949350505050565b6000826125448584612b18565b14949350505050565b6006805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b73ffffffffffffffffffffffffffffffffffffffff8216612614576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260006004820152602401610999565b60006126228383600061299b565b905073ffffffffffffffffffffffffffffffffffffffff811615610cbd576040517f73c6ac6e00000000000000000000000000000000000000000000000000000000815260006004820152602401610999565b73ffffffffffffffffffffffffffffffffffffffff82166126da576040517f5b08ba1800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610999565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61277d848484611f79565b5061214284848484612b65565b6060600061279783612d5c565b600101905060008167ffffffffffffffff8111156127b7576127b761345e565b6040519080825280601f01601f1916602001820160405280156127e1576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846127eb57509392505050565b6060815160000361286757505060408051602081019091526000815290565b6000604051806060016040528060408152602001613f71604091399050600060038451600261289691906136f8565b6128a09190613722565b6128ab90600461370b565b67ffffffffffffffff8111156128c3576128c361345e565b6040519080825280601f01601f1916602001820160405280156128ed576020820181803683370190505b509050600182016020820185865187015b80821015612959576003820191508151603f8160121c168501518453600184019350603f81600c1c168501518453600184019350603f8160061c168501518453600184019350603f81168501518453506001830192506128fe565b5050600386510660018114612975576002811461298857612990565b603d6001830353603d6002830353612990565b603d60018303535b509195945050505050565b60008281526002602052604081205473ffffffffffffffffffffffffffffffffffffffff908116908316156129d5576129d5818486612e3e565b73ffffffffffffffffffffffffffffffffffffffff811615612a4b576129ff600085600080612eee565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260036020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190555b73ffffffffffffffffffffffffffffffffffffffff851615612a945773ffffffffffffffffffffffffffffffffffffffff85166000908152600360205260409020805460010190555b60008481526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b600081815b8451811015612b5d57612b4982868381518110612b3c57612b3c613be2565b60200260200101516130b9565b915080612b5581613c11565b915050612b1d565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff83163b15612142576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063150b7a0290612bda903390889087908790600401613caa565b6020604051808303816000875af1925050508015612c33575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612c3091810190613ce9565b60015b612cc2573d808015612c61576040519150601f19603f3d011682016040523d82523d6000602084013e612c66565b606091505b508051600003612cba576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610999565b805181602001fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081167f150b7a020000000000000000000000000000000000000000000000000000000014612d55576040517f64a0ae9200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610999565b5050505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612da5577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310612dd1576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310612def57662386f26fc10000830492506010015b6305f5e1008310612e07576305f5e100830492506008015b6127108310612e1b57612710830492506004015b60648310612e2d576064830492506002015b600a83106107755760010192915050565b612e49838383612470565b610cbd5773ffffffffffffffffffffffffffffffffffffffff8316612e9d576040517f7e27328900000000000000000000000000000000000000000000000000000000815260048101829052602401610999565b6040517f177e802f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015260248101829052604401610999565b8080612f0f575073ffffffffffffffffffffffffffffffffffffffff821615155b15613064576000612f1f84611cf4565b905073ffffffffffffffffffffffffffffffffffffffff831615801590612f7257508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015612fb1575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209387168352929052205460ff16155b15613000576040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610999565b811561306257838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008183106130d55760008281526020849052604090206130e4565b60008381526020839052604090205b9392505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c4357600080fd5b60006020828403121561312b57600080fd5b81356130e4816130eb565b60005b83811015613151578181015183820152602001613139565b50506000910152565b60008151808452613172816020860160208601613136565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006130e4602083018461315a565b6000602082840312156131c957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611c4357600080fd5b6000806040838503121561320557600080fd5b8235613210816131d0565b946020939093013593505050565b60008060006060848603121561323357600080fd5b833561323e816131d0565b9250602084013561324e816131d0565b929592945050506040919091013590565b60008060006060848603121561327457600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561329e57600080fd5b50508035926020909101359150565b6000602082840312156132bf57600080fd5b81356130e4816131d0565b60008083601f8401126132dc57600080fd5b50813567ffffffffffffffff8111156132f457600080fd5b602083019150836020828501011115610c4057600080fd5b60008083601f84011261331e57600080fd5b50813567ffffffffffffffff81111561333657600080fd5b6020830191508360208260051b8501011115610c4057600080fd5b60008060008060006060868803121561336957600080fd5b85359450602086013567ffffffffffffffff8082111561338857600080fd5b61339489838a016132ca565b909650945060408801359150808211156133ad57600080fd5b506133ba8882890161330c565b969995985093965092949392505050565b6000806000604084860312156133e057600080fd5b83359250602084013567ffffffffffffffff8111156133fe57600080fd5b61340a868287016132ca565b9497909650939450505050565b8015158114611c4357600080fd5b6000806040838503121561343857600080fd5b8235613443816131d0565b9150602083013561345381613417565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156134a357600080fd5b84356134ae816131d0565b935060208501356134be816131d0565b925060408501359150606085013567ffffffffffffffff808211156134e257600080fd5b818701915087601f8301126134f657600080fd5b8135818111156135085761350861345e565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561354e5761354e61345e565b816040528281528a602084870101111561356757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806000604084860312156135a057600080fd5b833567ffffffffffffffff808211156135b857600080fd5b818601915086601f8301126135cc57600080fd5b8135818111156135db57600080fd5b8760208260061b85010111156135f057600080fd5b6020928301989097509590910135949350505050565b6000806020838503121561361957600080fd5b823567ffffffffffffffff81111561363057600080fd5b61363c8582860161330c565b90969095509350505050565b6000806040838503121561365b57600080fd5b8235613666816131d0565b91506020830135613453816131d0565b600181811c9082168061368a57607f821691505b6020821081036136c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610775576107756136c9565b8082028115828204841417610775576107756136c9565b600082613758577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b8381526040602082015260006137c060408301848661375d565b95945050505050565b60208152600061252f60208301848661375d565b600081516137ef818560208601613136565b9290920192915050565b7f3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323081527f30302f73766722207072657365727665417370656374526174696f3d22784d6960208201527f6e594d696e206d656574222076696577426f783d22302030203335302033353060408201527f223e203c7374796c653e2e62617365207b2066696c6c3a2077686974653b206660608201527f6f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313460808201527f70783b207d3c2f7374796c653e3c726563742077696474683d2231303025222060a08201527f6865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c746560c08201527f787420783d223130302220793d223130302220636c6173733d2262617365223e60e08201527f7b3c2f746578743e3c7465787420783d223133302220793d223133302220636c6101008201527f6173733d2262617365223e2270223a22696e732d3230222c3c2f746578743e3c6101208201527f7465787420783d223133302220793d223136302220636c6173733d22626173656101408201527f223e226f70223a226d696e74222c3c2f746578743e3c7465787420783d2231336101608201527f302220793d223139302220636c6173733d2262617365223e227469636b223a226101808201527f696e7674222c3c2f746578743e3c7465787420783d223133302220793d2232326101a08201527f302220636c6173733d2262617365223e22616d74223a000000000000000000006101c082015260006130e4613a4a6101d68401856137dd565b7f3c2f746578743e3c7465787420783d223130302220793d223235302220636c6181527f73733d2262617365223e7d3c2f746578743e3c2f7376673e0000000000000000602082015260380190565b7f7b226465736372697074696f6e223a2022494e533230206973206120736f636981527f616c206578706572696d656e742c206120666972737420617474656d7074207460208201527f6f20707261637469636520696e736372697074696f6e2077697468696e20746860408201527f652045564d2e222c2022696d616765223a2022646174613a696d6167652f737660608201527f672b786d6c3b6261736536342c00000000000000000000000000000000000000608082015260008251613b6981608d850160208701613136565b7f227d000000000000000000000000000000000000000000000000000000000000608d939091019283015250608f01919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251613bd581601d850160208701613136565b91909101601d0192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c4257613c426136c9565b5060010190565b600060208284031215613c5b57600080fd5b81516130e4816131d0565b600060208284031215613c7857600080fd5b81516130e481613417565b600067ffffffffffffffff808316818103613ca057613ca06136c9565b6001019392505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526113ef608083018461315a565b600060208284031215613cfb57600080fd5b81516130e4816130eb56fe3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e203c7374796c653e202e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d203c2f7374796c653e203c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e203c7465787420783d2231302220793d223130302220636c6173733d2262617365223e7b3c2f746578743e203c7465787420783d2233302220793d223133302220636c6173733d2262617365223e22746f6b656e4964223a20302c3c2f746578743e203c7465787420783d2233302220793d223136302220636c6173733d2262617365223e224465736372697074696f6e223a202254686520686f6c646572206f6620494e53432b2023302077696c6c20636f6e74696e75653c2f746578743e203c7465787420783d2233302220793d223139302220636c6173733d2262617365223e746f206b65657020766967696c2c20756e74696c20746869732070726f70686563792028457a656b69656c2033373a31352d3238293c2f746578743e203c7465787420783d2233302220793d223232302220636c6173733d2262617365223e2069732066756c66696c6c65642e223c2f746578743e203c7465787420783d2231302220793d223235302220636c6173733d2262617365223e7d3c2f746578743e203c2f7376673e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122089fec75563506b2b096140b914055a8b5103d794d2047cae8d8476a5eb78b70f64736f6c634300081400330000000000000000000000006bccf3aa530ba4a0c701037ae58dc0c6b3a98e5b