60806040527f88699e6679d9cd77a2c414bc38a0baa266f5038f2cc177f0c4b0a05a067cc14f60001b600a557f8c2c99bda98f85e3c1489d96f057c26b699fa8288a0720634b9745c4a109d7e460001b600b557f3bf7d524c64870a4a0b089459da3d9a0d60d91c912d639e50faa7147f36bd0c260001b600c557f3d64b6df8ccfcc48fcd2a6cf44221ca8616a922de18ba8b72dcdfcaadac6a49560001b600d557ffde02a3a2f7d29bd96a88b2d088b3523320a63dfa42f85f712c132dd813f8ec760001b600e557f0826a2816a8ce8c7e7b7eb506f1d51bbb42b13f7fc1251a4761ba1e2790bc72e60001b600f557f70806a575c9643c1fb0955142d1e6f308976a748c013603dfaebbc95f876cfb860001b6010556000601360006101000a81548160ff0219169083151502179055506000601360016101000a81548160ff0219169083151502179055503480156200015857600080fd5b5060405162004d1338038062004d1383398181016040528101906200017e9190620003ff565b8383816000908051906020019062000198929190620002ba565b508060019080519060200190620001b1929190620002ba565b505050620001d4620001c8620001ec60201b60201c565b620001f460201b60201c565b81601181905550806012819055505050505062000657565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620002c8906200054e565b90600052602060002090601f016020900481019282620002ec576000855562000338565b82601f106200030757805160ff191683800117855562000338565b8280016001018555821562000338579182015b82811115620003375782518255916020019190600101906200031a565b5b5090506200034791906200034b565b5090565b5b80821115620003665760008160009055506001016200034c565b5090565b6000620003816200037b84620004d8565b620004af565b905082815260208101848484011115620003a0576200039f6200061d565b5b620003ad84828562000518565b509392505050565b600082601f830112620003cd57620003cc62000618565b5b8151620003df8482602086016200036a565b91505092915050565b600081519050620003f9816200063d565b92915050565b600080600080608085870312156200041c576200041b62000627565b5b600085015167ffffffffffffffff8111156200043d576200043c62000622565b5b6200044b87828801620003b5565b945050602085015167ffffffffffffffff8111156200046f576200046e62000622565b5b6200047d87828801620003b5565b93505060406200049087828801620003e8565b9250506060620004a387828801620003e8565b91505092959194509250565b6000620004bb620004ce565b9050620004c9828262000584565b919050565b6000604051905090565b600067ffffffffffffffff821115620004f657620004f5620005e9565b5b62000501826200062c565b9050602081019050919050565b6000819050919050565b60005b83811015620005385780820151818401526020810190506200051b565b8381111562000548576000848401525b50505050565b600060028204905060018216806200056757607f821691505b602082108114156200057e576200057d620005ba565b5b50919050565b6200058f826200062c565b810181811067ffffffffffffffff82111715620005b157620005b0620005e9565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b62000648816200050e565b81146200065457600080fd5b50565b6146ac80620006676000396000f3fe6080604052600436106101f85760003560e01c806370a082311161010d578063a46b123b116100a0578063c7682c821161006f578063c7682c82146106dc578063c87b56dd14610707578063e7fb74c714610744578063e985e9c51461076d578063f2fde38b146107aa576101f8565b8063a46b123b14610622578063adb889961461065f578063b1153d441461068a578063b88d4fde146106b3576101f8565b80638da5cb5b116100dc5780638da5cb5b1461058757806395d89b41146105b2578063a0712d68146105dd578063a22cb465146105f9576101f8565b806370a08231146104df578063715018a61461051c5780637cb64759146105335780637d8966e414610570576101f8565b80632bbf3b32116101905780634cb772f31161015f5780634cb772f31461040c5780634d0ad0fd1461043757806355f804b31461044e5780636352211e146104775780636817c76c146104b4576101f8565b80632bbf3b3214610366578063361fab25146103a35780633ccfd60b146103cc57806342842e0e146103e3576101f8565b8063095ea7b3116101cc578063095ea7b3146102be57806319d1997a146102e757806323b872dd1461031257806324bbd0491461033b576101f8565b806222f0ad146101fd57806301ffc9a71461021957806306fdde0314610256578063081812fc14610281575b600080fd5b610217600480360381019061021291906131c5565b6107d3565b005b34801561022557600080fd5b50610240600480360381019061023b91906130f1565b610a33565b60405161024d91906137a9565b60405180910390f35b34801561026257600080fd5b5061026b610b15565b60405161027891906137fa565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a39190613198565b610ba7565b6040516102b591906136f0565b60405180910390f35b3480156102ca57600080fd5b506102e560048036038101906102e09190613084565b610c2c565b005b3480156102f357600080fd5b506102fc610d44565b6040516103099190613b1c565b60405180910390f35b34801561031e57600080fd5b5061033960048036038101906103349190612f6e565b610d4a565b005b34801561034757600080fd5b50610350610e9e565b60405161035d91906137a9565b60405180910390f35b34801561037257600080fd5b5061038d60048036038101906103889190612f01565b610eb1565b60405161039a9190613b1c565b60405180910390f35b3480156103af57600080fd5b506103ca60048036038101906103c59190613198565b610ec9565b005b3480156103d857600080fd5b506103e1610f4f565b005b3480156103ef57600080fd5b5061040a60048036038101906104059190612f6e565b61101a565b005b34801561041857600080fd5b5061042161103a565b60405161042e91906137a9565b60405180910390f35b34801561044357600080fd5b5061044c61104d565b005b34801561045a57600080fd5b506104756004803603810190610470919061314b565b6110f5565b005b34801561048357600080fd5b5061049e60048036038101906104999190613198565b611187565b6040516104ab91906136f0565b60405180910390f35b3480156104c057600080fd5b506104c9611239565b6040516104d69190613b1c565b60405180910390f35b3480156104eb57600080fd5b5061050660048036038101906105019190612f01565b611244565b6040516105139190613b1c565b60405180910390f35b34801561052857600080fd5b506105316112fc565b005b34801561053f57600080fd5b5061055a600480360381019061055591906130c4565b611384565b60405161056791906137c4565b60405180910390f35b34801561057c57600080fd5b50610585611413565b005b34801561059357600080fd5b5061059c6114bb565b6040516105a991906136f0565b60405180910390f35b3480156105be57600080fd5b506105c76114e5565b6040516105d491906137fa565b60405180910390f35b6105f760048036038101906105f29190613198565b611577565b005b34801561060557600080fd5b50610620600480360381019061061b9190613044565b61177c565b005b34801561062e57600080fd5b5061064960048036038101906106449190612f01565b6118fd565b6040516106569190613b1c565b60405180910390f35b34801561066b57600080fd5b50610674611915565b6040516106819190613b1c565b60405180910390f35b34801561069657600080fd5b506106b160048036038101906106ac9190612f01565b61191b565b005b3480156106bf57600080fd5b506106da60048036038101906106d59190612fc1565b6119db565b005b3480156106e857600080fd5b506106f1611b31565b6040516106fe91906137df565b60405180910390f35b34801561071357600080fd5b5061072e60048036038101906107299190613198565b611b57565b60405161073b91906137fa565b60405180910390f35b34801561075057600080fd5b5061076b60048036038101906107669190613198565b611bfe565b005b34801561077957600080fd5b50610794600480360381019061078f9190612f2e565b611c90565b6040516107a191906137a9565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc9190612f01565b611d24565b005b600060016107e16008611e1c565b6107eb9190613bfc565b905060006108016107fb33611e2a565b84611e5a565b9050600061080e33611244565b905060008211610853576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084a90613a9c565b60405180910390fd5b601360009054906101000a900460ff166108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089990613a5c565b60405180910390fd5b6011546108b88685611f9c90919063ffffffff16565b11156108f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f0906138dc565b60405180910390fd5b8185111561093c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109339061393c565b60405180910390fd5b60008511801561095757508185826109549190613bfc565b11155b610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d90613abc565b60405180910390fd5b6000600190505b858111610a2b576109b93382866109b49190613bfc565b611fb2565b6109c36008611fd0565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610a1390613e94565b91905055508080610a2390613e94565b91505061099d565b505050505050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610afe57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b0e5750610b0d82611fe6565b5b9050919050565b606060008054610b2490613e31565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5090613e31565b8015610b9d5780601f10610b7257610100808354040283529160200191610b9d565b820191906000526020600020905b815481529060010190602001808311610b8057829003601f168201915b5050505050905090565b6000610bb282612050565b610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be8906139bc565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c3782611187565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90613a3c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610cc76120bc565b73ffffffffffffffffffffffffffffffffffffffff161480610cf65750610cf581610cf06120bc565b611c90565b5b610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c9061391c565b60405180910390fd5b610d3f83836120c4565b505050565b60115481565b601254811015610e8e57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d230af3a84846040518363ffffffff1660e01b8152600401610db192919061370b565b600060405180830381600087803b158015610dcb57600080fd5b505af1158015610ddf573d6000803e3d6000fd5b50505050601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610e3390613e07565b9190505550601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610e8890613e94565b91905055505b610e9983838361217d565b505050565b601360019054906101000a900460ff1681565b60156020528060005260406000206000915090505481565b610ed16120bc565b73ffffffffffffffffffffffffffffffffffffffff16610eef6114bb565b73ffffffffffffffffffffffffffffffffffffffff1614610f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3c906139dc565b60405180910390fd5b8060118190555050565b610f576120bc565b73ffffffffffffffffffffffffffffffffffffffff16610f756114bb565b73ffffffffffffffffffffffffffffffffffffffff1614610fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc2906139dc565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611016573d6000803e3d6000fd5b5050565b611035838383604051806020016040528060008152506119db565b505050565b601360009054906101000a900460ff1681565b6110556120bc565b73ffffffffffffffffffffffffffffffffffffffff166110736114bb565b73ffffffffffffffffffffffffffffffffffffffff16146110c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c0906139dc565b60405180910390fd5b601360009054906101000a900460ff1615601360006101000a81548160ff021916908315150217905550565b6110fd6120bc565b73ffffffffffffffffffffffffffffffffffffffff1661111b6114bb565b73ffffffffffffffffffffffffffffffffffffffff1614611171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611168906139dc565b60405180910390fd5b818160099190611182929190612c7c565b505050565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611230576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112279061397c565b60405180910390fd5b80915050919050565b66c55a6e4145e00081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac9061395c565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6113046120bc565b73ffffffffffffffffffffffffffffffffffffffff166113226114bb565b73ffffffffffffffffffffffffffffffffffffffff1614611378576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136f906139dc565b60405180910390fd5b61138260006121dd565b565b600061138e6120bc565b73ffffffffffffffffffffffffffffffffffffffff166113ac6114bb565b73ffffffffffffffffffffffffffffffffffffffff1614611402576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f9906139dc565b60405180910390fd5b81600a81905550600a549050919050565b61141b6120bc565b73ffffffffffffffffffffffffffffffffffffffff166114396114bb565b73ffffffffffffffffffffffffffffffffffffffff161461148f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611486906139dc565b60405180910390fd5b601360019054906101000a900460ff1615601360016101000a81548160ff021916908315150217905550565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546114f490613e31565b80601f016020809104026020016040519081016040528092919081815260200182805461152090613e31565b801561156d5780601f106115425761010080835404028352916020019161156d565b820191906000526020600020905b81548152906001019060200180831161155057829003601f168201915b5050505050905090565b600060016115856008611e1c565b61158f9190613bfc565b9050601360019054906101000a900460ff166115e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d79061387c565b60405180910390fd5b6000821180156115f05750600b82105b61162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162690613afc565b60405180910390fd5b6011546116458383611f9c90919063ffffffff16565b1115611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d906138dc565b60405180910390fd5b6116a08266c55a6e4145e0006122a390919063ffffffff16565b3410156116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990613adc565b60405180910390fd5b6000600190505b828111611777576117053382846117009190613bfc565b611fb2565b61170f6008611fd0565b601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061175f90613e94565b9190505550808061176f90613e94565b9150506116e9565b505050565b6117846120bc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e9906138bc565b60405180910390fd5b80600560006117ff6120bc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff166118ac6120bc565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516118f191906137a9565b60405180910390a35050565b60146020528060005260406000206000915090505481565b60125481565b6119236120bc565b73ffffffffffffffffffffffffffffffffffffffff166119416114bb565b73ffffffffffffffffffffffffffffffffffffffff1614611997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198e906139dc565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601254821015611b1f57600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d230af3a85856040518363ffffffff1660e01b8152600401611a4292919061370b565b600060405180830381600087803b158015611a5c57600080fd5b505af1158015611a70573d6000803e3d6000fd5b50505050601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611ac490613e07565b9190505550601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611b1990613e94565b91905055505b611b2b848484846122b9565b50505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060611b6282612050565b611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890613a1c565b60405180910390fd5b6000611bab61231b565b90506000815111611bcb5760405180602001604052806000815250611bf6565b80611bd5846123ad565b604051602001611be69291906136cc565b6040516020818303038152906040525b915050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639dc29fac33836040518363ffffffff1660e01b8152600401611c5b929190613780565b600060405180830381600087803b158015611c7557600080fd5b505af1158015611c89573d6000803e3d6000fd5b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611d2c6120bc565b73ffffffffffffffffffffffffffffffffffffffff16611d4a6114bb565b73ffffffffffffffffffffffffffffffffffffffff1614611da0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d97906139dc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e079061383c565b60405180910390fd5b611e19816121dd565b50565b600081600001549050919050565b600081604051602001611e3d9190613685565b604051602081830303815290604052805190602001209050919050565b60008083905060005b8351811015611f03576000848281518110611e8157611e80613fc9565b5b6020026020010151905080831015611ec3578281604051602001611ea69291906136a0565b604051602081830303815290604052805190602001209250611eef565b8083604051602001611ed69291906136a0565b6040516020818303038152906040528051906020012092505b508080611efb90613e94565b915050611e63565b50600a54811415611f18576001915050611f96565b600b54811415611f2c576002915050611f96565b600c54811415611f40576003915050611f96565b600d54811415611f54576004915050611f96565b600e54811415611f68576005915050611f96565b600f54811415611f7c576006915050611f96565b601054811415611f9057600d915050611f96565b60009150505b92915050565b60008183611faa9190613bfc565b905092915050565b611fcc82826040518060200160405280600081525061250e565b5050565b6001816000016000828254019250508190555050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661213783611187565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b61218e6121886120bc565b82612569565b6121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c490613a7c565b60405180910390fd5b6121d8838383612647565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836122b19190613c83565b905092915050565b6122ca6122c46120bc565b83612569565b612309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230090613a7c565b60405180910390fd5b612315848484846128a3565b50505050565b60606009805461232a90613e31565b80601f016020809104026020016040519081016040528092919081815260200182805461235690613e31565b80156123a35780601f10612378576101008083540402835291602001916123a3565b820191906000526020600020905b81548152906001019060200180831161238657829003601f168201915b5050505050905090565b606060008214156123f5576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612509565b600082905060005b6000821461242757808061241090613e94565b915050600a826124209190613c52565b91506123fd565b60008167ffffffffffffffff81111561244357612442613ff8565b5b6040519080825280601f01601f1916602001820160405280156124755781602001600182028036833780820191505090505b5090505b600085146125025760018261248e9190613cdd565b9150600a8561249d9190613f0b565b60306124a99190613bfc565b60f81b8183815181106124bf576124be613fc9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856124fb9190613c52565b9450612479565b8093505050505b919050565b61251883836128ff565b6125256000848484612acd565b612564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255b9061381c565b60405180910390fd5b505050565b600061257482612050565b6125b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125aa906138fc565b60405180910390fd5b60006125be83611187565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061262d57508373ffffffffffffffffffffffffffffffffffffffff1661261584610ba7565b73ffffffffffffffffffffffffffffffffffffffff16145b8061263e575061263d8185611c90565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661266782611187565b73ffffffffffffffffffffffffffffffffffffffff16146126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b4906139fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561272d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127249061389c565b60405180910390fd5b612738838383612c64565b6127436000826120c4565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127939190613cdd565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127ea9190613bfc565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6128ae848484612647565b6128ba84848484612acd565b6128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f09061381c565b60405180910390fd5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561296f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129669061399c565b60405180910390fd5b61297881612050565b156129b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129af9061385c565b60405180910390fd5b6129c460008383612c64565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612a149190613bfc565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b6000612aee8473ffffffffffffffffffffffffffffffffffffffff16612c69565b15612c57578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612b176120bc565b8786866040518563ffffffff1660e01b8152600401612b399493929190613734565b602060405180830381600087803b158015612b5357600080fd5b505af1925050508015612b8457506040513d601f19601f82011682018060405250810190612b81919061311e565b60015b612c07573d8060008114612bb4576040519150601f19603f3d011682016040523d82523d6000602084013e612bb9565b606091505b50600081511415612bff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf69061381c565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612c5c565b600190505b949350505050565b505050565b600080823b905060008111915050919050565b828054612c8890613e31565b90600052602060002090601f016020900481019282612caa5760008555612cf1565b82601f10612cc357803560ff1916838001178555612cf1565b82800160010185558215612cf1579182015b82811115612cf0578235825591602001919060010190612cd5565b5b509050612cfe9190612d02565b5090565b5b80821115612d1b576000816000905550600101612d03565b5090565b6000612d32612d2d84613b5c565b613b37565b90508083825260208201905082856020860282011115612d5557612d54614031565b5b60005b85811015612d855781612d6b8882612e29565b845260208401935060208301925050600181019050612d58565b5050509392505050565b6000612da2612d9d84613b88565b613b37565b905082815260208101848484011115612dbe57612dbd614036565b5b612dc9848285613dc5565b509392505050565b600081359050612de081614603565b92915050565b600082601f830112612dfb57612dfa61402c565b5b8135612e0b848260208601612d1f565b91505092915050565b600081359050612e238161461a565b92915050565b600081359050612e3881614631565b92915050565b600081359050612e4d81614648565b92915050565b600081519050612e6281614648565b92915050565b600082601f830112612e7d57612e7c61402c565b5b8135612e8d848260208601612d8f565b91505092915050565b60008083601f840112612eac57612eab61402c565b5b8235905067ffffffffffffffff811115612ec957612ec8614027565b5b602083019150836001820283011115612ee557612ee4614031565b5b9250929050565b600081359050612efb8161465f565b92915050565b600060208284031215612f1757612f16614040565b5b6000612f2584828501612dd1565b91505092915050565b60008060408385031215612f4557612f44614040565b5b6000612f5385828601612dd1565b9250506020612f6485828601612dd1565b9150509250929050565b600080600060608486031215612f8757612f86614040565b5b6000612f9586828701612dd1565b9350506020612fa686828701612dd1565b9250506040612fb786828701612eec565b9150509250925092565b60008060008060808587031215612fdb57612fda614040565b5b6000612fe987828801612dd1565b9450506020612ffa87828801612dd1565b935050604061300b87828801612eec565b925050606085013567ffffffffffffffff81111561302c5761302b61403b565b5b61303887828801612e68565b91505092959194509250565b6000806040838503121561305b5761305a614040565b5b600061306985828601612dd1565b925050602061307a85828601612e14565b9150509250929050565b6000806040838503121561309b5761309a614040565b5b60006130a985828601612dd1565b92505060206130ba85828601612eec565b9150509250929050565b6000602082840312156130da576130d9614040565b5b60006130e884828501612e29565b91505092915050565b60006020828403121561310757613106614040565b5b600061311584828501612e3e565b91505092915050565b60006020828403121561313457613133614040565b5b600061314284828501612e53565b91505092915050565b6000806020838503121561316257613161614040565b5b600083013567ffffffffffffffff8111156131805761317f61403b565b5b61318c85828601612e96565b92509250509250929050565b6000602082840312156131ae576131ad614040565b5b60006131bc84828501612eec565b91505092915050565b600080604083850312156131dc576131db614040565b5b60006131ea85828601612eec565b925050602083013567ffffffffffffffff81111561320b5761320a61403b565b5b61321785828601612de6565b9150509250929050565b61322a81613d11565b82525050565b61324161323c82613d11565b613edd565b82525050565b61325081613d23565b82525050565b61325f81613d2f565b82525050565b61327661327182613d2f565b613eef565b82525050565b600061328782613bb9565b6132918185613bcf565b93506132a1818560208601613dd4565b6132aa81614045565b840191505092915050565b6132be81613d8f565b82525050565b60006132cf82613bc4565b6132d98185613be0565b93506132e9818560208601613dd4565b6132f281614045565b840191505092915050565b600061330882613bc4565b6133128185613bf1565b9350613322818560208601613dd4565b80840191505092915050565b600061333b603283613be0565b915061334682614063565b604082019050919050565b600061335e602683613be0565b9150613369826140b2565b604082019050919050565b6000613381601c83613be0565b915061338c82614101565b602082019050919050565b60006133a4601783613be0565b91506133af8261412a565b602082019050919050565b60006133c7602483613be0565b91506133d282614153565b604082019050919050565b60006133ea601983613be0565b91506133f5826141a2565b602082019050919050565b600061340d601c83613be0565b9150613418826141cb565b602082019050919050565b6000613430602c83613be0565b915061343b826141f4565b604082019050919050565b6000613453603883613be0565b915061345e82614243565b604082019050919050565b6000613476601c83613be0565b915061348182614292565b602082019050919050565b6000613499602a83613be0565b91506134a4826142bb565b604082019050919050565b60006134bc602983613be0565b91506134c78261430a565b604082019050919050565b60006134df602083613be0565b91506134ea82614359565b602082019050919050565b6000613502602c83613be0565b915061350d82614382565b604082019050919050565b6000613525602083613be0565b9150613530826143d1565b602082019050919050565b6000613548602983613be0565b9150613553826143fa565b604082019050919050565b600061356b602f83613be0565b915061357682614449565b604082019050919050565b600061358e602183613be0565b915061359982614498565b604082019050919050565b60006135b1601a83613be0565b91506135bc826144e7565b602082019050919050565b60006135d4603183613be0565b91506135df82614510565b604082019050919050565b60006135f7600f83613be0565b91506136028261455f565b602082019050919050565b600061361a600d83613be0565b915061362582614588565b602082019050919050565b600061363d601483613be0565b9150613648826145b1565b602082019050919050565b6000613660601783613be0565b915061366b826145da565b602082019050919050565b61367f81613d85565b82525050565b60006136918284613230565b60148201915081905092915050565b60006136ac8285613265565b6020820191506136bc8284613265565b6020820191508190509392505050565b60006136d882856132fd565b91506136e482846132fd565b91508190509392505050565b60006020820190506137056000830184613221565b92915050565b60006040820190506137206000830185613221565b61372d6020830184613221565b9392505050565b60006080820190506137496000830187613221565b6137566020830186613221565b6137636040830185613676565b8181036060830152613775818461327c565b905095945050505050565b60006040820190506137956000830185613221565b6137a26020830184613676565b9392505050565b60006020820190506137be6000830184613247565b92915050565b60006020820190506137d96000830184613256565b92915050565b60006020820190506137f460008301846132b5565b92915050565b6000602082019050818103600083015261381481846132c4565b905092915050565b600060208201905081810360008301526138358161332e565b9050919050565b6000602082019050818103600083015261385581613351565b9050919050565b6000602082019050818103600083015261387581613374565b9050919050565b6000602082019050818103600083015261389581613397565b9050919050565b600060208201905081810360008301526138b5816133ba565b9050919050565b600060208201905081810360008301526138d5816133dd565b9050919050565b600060208201905081810360008301526138f581613400565b9050919050565b6000602082019050818103600083015261391581613423565b9050919050565b6000602082019050818103600083015261393581613446565b9050919050565b6000602082019050818103600083015261395581613469565b9050919050565b600060208201905081810360008301526139758161348c565b9050919050565b60006020820190508181036000830152613995816134af565b9050919050565b600060208201905081810360008301526139b5816134d2565b9050919050565b600060208201905081810360008301526139d5816134f5565b9050919050565b600060208201905081810360008301526139f581613518565b9050919050565b60006020820190508181036000830152613a158161353b565b9050919050565b60006020820190508181036000830152613a358161355e565b9050919050565b60006020820190508181036000830152613a5581613581565b9050919050565b60006020820190508181036000830152613a75816135a4565b9050919050565b60006020820190508181036000830152613a95816135c7565b9050919050565b60006020820190508181036000830152613ab5816135ea565b9050919050565b60006020820190508181036000830152613ad58161360d565b9050919050565b60006020820190508181036000830152613af581613630565b9050919050565b60006020820190508181036000830152613b1581613653565b9050919050565b6000602082019050613b316000830184613676565b92915050565b6000613b41613b52565b9050613b4d8282613e63565b919050565b6000604051905090565b600067ffffffffffffffff821115613b7757613b76613ff8565b5b602082029050602081019050919050565b600067ffffffffffffffff821115613ba357613ba2613ff8565b5b613bac82614045565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000613c0782613d85565b9150613c1283613d85565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613c4757613c46613f3c565b5b828201905092915050565b6000613c5d82613d85565b9150613c6883613d85565b925082613c7857613c77613f6b565b5b828204905092915050565b6000613c8e82613d85565b9150613c9983613d85565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613cd257613cd1613f3c565b5b828202905092915050565b6000613ce882613d85565b9150613cf383613d85565b925082821015613d0657613d05613f3c565b5b828203905092915050565b6000613d1c82613d65565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613d9a82613da1565b9050919050565b6000613dac82613db3565b9050919050565b6000613dbe82613d65565b9050919050565b82818337600083830152505050565b60005b83811015613df2578082015181840152602081019050613dd7565b83811115613e01576000848401525b50505050565b6000613e1282613d85565b91506000821415613e2657613e25613f3c565b5b600182039050919050565b60006002820490506001821680613e4957607f821691505b60208210811415613e5d57613e5c613f9a565b5b50919050565b613e6c82614045565b810181811067ffffffffffffffff82111715613e8b57613e8a613ff8565b5b80604052505050565b6000613e9f82613d85565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613ed257613ed1613f3c565b5b600182019050919050565b6000613ee882613ef9565b9050919050565b6000819050919050565b6000613f0482614056565b9050919050565b6000613f1682613d85565b9150613f2183613d85565b925082613f3157613f30613f6b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f53616c65206e6565647320746f20626520616374697665000000000000000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f5061796d656e74206578636565647320746f74616c20737570706c7900000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4d6f72652066726565206d696e7473207468616e20616c6c6f77656400000000600082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960008201527f73206e6f74206f776e0000000000000000000000000000000000000000000000602082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b7f50726573616c65206e6565647320746f20626520616374697665000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f414444524553535f494e56414c49440000000000000000000000000000000000600082015250565b7f434f554e545f494e56414c494400000000000000000000000000000000000000600082015250565b7f496e636f72726563742045746820616d6f756e74000000000000000000000000600082015250565b7f496e76616c696420707572636861736520616d6f756e74000000000000000000600082015250565b61460c81613d11565b811461461757600080fd5b50565b61462381613d23565b811461462e57600080fd5b50565b61463a81613d2f565b811461464557600080fd5b50565b61465181613d39565b811461465c57600080fd5b50565b61466881613d85565b811461467357600080fd5b5056fea2646970667358221220236d001cf64d6155763c65a9c7f57925bcfd40f6b997f2c347b1bed57922721164736f6c63430008070033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000000001854686520466973682054616e6b2052656d61737465726564000000000000000000000000000000000000000000000000000000000000000000000000000000084649534854414e4b000000000000000000000000000000000000000000000000