60806040523480156200001157600080fd5b506040518060400160405280600381526020017f43617700000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f744341570000000000000000000000000000000000000000000000000000000081525081600090805190602001906200009692919062000211565b508060019080519060200190620000af92919062000211565b505050620000d2620000c66200014360201b60201c565b6200014b60201b60201c565b7387fb48fcd33a821799816c7ae02d03b04fcb8cdc600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506611c37937e08000600b819055506001600c8190555062000326565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200021f90620002f0565b90600052602060002090601f0160209004810192826200024357600085556200028f565b82601f106200025e57805160ff19168380011785556200028f565b828001600101855582156200028f579182015b828111156200028e57825182559160200191906001019062000271565b5b5090506200029e9190620002a2565b5090565b5b80821115620002bd576000816000905550600101620002a3565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200030957607f821691505b6020821081141562000320576200031f620002c1565b5b50919050565b61457e80620003366000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80637839828f11610104578063c87b56dd116100a2578063ee4a26ac11610071578063ee4a26ac14610552578063ef586e7a1461056e578063f18d18cc1461058c578063f2fde38b146105bc576101cf565b8063c87b56dd146104a4578063e0391b09146104d4578063e0750ce4146104f2578063e985e9c514610522576101cf565b806395d89b41116100de57806395d89b411461041e578063a22cb4651461043c578063b343d3ea14610458578063b88d4fde14610488576101cf565b80637839828f146103b45780638da5cb5b146103e457806391a48a1e14610402576101cf565b806351ed8288116101715780635c1638a41161014b5780635c1638a41461031a5780636352211e1461034a57806370a082311461037a578063715018a6146103aa576101cf565b806351ed8288146102c25780635488e4b6146102de57806359dd8c62146102fc576101cf565b8063095ea7b3116101ad578063095ea7b31461025257806323b872dd1461026e5780633241d34a1461028a57806342842e0e146102a6576101cf565b806301ffc9a7146101d457806306fdde0314610204578063081812fc14610222575b600080fd5b6101ee60048036038101906101e99190612d91565b6105d8565b6040516101fb9190612dd9565b60405180910390f35b61020c6106ba565b6040516102199190612e8d565b60405180910390f35b61023c60048036038101906102379190612ee5565b61074c565b6040516102499190612f53565b60405180910390f35b61026c60048036038101906102679190612f9a565b610792565b005b61028860048036038101906102839190612fda565b6108aa565b005b6102a4600480360381019061029f9190613162565b61090a565b005b6102c060048036038101906102bb9190612fda565b610d33565b005b6102dc60048036038101906102d79190612ee5565b610d53565b005b6102e6610f42565b6040516102f391906131fc565b60405180910390f35b610304610f48565b6040516103119190612f53565b60405180910390f35b610334600480360381019061032f9190613217565b610f60565b6040516103419190612dd9565b60405180910390f35b610364600480360381019061035f9190612ee5565b610fd6565b6040516103719190612f53565b60405180910390f35b610394600480360381019061038f9190613260565b61105d565b6040516103a191906131fc565b60405180910390f35b6103b2611115565b005b6103ce60048036038101906103c99190613217565b611129565b6040516103db9190612e8d565b60405180910390f35b6103ec61128a565b6040516103f99190612f53565b60405180910390f35b61041c6004803603810190610417919061328d565b6112b4565b005b6104266113f1565b6040516104339190612e8d565b60405180910390f35b610456600480360381019061045191906132f9565b611483565b005b610472600480360381019061046d9190613217565b611499565b60405161047f91906131fc565b60405180910390f35b6104a2600480360381019061049d91906133da565b611571565b005b6104be60048036038101906104b99190612ee5565b6115d3565b6040516104cb9190612e8d565b60405180910390f35b6104dc61163b565b6040516104e991906135e2565b60405180910390f35b61050c60048036038101906105079190613217565b611914565b60405161051991906131fc565b60405180910390f35b61053c60048036038101906105379190613604565b6119ec565b6040516105499190612dd9565b60405180910390f35b61056c60048036038101906105679190613644565b611a80565b005b610576611ba3565b60405161058391906136ff565b60405180910390f35b6105a660048036038101906105a19190612ee5565b611bc9565b6040516105b39190612e8d565b60405180910390f35b6105d660048036038101906105d19190613260565b611cb6565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806106a357507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806106b357506106b282611d3a565b5b9050919050565b6060600080546106c990613749565b80601f01602080910402602001604051908101604052809291908181526020018280546106f590613749565b80156107425780601f1061071757610100808354040283529160200191610742565b820191906000526020600020905b81548152906001019060200180831161072557829003601f168201915b5050505050905090565b600061075782611da4565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061079d82610fd6565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561080e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610805906137ed565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1661082d611def565b73ffffffffffffffffffffffffffffffffffffffff16148061085c575061085b81610856611def565b6119ec565b5b61089b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108929061387f565b60405180910390fd5b6108a58383611df7565b505050565b6108bb6108b5611def565b82611eb0565b6108fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f190613911565b60405180910390fd5b610905838383611f45565b505050565b600073ffffffffffffffffffffffffffffffffffffffff16600784604051610932919061396d565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae906139d0565b60405180910390fd5b600081116109fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f190613a62565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600784604051610a22919061396d565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9e906139d0565b60405180910390fd5b33600784604051610ab8919061396d565b908152602001604051809103902060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260086000600c5481526020019081526020016000209080519060200190610b2d929190612c5a565b506000600984604051610b40919061396d565b9081526020016040518091039020905081816002018190555082816003019080519060200190610b71929190612c5a565b50610b7e33600c5461223f565b3373ffffffffffffffffffffffffffffffffffffffff16600c547f82dab408985c3d2faefd82b084de54234c7e481435f0cd9fcee456241d97e87d8685604051610bc9929190613a82565b60405180910390a3600c6000815480929190610be490613ae1565b9190505550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b333846040518363ffffffff1660e01b8152600401610c46929190613b2a565b6020604051808303816000875af1158015610c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c899190613b68565b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401610ce993929190613b95565b6020604051808303816000875af1158015610d08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2c9190613b68565b5050505050565b610d4e83838360405180602001604052806000815250611571565b505050565b610d5c8161225d565b610d9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9290613c18565b60405180910390fd5b6000600960086000848152602001908152602001600020604051610dbf9190613ccc565b90815260200160405180910390206002015411610e11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0890613d2f565b60405180910390fd5b6000610e1c82610fd6565b90506000600960086000858152602001908152602001600020604051610e429190613ccc565b9081526020016040518091039020600201549050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3384846040518463ffffffff1660e01b8152600401610eb593929190613b95565b6020604051808303816000875af1158015610ed4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef89190613b68565b50610f04823385611f45565b6000600960086000868152602001908152602001600020604051610f289190613ccc565b908152602001604051809103902060020181905550505050565b600b5481565b7387fb48fcd33a821799816c7ae02d03b04fcb8cdc81565b60008073ffffffffffffffffffffffffffffffffffffffff16600783604051610f89919061396d565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16149050919050565b600080610fe28361229e565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90613d9b565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c590613e2d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61111d6122db565b6111276000612359565b565b6060600073ffffffffffffffffffffffffffffffffffffffff16600783604051611153919061396d565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090613e99565b60405180910390fd5b6009826040516111e9919061396d565b9081526020016040518091039020600301805461120590613749565b80601f016020809104026020016040519081016040528092919081815260200182805461123190613749565b801561127e5780601f106112535761010080835404028352916020019161127e565b820191906000526020600020905b81548152906001019060200180831161126157829003601f168201915b50505050509050919050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6112bd8261225d565b6112fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f390613c18565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff1661131c83610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614611372576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136990613f05565b60405180910390fd5b600081116113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90613f97565b60405180910390fd5b806009600860008581526020019081526020016000206040516113d89190613ccc565b9081526020016040518091039020600201819055505050565b60606001805461140090613749565b80601f016020809104026020016040519081016040528092919081815260200182805461142c90613749565b80156114795780601f1061144e57610100808354040283529160200191611479565b820191906000526020600020905b81548152906001019060200180831161145c57829003601f168201915b5050505050905090565b61149561148e611def565b838361241f565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff166007836040516114c2919061396d565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611548576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153f90613e99565b60405180910390fd5b600982604051611558919061396d565b9081526020016040518091039020600201549050919050565b61158261157c611def565b83611eb0565b6115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613911565b60405180910390fd5b6115cd8484848461258c565b50505050565b60606115de82611da4565b60006115e86125e8565b905060008151116116085760405180602001604052806000815250611633565b80611612846125ff565b604051602001611623929190613fb7565b6040516020818303038152906040525b915050919050565b606060006001600c5461164e9190613fdb565b67ffffffffffffffff81111561166757611666613037565b5b6040519080825280602002602001820160405280156116a057816020015b61168d612ce0565b8152602001906001900390816116855790505b5090506000600190505b600c5481101561190c5760006008600083815260200190815260200160002080546116d490613749565b80601f016020809104026020016040519081016040528092919081815260200182805461170090613749565b801561174d5780601f106117225761010080835404028352916020019161174d565b820191906000526020600020905b81548152906001019060200180831161173057829003601f168201915b505050505090506000600982604051611766919061396d565b90815260200160405180910390206040518060800160405290816000820154815260200160018201805461179990613749565b80601f01602080910402602001604051908101604052809291908181526020018280546117c590613749565b80156118125780601f106117e757610100808354040283529160200191611812565b820191906000526020600020905b8154815290600101906020018083116117f557829003601f168201915b505050505081526020016002820154815260200160038201805461183590613749565b80601f016020809104026020016040519081016040528092919081815260200182805461186190613749565b80156118ae5780601f10611883576101008083540402835291602001916118ae565b820191906000526020600020905b81548152906001019060200180831161189157829003601f168201915b50505050508152505090508281600001818152505081816020018190525080846001856118db9190613fdb565b815181106118ec576118eb61400f565b5b60200260200101819052505050808061190490613ae1565b9150506116aa565b508091505090565b60008073ffffffffffffffffffffffffffffffffffffffff1660078360405161193d919061396d565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba90613e99565b60405180910390fd5b6009826040516119d3919061396d565b9081526020016040518091039020600201549050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611a886122db565b600073ffffffffffffffffffffffffffffffffffffffff16600783604051611ab0919061396d565b908152602001604051809103902060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d90613e99565b60405180910390fd5b60008111611b79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7090613a62565b60405180910390fd5b80600983604051611b8a919061396d565b9081526020016040518091039020600201819055505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611bd48261225d565b611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90613c18565b60405180910390fd5b600860008381526020019081526020016000208054611c3190613749565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5d90613749565b8015611caa5780601f10611c7f57610100808354040283529160200191611caa565b820191906000526020600020905b815481529060010190602001808311611c8d57829003601f168201915b50505050509050919050565b611cbe6122db565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611d2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d25906140b0565b60405180910390fd5b611d3781612359565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b611dad8161225d565b611dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de390613d9b565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611e6a83610fd6565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080611ebc83610fd6565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611efe5750611efd81856119ec565b5b80611f3c57508373ffffffffffffffffffffffffffffffffffffffff16611f248461074c565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611f6582610fd6565b73ffffffffffffffffffffffffffffffffffffffff1614611fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb290614142565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561202b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612022906141d4565b60405180910390fd5b61203883838360016126d7565b8273ffffffffffffffffffffffffffffffffffffffff1661205882610fd6565b73ffffffffffffffffffffffffffffffffffffffff16146120ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a590614142565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461223a83838360016126dd565b505050565b6122598282604051806020016040528060008152506126e3565b5050565b60008073ffffffffffffffffffffffffffffffffffffffff1661227f8361229e565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6122e3611def565b73ffffffffffffffffffffffffffffffffffffffff1661230161128a565b73ffffffffffffffffffffffffffffffffffffffff1614612357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234e90614240565b60405180910390fd5b565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561248e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612485906142ac565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161257f9190612dd9565b60405180910390a3505050565b612597848484611f45565b6125a38484848461273e565b6125e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d99061433e565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b60606000600161260e846128c6565b01905060008167ffffffffffffffff81111561262d5761262c613037565b5b6040519080825280601f01601f19166020018201604052801561265f5781602001600182028036833780820191505090505b509050600082602001820190505b6001156126cc578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816126b6576126b561435e565b5b04945060008514156126c7576126cc565b61266d565b819350505050919050565b50505050565b50505050565b6126ed8383612a19565b6126fa600084848461273e565b612739576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127309061433e565b60405180910390fd5b505050565b600061275f8473ffffffffffffffffffffffffffffffffffffffff16612c37565b156128b9578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612788611def565b8786866040518563ffffffff1660e01b81526004016127aa94939291906143e2565b6020604051808303816000875af19250505080156127e657506040513d601f19601f820116820180604052508101906127e39190614443565b60015b612869573d8060008114612816576040519150601f19603f3d011682016040523d82523d6000602084013e61281b565b606091505b50600081511415612861576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128589061433e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506128be565b600190505b949350505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612924577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161291a5761291961435e565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612961576d04ee2d6d415b85acef810000000083816129575761295661435e565b5b0492506020810190505b662386f26fc10000831061299057662386f26fc1000083816129865761298561435e565b5b0492506010810190505b6305f5e10083106129b9576305f5e10083816129af576129ae61435e565b5b0492506008810190505b61271083106129de5761271083816129d4576129d361435e565b5b0492506004810190505b60648310612a0157606483816129f7576129f661435e565b5b0492506002810190505b600a8310612a10576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a80906144bc565b60405180910390fd5b612a928161225d565b15612ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac990614528565b60405180910390fd5b612ae06000838360016126d7565b612ae98161225d565b15612b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2090614528565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612c336000838360016126dd565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b828054612c6690613749565b90600052602060002090601f016020900481019282612c885760008555612ccf565b82601f10612ca157805160ff1916838001178555612ccf565b82800160010185558215612ccf579182015b82811115612cce578251825591602001919060010190612cb3565b5b509050612cdc9190612d08565b5090565b6040518060800160405280600081526020016060815260200160008152602001606081525090565b5b80821115612d21576000816000905550600101612d09565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612d6e81612d39565b8114612d7957600080fd5b50565b600081359050612d8b81612d65565b92915050565b600060208284031215612da757612da6612d2f565b5b6000612db584828501612d7c565b91505092915050565b60008115159050919050565b612dd381612dbe565b82525050565b6000602082019050612dee6000830184612dca565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e2e578082015181840152602081019050612e13565b83811115612e3d576000848401525b50505050565b6000601f19601f8301169050919050565b6000612e5f82612df4565b612e698185612dff565b9350612e79818560208601612e10565b612e8281612e43565b840191505092915050565b60006020820190508181036000830152612ea78184612e54565b905092915050565b6000819050919050565b612ec281612eaf565b8114612ecd57600080fd5b50565b600081359050612edf81612eb9565b92915050565b600060208284031215612efb57612efa612d2f565b5b6000612f0984828501612ed0565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f3d82612f12565b9050919050565b612f4d81612f32565b82525050565b6000602082019050612f686000830184612f44565b92915050565b612f7781612f32565b8114612f8257600080fd5b50565b600081359050612f9481612f6e565b92915050565b60008060408385031215612fb157612fb0612d2f565b5b6000612fbf85828601612f85565b9250506020612fd085828601612ed0565b9150509250929050565b600080600060608486031215612ff357612ff2612d2f565b5b600061300186828701612f85565b935050602061301286828701612f85565b925050604061302386828701612ed0565b9150509250925092565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61306f82612e43565b810181811067ffffffffffffffff8211171561308e5761308d613037565b5b80604052505050565b60006130a1612d25565b90506130ad8282613066565b919050565b600067ffffffffffffffff8211156130cd576130cc613037565b5b6130d682612e43565b9050602081019050919050565b82818337600083830152505050565b6000613105613100846130b2565b613097565b90508281526020810184848401111561312157613120613032565b5b61312c8482856130e3565b509392505050565b600082601f8301126131495761314861302d565b5b81356131598482602086016130f2565b91505092915050565b60008060006060848603121561317b5761317a612d2f565b5b600084013567ffffffffffffffff81111561319957613198612d34565b5b6131a586828701613134565b935050602084013567ffffffffffffffff8111156131c6576131c5612d34565b5b6131d286828701613134565b92505060406131e386828701612ed0565b9150509250925092565b6131f681612eaf565b82525050565b600060208201905061321160008301846131ed565b92915050565b60006020828403121561322d5761322c612d2f565b5b600082013567ffffffffffffffff81111561324b5761324a612d34565b5b61325784828501613134565b91505092915050565b60006020828403121561327657613275612d2f565b5b600061328484828501612f85565b91505092915050565b600080604083850312156132a4576132a3612d2f565b5b60006132b285828601612ed0565b92505060206132c385828601612ed0565b9150509250929050565b6132d681612dbe565b81146132e157600080fd5b50565b6000813590506132f3816132cd565b92915050565b600080604083850312156133105761330f612d2f565b5b600061331e85828601612f85565b925050602061332f858286016132e4565b9150509250929050565b600067ffffffffffffffff82111561335457613353613037565b5b61335d82612e43565b9050602081019050919050565b600061337d61337884613339565b613097565b90508281526020810184848401111561339957613398613032565b5b6133a48482856130e3565b509392505050565b600082601f8301126133c1576133c061302d565b5b81356133d184826020860161336a565b91505092915050565b600080600080608085870312156133f4576133f3612d2f565b5b600061340287828801612f85565b945050602061341387828801612f85565b935050604061342487828801612ed0565b925050606085013567ffffffffffffffff81111561344557613444612d34565b5b613451878288016133ac565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61349281612eaf565b82525050565b600082825260208201905092915050565b60006134b482612df4565b6134be8185613498565b93506134ce818560208601612e10565b6134d781612e43565b840191505092915050565b60006080830160008301516134fa6000860182613489565b506020830151848203602086015261351282826134a9565b91505060408301516135276040860182613489565b506060830151848203606086015261353f82826134a9565b9150508091505092915050565b600061355883836134e2565b905092915050565b6000602082019050919050565b60006135788261345d565b6135828185613468565b93508360208202850161359485613479565b8060005b858110156135d057848403895281516135b1858261354c565b94506135bc83613560565b925060208a01995050600181019050613598565b50829750879550505050505092915050565b600060208201905081810360008301526135fc818461356d565b905092915050565b6000806040838503121561361b5761361a612d2f565b5b600061362985828601612f85565b925050602061363a85828601612f85565b9150509250929050565b6000806040838503121561365b5761365a612d2f565b5b600083013567ffffffffffffffff81111561367957613678612d34565b5b61368585828601613134565b925050602061369685828601612ed0565b9150509250929050565b6000819050919050565b60006136c56136c06136bb84612f12565b6136a0565b612f12565b9050919050565b60006136d7826136aa565b9050919050565b60006136e9826136cc565b9050919050565b6136f9816136de565b82525050565b600060208201905061371460008301846136f0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061376157607f821691505b602082108114156137755761377461371a565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006137d7602183612dff565b91506137e28261377b565b604082019050919050565b60006020820190508181036000830152613806816137ca565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000613869603d83612dff565b91506138748261380d565b604082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006138fb602d83612dff565b91506139068261389f565b604082019050919050565b6000602082019050818103600083015261392a816138ee565b9050919050565b600081905092915050565b600061394782612df4565b6139518185613931565b9350613961818560208601612e10565b80840191505092915050565b6000613979828461393c565b915081905092915050565b7f557365726e616d6520616c726561647920757365640000000000000000000000600082015250565b60006139ba601583612dff565b91506139c582613984565b602082019050919050565b600060208201905081810360008301526139e9816139ad565b9050919050565b7f4d696e7420636f7374206d7573742062652067726561746572207468616e207a60008201527f65726f0000000000000000000000000000000000000000000000000000000000602082015250565b6000613a4c602383612dff565b9150613a57826139f0565b604082019050919050565b60006020820190508181036000830152613a7b81613a3f565b9050919050565b60006040820190508181036000830152613a9c8185612e54565b9050613aab60208301846131ed565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613aec82612eaf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b1f57613b1e613ab2565b5b600182019050919050565b6000604082019050613b3f6000830185612f44565b613b4c60208301846131ed565b9392505050565b600081519050613b62816132cd565b92915050565b600060208284031215613b7e57613b7d612d2f565b5b6000613b8c84828501613b53565b91505092915050565b6000606082019050613baa6000830186612f44565b613bb76020830185612f44565b613bc460408301846131ed565b949350505050565b7f546f6b656e20494420646f6573206e6f74206578697374000000000000000000600082015250565b6000613c02601783612dff565b9150613c0d82613bcc565b602082019050919050565b60006020820190508181036000830152613c3181613bf5565b9050919050565b60008190508160005260206000209050919050565b60008154613c5a81613749565b613c648186613931565b94506001821660008114613c7f5760018114613c9057613cc3565b60ff19831686528186019350613cc3565b613c9985613c38565b60005b83811015613cbb57815481890152600182019150602081019050613c9c565b838801955050505b50505092915050565b6000613cd88284613c4d565b915081905092915050565b7f4e4654206e6f7420666f722073616c6500000000000000000000000000000000600082015250565b6000613d19601083612dff565b9150613d2482613ce3565b602082019050919050565b60006020820190508181036000830152613d4881613d0c565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000613d85601883612dff565b9150613d9082613d4f565b602082019050919050565b60006020820190508181036000830152613db481613d78565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000613e17602983612dff565b9150613e2282613dbb565b604082019050919050565b60006020820190508181036000830152613e4681613e0a565b9050919050565b7f557365726e616d6520646f6573206e6f74206578697374000000000000000000600082015250565b6000613e83601783612dff565b9150613e8e82613e4d565b602082019050919050565b60006020820190508181036000830152613eb281613e76565b9050919050565b7f4f6e6c7920746865206f776e65722063616e2073656c6c20746865204e465400600082015250565b6000613eef601f83612dff565b9150613efa82613eb9565b602082019050919050565b60006020820190508181036000830152613f1e81613ee2565b9050919050565b7f53616c65207072696365206d7573742062652067726561746572207468616e2060008201527f7a65726f00000000000000000000000000000000000000000000000000000000602082015250565b6000613f81602483612dff565b9150613f8c82613f25565b604082019050919050565b60006020820190508181036000830152613fb081613f74565b9050919050565b6000613fc3828561393c565b9150613fcf828461393c565b91508190509392505050565b6000613fe682612eaf565b9150613ff183612eaf565b92508282101561400457614003613ab2565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061409a602683612dff565b91506140a58261403e565b604082019050919050565b600060208201905081810360008301526140c98161408d565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061412c602583612dff565b9150614137826140d0565b604082019050919050565b6000602082019050818103600083015261415b8161411f565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006141be602483612dff565b91506141c982614162565b604082019050919050565b600060208201905081810360008301526141ed816141b1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061422a602083612dff565b9150614235826141f4565b602082019050919050565b600060208201905081810360008301526142598161421d565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614296601983612dff565b91506142a182614260565b602082019050919050565b600060208201905081810360008301526142c581614289565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614328603283612dff565b9150614333826142cc565b604082019050919050565b600060208201905081810360008301526143578161431b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081519050919050565b600082825260208201905092915050565b60006143b48261438d565b6143be8185614398565b93506143ce818560208601612e10565b6143d781612e43565b840191505092915050565b60006080820190506143f76000830187612f44565b6144046020830186612f44565b61441160408301856131ed565b818103606083015261442381846143a9565b905095945050505050565b60008151905061443d81612d65565b92915050565b60006020828403121561445957614458612d2f565b5b60006144678482850161442e565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006144a6602083612dff565b91506144b182614470565b602082019050919050565b600060208201905081810360008301526144d581614499565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000614512601c83612dff565b915061451d826144dc565b602082019050919050565b6000602082019050818103600083015261454181614505565b905091905056fea26469706673582212208f3601b54a5161bfe13f22f6929c1f3702b461d3c8a15434995881df251b175a64736f6c634300080b0033