Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local data = {'\27','\76','\117','\97','\81','\0','\1','\4','\8','\4','\8','\0','\157','\60','\0','\0','\0','\0','\0','\0',
- '\108','\111','\99','\97','\108','\32','\115','\111','\117','\114','\99','\101','\32','\61','\32','\102','\117','\110','\99',
- '\116','\105','\111','\110','\40','\41','\10','\10','\10','\45','\45','\32','\67','\111','\112','\121','\47','\112','\97',
- '\115','\116','\101','\32','\116','\104','\101','\32','\115','\99','\114','\105','\112','\116','\32','\121','\111','\117',
- '\39','\100','\32','\108','\105','\107','\101','\32','\116','\111','\32','\101','\110','\99','\114','\121','\112','\116',
- '\32','\98','\101','\116','\119','\101','\101','\110','\32','\116','\104','\101','\32','\108','\105','\110','\101','\115',
- '\32','\98','\101','\108','\111','\119','\32','\45','\45','\10','\45','\45','\32','\84','\104','\101','\32','\101','\110',
- '\99','\114','\121','\112','\116','\101','\100','\32','\115','\99','\114','\105','\112','\116','\32','\119','\105','\108',
- '\108','\32','\98','\101','\32','\112','\114','\105','\110','\116','\101','\100','\32','\116','\111','\32','\116','\104',
- '\101','\32','\111','\117','\116','\112','\117','\116','\32','\45','\45','\10','\10','\10','\10','\45','\45','\45','\45',
- '\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45',
- '\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45',
- '\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45',
- '\45','\45','\45','\45','\45','\45','\45','\10','\10','\10','\10','\112','\114','\105','\110','\116','\40','\34','\116','\101',
- '\115','\116','\34','\41','\10','\10','\10','\10','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45',
- '\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45',
- '\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45',
- '\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\10',
- '\10','\10','\10','\101','\110','\100','\10','\10','\10','\10','\112','\114','\105','\110','\116','\40','\34','\45','\45',
- '\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\32','\84','\79',
- '\80','\32','\79','\70','\32','\83','\67','\82','\73','\80','\84','\32','\45','\45','\45','\45','\45','\45','\45','\45','\45',
- '\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\92','\110','\34','\41','\10','\10','\108','\111','\99',
- '\97','\108','\32','\101','\110','\99','\114','\121','\112','\116','\32','\61','\32','\102','\117','\110','\99','\116','\105',
- '\111','\110','\40','\115','\116','\114','\41','\10','\9','\9','\108','\111','\99','\97','\108','\32','\82','\101','\116',
- '\117','\114','\110','\32','\61','\32','\34','\108','\111','\99','\97','\108','\32','\100','\97','\116','\97','\32','\61',
- '\32','\123','\34','\10','\9','\9','\108','\111','\99','\97','\108','\32','\76','\101','\110','\103','\116','\104','\68',
- '\105','\118','\32','\61','\32','\49','\50','\48','\10','\9','\9','\102','\111','\114','\32','\105','\32','\61','\32','\49',
- '\44','\32','\115','\116','\114','\58','\108','\101','\110','\40','\41','\32','\100','\111','\10','\9','\9','\9','\105','\102',
- '\32','\105','\32','\61','\61','\32','\115','\116','\114','\58','\108','\101','\110','\40','\41','\32','\116','\104','\101',
- '\110','\10','\9','\9','\9','\9','\82','\101','\116','\117','\114','\110','\32','\61','\32','\82','\101','\116','\117','\114',
- '\110','\32','\46','\46','\32','\34','\39','\92','\92','\34','\32','\46','\46','\32','\115','\116','\114','\58','\115','\117',
- '\98','\40','\105','\44','\105','\41','\58','\98','\121','\116','\101','\40','\41','\32','\46','\46','\32','\34','\39','\34',
- '\10','\9','\9','\9','\9','\105','\102','\32','\82','\101','\116','\117','\114','\110','\58','\108','\101','\110','\40','\41',
- '\32','\62','\32','\76','\101','\110','\103','\116','\104','\68','\105','\118','\32','\116','\104','\101','\110','\10','\9',
- '\9','\9','\9','\9','\112','\114','\105','\110','\116','\40','\82','\101','\116','\117','\114','\110','\41','\10','\9','\9',
- '\9','\9','\9','\82','\101','\116','\117','\114','\110','\32','\61','\32','\34','\34','\10','\9','\9','\9','\9','\101','\110',
- '\100','\10','\9','\9','\9','\101','\108','\115','\101','\10','\9','\9','\9','\9','\82','\101','\116','\117','\114','\110',
- '\32','\61','\32','\82','\101','\116','\117','\114','\110','\32','\46','\46','\32','\34','\39','\92','\92','\34','\32','\46',
- '\46','\32','\115','\116','\114','\58','\115','\117','\98','\40','\105','\44','\105','\41','\58','\98','\121','\116','\101',
- '\40','\41','\32','\46','\46','\32','\34','\39','\44','\34','\10','\9','\9','\9','\9','\105','\102','\32','\82','\101','\116',
- '\117','\114','\110','\58','\108','\101','\110','\40','\41','\32','\62','\32','\76','\101','\110','\103','\116','\104','\68',
- '\105','\118','\32','\116','\104','\101','\110','\10','\9','\9','\9','\9','\9','\112','\114','\105','\110','\116','\40','\82',
- '\101','\116','\117','\114','\110','\41','\10','\9','\9','\9','\9','\9','\82','\101','\116','\117','\114','\110','\32','\61',
- '\32','\34','\34','\10','\9','\9','\9','\9','\101','\110','\100','\10','\9','\9','\9','\101','\110','\100','\10','\9','\9',
- '\101','\110','\100','\10','\9','\9','\82','\101','\116','\117','\114','\110','\32','\61','\32','\82','\101','\116','\117',
- '\114','\110','\32','\46','\46','\32','\34','\125','\92','\110','\34','\10','\9','\9','\112','\114','\105','\110','\116',
- '\40','\82','\101','\116','\117','\114','\110','\41','\10','\101','\110','\100','\10','\10','\101','\110','\99','\114','\121',
- '\112','\116','\40','\115','\116','\114','\105','\110','\103','\46','\100','\117','\109','\112','\40','\115','\111','\117',
- '\114','\99','\101','\41','\41','\10','\10','\112','\114','\105','\110','\116','\32','\40','\91','\91','\10','\108','\111',
- '\99','\97','\108','\32','\108','\117','\97','\95','\111','\112','\99','\111','\100','\101','\95','\116','\121','\112','\101',
- '\115','\32','\61','\32','\123','\10','\34','\65','\66','\67','\34','\44','\32','\32','\34','\65','\66','\120','\34','\44',
- '\32','\34','\65','\66','\67','\34','\44','\32','\32','\34','\65','\66','\67','\34','\44','\10','\34','\65','\66','\67','\34',
- '\44','\32','\32','\34','\65','\66','\120','\34','\44','\32','\34','\65','\66','\67','\34','\44','\32','\32','\34','\65',
- '\66','\120','\34','\44','\32','\10','\34','\65','\66','\67','\34','\44','\32','\32','\34','\65','\66','\67','\34','\44',
- '\32','\34','\65','\66','\67','\34','\44','\32','\32','\34','\65','\66','\67','\34','\44','\10','\34','\65','\66','\67','\34',
- '\44','\32','\32','\34','\65','\66','\67','\34','\44','\32','\34','\65','\66','\67','\34','\44','\32','\32','\34','\65','\66',
- '\67','\34','\44','\10','\34','\65','\66','\67','\34','\44','\32','\32','\34','\65','\66','\67','\34','\44','\32','\34','\65',
- '\66','\67','\34','\44','\32','\32','\34','\65','\66','\67','\34','\44','\10','\34','\65','\66','\67','\34','\44','\32','\32',
- '\34','\65','\66','\67','\34','\44','\32','\34','\65','\115','\66','\120','\34','\44','\32','\34','\65','\66','\67','\34',
- '\44','\10','\34','\65','\66','\67','\34','\44','\32','\32','\34','\65','\66','\67','\34','\44','\32','\34','\65','\66','\67',
- '\34','\44','\32','\32','\34','\65','\66','\67','\34','\44','\10','\34','\65','\66','\67','\34','\44','\32','\32','\34','\65',
- '\66','\67','\34','\44','\32','\34','\65','\66','\67','\34','\44','\32','\32','\34','\65','\115','\66','\120','\34','\44',
- '\10','\34','\65','\115','\66','\120','\34','\44','\32','\34','\65','\66','\67','\34','\44','\32','\34','\65','\66','\67',
- '\34','\44','\32','\34','\65','\66','\67','\34','\44','\10','\34','\65','\66','\120','\34','\44','\32','\32','\34','\65',
- '\66','\67','\34','\44','\10','\125','\10','\108','\111','\99','\97','\108','\32','\108','\117','\97','\95','\111','\112',
- '\99','\111','\100','\101','\95','\110','\97','\109','\101','\115','\32','\61','\32','\123','\10','\34','\77','\79','\86',
- '\69','\34','\44','\32','\32','\32','\32','\32','\34','\76','\79','\65','\68','\75','\34','\44','\32','\32','\32','\32','\32',
- '\34','\76','\79','\65','\68','\66','\79','\79','\76','\34','\44','\32','\34','\76','\79','\65','\68','\78','\73','\76','\34',
- '\44','\10','\34','\71','\69','\84','\85','\80','\86','\65','\76','\34','\44','\32','\34','\71','\69','\84','\71','\76','\79',
- '\66','\65','\76','\34','\44','\32','\34','\71','\69','\84','\84','\65','\66','\76','\69','\34','\44','\32','\34','\83','\69',
- '\84','\71','\76','\79','\66','\65','\76','\34','\44','\10','\34','\83','\69','\84','\85','\80','\86','\65','\76','\34','\44',
- '\32','\34','\83','\69','\84','\84','\65','\66','\76','\69','\34','\44','\32','\32','\34','\78','\69','\87','\84','\65','\66',
- '\76','\69','\34','\44','\32','\34','\83','\69','\76','\70','\34','\44','\10','\34','\65','\68','\68','\34','\44','\32','\32',
- '\32','\32','\32','\32','\34','\83','\85','\66','\34','\44','\32','\32','\32','\32','\32','\32','\32','\34','\77','\85','\76',
- '\34','\44','\32','\32','\32','\32','\32','\32','\34','\68','\73','\86','\34','\44','\10','\34','\77','\79','\68','\34','\44',
- '\32','\32','\32','\32','\32','\32','\34','\80','\79','\87','\34','\44','\32','\32','\32','\32','\32','\32','\32','\34','\85',
- '\78','\77','\34','\44','\32','\32','\32','\32','\32','\32','\34','\78','\79','\84','\34','\44','\10','\34','\76','\69','\78',
- '\34','\44','\32','\32','\32','\32','\32','\32','\34','\67','\79','\78','\67','\65','\84','\34','\44','\32','\32','\32','\32',
- '\34','\74','\77','\80','\34','\44','\32','\32','\32','\32','\32','\32','\34','\69','\81','\34','\44','\10','\34','\76','\84',
- '\34','\44','\32','\32','\32','\32','\32','\32','\32','\34','\76','\69','\34','\44','\32','\32','\32','\32','\32','\32','\32',
- '\32','\34','\84','\69','\83','\84','\34','\44','\32','\32','\32','\32','\32','\34','\84','\69','\83','\84','\83','\69','\84',
- '\34','\44','\10','\34','\67','\65','\76','\76','\34','\44','\32','\32','\32','\32','\32','\34','\84','\65','\73','\76','\67',
- '\65','\76','\76','\34','\44','\32','\32','\34','\82','\69','\84','\85','\82','\78','\34','\44','\32','\32','\32','\34','\70',
- '\79','\82','\76','\79','\79','\80','\34','\44','\10','\34','\70','\79','\82','\80','\82','\69','\80','\34','\44','\32','\32',
- '\34','\84','\70','\79','\82','\76','\79','\79','\80','\34','\44','\32','\32','\34','\83','\69','\84','\76','\73','\83','\84',
- '\34','\44','\32','\32','\34','\67','\76','\79','\83','\69','\34','\44','\10','\34','\67','\76','\79','\83','\85','\82','\69',
- '\34','\44','\32','\32','\34','\86','\65','\82','\65','\82','\71','\34','\10','\125','\59','\10','\108','\111','\99','\97',
- '\108','\32','\102','\117','\110','\99','\116','\105','\111','\110','\32','\103','\101','\116','\95','\98','\105','\116',
- '\115','\40','\105','\110','\112','\117','\116','\44','\32','\110','\44','\32','\110','\50','\41','\10','\105','\102','\32',
- '\110','\50','\32','\116','\104','\101','\110','\10','\108','\111','\99','\97','\108','\32','\116','\111','\116','\97','\108',
- '\32','\61','\32','\48','\10','\108','\111','\99','\97','\108','\32','\100','\105','\103','\105','\116','\110','\32','\61',
- '\32','\48','\10','\102','\111','\114','\32','\105','\32','\61','\32','\110','\44','\32','\110','\50','\32','\100','\111',
- '\10','\116','\111','\116','\97','\108','\32','\61','\32','\116','\111','\116','\97','\108','\32','\43','\32','\50','\94',
- '\100','\105','\103','\105','\116','\110','\42','\103','\101','\116','\95','\98','\105','\116','\115','\40','\105','\110',
- '\112','\117','\116','\44','\32','\105','\41','\10','\100','\105','\103','\105','\116','\110','\32','\61','\32','\100','\105',
- '\103','\105','\116','\110','\32','\43','\32','\49','\10','\101','\110','\100','\10','\114','\101','\116','\117','\114','\110',
- '\32','\116','\111','\116','\97','\108','\10','\101','\108','\115','\101','\10','\108','\111','\99','\97','\108','\32','\112',
- '\110','\32','\61','\32','\50','\94','\40','\110','\45','\49','\41','\10','\114','\101','\116','\117','\114','\110','\32',
- '\40','\105','\110','\112','\117','\116','\32','\37','\32','\40','\112','\110','\32','\43','\32','\112','\110','\41','\32',
- '\62','\61','\32','\112','\110','\41','\32','\97','\110','\100','\32','\49','\32','\111','\114','\32','\48','\10','\101',
- '\110','\100','\10','\101','\110','\100','\10','\108','\111','\99','\97','\108','\32','\102','\117','\110','\99','\116','\105',
- '\111','\110','\32','\100','\101','\99','\111','\100','\101','\95','\98','\121','\116','\101','\99','\111','\100','\101',
- '\40','\98','\121','\116','\101','\99','\111','\100','\101','\41','\10','\108','\111','\99','\97','\108','\32','\105','\110',
- '\100','\101','\120','\32','\61','\32','\49','\10','\108','\111','\99','\97','\108','\32','\98','\105','\103','\95','\101',
- '\110','\100','\105','\97','\110','\32','\61','\32','\102','\97','\108','\115','\101','\10','\108','\111','\99','\97','\108',
- '\32','\105','\110','\116','\95','\115','\105','\122','\101','\59','\10','\108','\111','\99','\97','\108','\32','\115','\105',
- '\122','\101','\95','\116','\59','\10','\108','\111','\99','\97','\108','\32','\103','\101','\116','\95','\105','\110','\116',
- '\44','\32','\103','\101','\116','\95','\115','\105','\122','\101','\95','\116','\59','\10','\108','\111','\99','\97','\108',
- '\32','\103','\101','\116','\95','\105','\110','\116','\56','\44','\32','\103','\101','\116','\95','\105','\110','\116','\51',
- '\50','\44','\32','\103','\101','\116','\95','\105','\110','\116','\54','\52','\44','\32','\103','\101','\116','\95','\102',
- '\108','\111','\97','\116','\54','\52','\44','\32','\103','\101','\116','\95','\115','\116','\114','\105','\110','\103','\59',
- '\10','\100','\111','\10','\102','\117','\110','\99','\116','\105','\111','\110','\32','\103','\101','\116','\95','\105',
- '\110','\116','\56','\40','\41','\10','\108','\111','\99','\97','\108','\32','\97','\32','\61','\32','\98','\121','\116',
- '\101','\99','\111','\100','\101','\58','\98','\121','\116','\101','\40','\105','\110','\100','\101','\120','\44','\32','\105',
- '\110','\100','\101','\120','\41','\59','\10','\105','\110','\100','\101','\120','\32','\61','\32','\105','\110','\100','\101',
- '\120','\32','\43','\32','\49','\10','\114','\101','\116','\117','\114','\110','\32','\97','\10','\101','\110','\100','\10',
- '\102','\117','\110','\99','\116','\105','\111','\110','\32','\103','\101','\116','\95','\105','\110','\116','\51','\50',
- '\40','\41','\10','\108','\111','\99','\97','\108','\32','\97','\44','\32','\98','\44','\32','\99','\44','\32','\100','\32',
- '\61','\32','\98','\121','\116','\101','\99','\111','\100','\101','\58','\98','\121','\116','\101','\40','\105','\110','\100',
- '\101','\120','\44','\32','\105','\110','\100','\101','\120','\32','\43','\32','\51','\41','\59','\10','\105','\110','\100',
- '\101','\120','\32','\61','\32','\105','\110','\100','\101','\120','\32','\43','\32','\52','\59','\10','\114','\101','\116',
- '\117','\114','\110','\32','\100','\42','\49','\54','\55','\55','\55','\50','\49','\54','\32','\43','\32','\99','\42','\54',
- '\53','\53','\51','\54','\32','\43','\32','\98','\42','\50','\53','\54','\32','\43','\32','\97','\10','\101','\110','\100',
- '\10','\102','\117','\110','\99','\116','\105','\111','\110','\32','\103','\101','\116','\95','\105','\110','\116','\54',
- '\52','\40','\41','\10','\108','\111','\99','\97','\108','\32','\97','\32','\61','\32','\103','\101','\116','\95','\105',
- '\110','\116','\51','\50','\40','\41','\59','\10','\108','\111','\99','\97','\108','\32','\98','\32','\61','\32','\103','\101',
- '\116','\95','\105','\110','\116','\51','\50','\40','\41','\59','\10','\114','\101','\116','\117','\114','\110','\32','\98',
- '\42','\52','\50','\57','\52','\57','\54','\55','\50','\57','\54','\32','\43','\32','\97','\59','\10','\101','\110','\100',
- '\10','\102','\117','\110','\99','\116','\105','\111','\110','\32','\103','\101','\116','\95','\102','\108','\111','\97',
- '\116','\54','\52','\40','\41','\10','\108','\111','\99','\97','\108','\32','\97','\32','\61','\32','\103','\101','\116',
- '\95','\105','\110','\116','\51','\50','\40','\41','\10','\108','\111','\99','\97','\108','\32','\98','\32','\61','\32','\103',
- '\101','\116','\95','\105','\110','\116','\51','\50','\40','\41','\10','\114','\101','\116','\117','\114','\110','\32','\40',
- '\45','\50','\42','\103','\101','\116','\95','\98','\105','\116','\115','\40','\98','\44','\32','\51','\50','\41','\43','\49',
- '\41','\42','\40','\50','\94','\40','\103','\101','\116','\95','\98','\105','\116','\115','\40','\98','\44','\32','\50','\49',
- '\44','\32','\51','\49','\41','\45','\49','\48','\50','\51','\41','\41','\42','\10','\40','\40','\103','\101','\116','\95',
- '\98','\105','\116','\115','\40','\98','\44','\32','\49','\44','\32','\50','\48','\41','\42','\40','\50','\94','\51','\50',
- '\41','\32','\43','\32','\97','\41','\47','\40','\50','\94','\53','\50','\41','\43','\49','\41','\10','\101','\110','\100',
- '\10','\102','\117','\110','\99','\116','\105','\111','\110','\32','\103','\101','\116','\95','\115','\116','\114','\105',
- '\110','\103','\40','\108','\101','\110','\41','\10','\108','\111','\99','\97','\108','\32','\115','\116','\114','\59','\10',
- '\105','\102','\32','\108','\101','\110','\32','\116','\104','\101','\110','\10','\115','\116','\114','\32','\61','\32','\98',
- '\121','\116','\101','\99','\111','\100','\101','\58','\115','\117','\98','\40','\105','\110','\100','\101','\120','\44',
- '\32','\105','\110','\100','\101','\120','\32','\43','\32','\108','\101','\110','\32','\45','\32','\49','\41','\59','\10',
- '\105','\110','\100','\101','\120','\32','\61','\32','\105','\110','\100','\101','\120','\32','\43','\32','\108','\101','\110',
- '\59','\10','\101','\108','\115','\101','\10','\108','\101','\110','\32','\61','\32','\103','\101','\116','\95','\115','\105',
- '\122','\101','\95','\116','\40','\41','\59','\10','\105','\102','\32','\108','\101','\110','\32','\61','\61','\32','\48',
- '\32','\116','\104','\101','\110','\32','\114','\101','\116','\117','\114','\110','\59','\32','\101','\110','\100','\10',
- '\115','\116','\114','\32','\61','\32','\98','\121','\116','\101','\99','\111','\100','\101','\58','\115','\117','\98','\40',
- '\105','\110','\100','\101','\120','\44','\32','\105','\110','\100','\101','\120','\32','\43','\32','\108','\101','\110',
- '\32','\45','\32','\49','\41','\59','\10','\105','\110','\100','\101','\120','\32','\61','\32','\105','\110','\100','\101',
- '\120','\32','\43','\32','\108','\101','\110','\59','\10','\101','\110','\100','\10','\114','\101','\116','\117','\114','\110',
- '\32','\115','\116','\114','\59','\10','\101','\110','\100','\10','\101','\110','\100','\10','\108','\111','\99','\97','\108',
- '\32','\102','\117','\110','\99','\116','\105','\111','\110','\32','\100','\101','\99','\111','\100','\101','\95','\99','\104',
- '\117','\110','\107','\40','\41','\10','\108','\111','\99','\97','\108','\32','\99','\104','\117','\110','\107','\59','\10',
- '\108','\111','\99','\97','\108','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\115',
- '\32','\61','\32','\123','\125','\59','\10','\108','\111','\99','\97','\108','\32','\99','\111','\110','\115','\116','\97',
- '\110','\116','\115','\32','\32','\32','\32','\61','\32','\123','\125','\59','\10','\108','\111','\99','\97','\108','\32',
- '\112','\114','\111','\116','\111','\116','\121','\112','\101','\115','\32','\32','\32','\61','\32','\123','\125','\59','\10',
- '\108','\111','\99','\97','\108','\32','\100','\101','\98','\117','\103','\32','\61','\32','\123','\10','\108','\105','\110',
- '\101','\115','\32','\61','\32','\123','\125','\59','\10','\125','\59','\10','\99','\104','\117','\110','\107','\32','\61',
- '\32','\123','\10','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\115','\32','\61','\32','\105',
- '\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\115','\59','\10','\99','\111','\110','\115','\116',
- '\97','\110','\116','\115','\32','\32','\32','\32','\61','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115',
- '\59','\10','\112','\114','\111','\116','\111','\116','\121','\112','\101','\115','\32','\32','\32','\61','\32','\112','\114',
- '\111','\116','\111','\116','\121','\112','\101','\115','\59','\10','\100','\101','\98','\117','\103','\32','\61','\32','\100',
- '\101','\98','\117','\103','\59','\10','\125','\59','\10','\108','\111','\99','\97','\108','\32','\110','\117','\109','\59',
- '\10','\99','\104','\117','\110','\107','\46','\110','\97','\109','\101','\32','\32','\32','\32','\32','\32','\32','\61',
- '\32','\103','\101','\116','\95','\115','\116','\114','\105','\110','\103','\40','\41','\59','\10','\99','\104','\117','\110',
- '\107','\46','\102','\105','\114','\115','\116','\95','\108','\105','\110','\101','\32','\61','\32','\103','\101','\116',
- '\95','\105','\110','\116','\40','\41','\59','\10','\99','\104','\117','\110','\107','\46','\108','\97','\115','\116','\95',
- '\108','\105','\110','\101','\32','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\40','\41','\59','\10',
- '\105','\102','\32','\99','\104','\117','\110','\107','\46','\110','\97','\109','\101','\32','\116','\104','\101','\110',
- '\32','\99','\104','\117','\110','\107','\46','\110','\97','\109','\101','\32','\61','\32','\99','\104','\117','\110','\107',
- '\46','\110','\97','\109','\101','\58','\115','\117','\98','\40','\49','\44','\32','\45','\50','\41','\59','\32','\101','\110',
- '\100','\10','\99','\104','\117','\110','\107','\46','\117','\112','\118','\97','\108','\117','\101','\115','\32','\32','\61',
- '\32','\103','\101','\116','\95','\105','\110','\116','\56','\40','\41','\59','\10','\99','\104','\117','\110','\107','\46',
- '\97','\114','\103','\117','\109','\101','\110','\116','\115','\32','\61','\32','\103','\101','\116','\95','\105','\110',
- '\116','\56','\40','\41','\59','\10','\99','\104','\117','\110','\107','\46','\118','\97','\114','\103','\32','\32','\32',
- '\32','\32','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\56','\40','\41','\59','\10','\99','\104',
- '\117','\110','\107','\46','\115','\116','\97','\99','\107','\32','\32','\32','\32','\32','\61','\32','\103','\101','\116',
- '\95','\105','\110','\116','\56','\40','\41','\59','\10','\100','\111','\10','\110','\117','\109','\32','\61','\32','\103',
- '\101','\116','\95','\105','\110','\116','\40','\41','\59','\10','\102','\111','\114','\32','\105','\32','\61','\32','\49',
- '\44','\32','\110','\117','\109','\32','\100','\111','\10','\108','\111','\99','\97','\108','\32','\105','\110','\115','\116',
- '\114','\117','\99','\116','\105','\111','\110','\32','\61','\32','\123','\10','\125','\59','\10','\108','\111','\99','\97',
- '\108','\32','\100','\97','\116','\97','\32','\32','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\51',
- '\50','\40','\41','\59','\10','\108','\111','\99','\97','\108','\32','\111','\112','\99','\111','\100','\101','\32','\61',
- '\32','\103','\101','\116','\95','\98','\105','\116','\115','\40','\100','\97','\116','\97','\44','\32','\49','\44','\32',
- '\54','\41','\59','\10','\108','\111','\99','\97','\108','\32','\116','\121','\112','\101','\32','\32','\32','\61','\32',
- '\108','\117','\97','\95','\111','\112','\99','\111','\100','\101','\95','\116','\121','\112','\101','\115','\91','\111',
- '\112','\99','\111','\100','\101','\32','\43','\32','\49','\93','\59','\10','\105','\110','\115','\116','\114','\117','\99',
- '\116','\105','\111','\110','\46','\111','\112','\99','\111','\100','\101','\32','\61','\32','\111','\112','\99','\111','\100',
- '\101','\59','\10','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\116','\121','\112',
- '\101','\32','\32','\32','\61','\32','\116','\121','\112','\101','\59','\10','\105','\110','\115','\116','\114','\117','\99',
- '\116','\105','\111','\110','\46','\65','\32','\61','\32','\103','\101','\116','\95','\98','\105','\116','\115','\40','\100',
- '\97','\116','\97','\44','\32','\55','\44','\32','\49','\52','\41','\59','\10','\105','\102','\32','\116','\121','\112','\101',
- '\32','\61','\61','\32','\34','\65','\66','\67','\34','\32','\116','\104','\101','\110','\10','\105','\110','\115','\116',
- '\114','\117','\99','\116','\105','\111','\110','\46','\66','\32','\61','\32','\103','\101','\116','\95','\98','\105','\116',
- '\115','\40','\100','\97','\116','\97','\44','\32','\50','\52','\44','\32','\51','\50','\41','\59','\10','\105','\110','\115',
- '\116','\114','\117','\99','\116','\105','\111','\110','\46','\67','\32','\61','\32','\103','\101','\116','\95','\98','\105',
- '\116','\115','\40','\100','\97','\116','\97','\44','\32','\49','\53','\44','\32','\50','\51','\41','\59','\10','\101','\108',
- '\115','\101','\105','\102','\32','\116','\121','\112','\101','\32','\61','\61','\32','\34','\65','\66','\120','\34','\32',
- '\116','\104','\101','\110','\10','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66',
- '\120','\32','\61','\32','\103','\101','\116','\95','\98','\105','\116','\115','\40','\100','\97','\116','\97','\44','\32',
- '\49','\53','\44','\32','\51','\50','\41','\59','\10','\101','\108','\115','\101','\105','\102','\32','\116','\121','\112',
- '\101','\32','\61','\61','\32','\34','\65','\115','\66','\120','\34','\32','\116','\104','\101','\110','\10','\105','\110',
- '\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\115','\66','\120','\32','\61','\32','\103','\101','\116',
- '\95','\98','\105','\116','\115','\40','\100','\97','\116','\97','\44','\32','\49','\53','\44','\32','\51','\50','\41','\32',
- '\45','\32','\49','\51','\49','\48','\55','\49','\59','\10','\101','\110','\100','\10','\105','\110','\115','\116','\114',
- '\117','\99','\116','\105','\111','\110','\115','\91','\105','\93','\32','\61','\32','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\59','\10','\101','\110','\100','\10','\101','\110','\100','\10','\100','\111','\10','\110',
- '\117','\109','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\40','\41','\59','\10','\102','\111','\114',
- '\32','\105','\32','\61','\32','\49','\44','\32','\110','\117','\109','\32','\100','\111','\10','\108','\111','\99','\97',
- '\108','\32','\99','\111','\110','\115','\116','\97','\110','\116','\32','\61','\32','\123','\10','\125','\59','\10','\108',
- '\111','\99','\97','\108','\32','\116','\121','\112','\101','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116',
- '\56','\40','\41','\59','\10','\99','\111','\110','\115','\116','\97','\110','\116','\46','\116','\121','\112','\101','\32',
- '\61','\32','\116','\121','\112','\101','\59','\10','\105','\102','\32','\116','\121','\112','\101','\32','\61','\61','\32',
- '\49','\32','\116','\104','\101','\110','\10','\99','\111','\110','\115','\116','\97','\110','\116','\46','\100','\97','\116',
- '\97','\32','\61','\32','\40','\103','\101','\116','\95','\105','\110','\116','\56','\40','\41','\32','\126','\61','\32',
- '\48','\41','\59','\10','\101','\108','\115','\101','\105','\102','\32','\116','\121','\112','\101','\32','\61','\61','\32',
- '\51','\32','\116','\104','\101','\110','\10','\99','\111','\110','\115','\116','\97','\110','\116','\46','\100','\97','\116',
- '\97','\32','\61','\32','\103','\101','\116','\95','\102','\108','\111','\97','\116','\54','\52','\40','\41','\59','\10',
- '\101','\108','\115','\101','\105','\102','\32','\116','\121','\112','\101','\32','\61','\61','\32','\52','\32','\116','\104',
- '\101','\110','\10','\99','\111','\110','\115','\116','\97','\110','\116','\46','\100','\97','\116','\97','\32','\61','\32',
- '\103','\101','\116','\95','\115','\116','\114','\105','\110','\103','\40','\41','\58','\115','\117','\98','\40','\49','\44',
- '\32','\45','\50','\41','\59','\10','\101','\110','\100','\10','\99','\111','\110','\115','\116','\97','\110','\116','\115',
- '\91','\105','\45','\49','\93','\32','\61','\32','\99','\111','\110','\115','\116','\97','\110','\116','\59','\10','\101',
- '\110','\100','\10','\101','\110','\100','\10','\100','\111','\10','\110','\117','\109','\32','\61','\32','\103','\101','\116',
- '\95','\105','\110','\116','\40','\41','\59','\10','\102','\111','\114','\32','\105','\32','\61','\32','\49','\44','\32',
- '\110','\117','\109','\32','\100','\111','\10','\112','\114','\111','\116','\111','\116','\121','\112','\101','\115','\91',
- '\105','\45','\49','\93','\32','\61','\32','\100','\101','\99','\111','\100','\101','\95','\99','\104','\117','\110','\107',
- '\40','\41','\59','\10','\101','\110','\100','\10','\101','\110','\100','\10','\100','\111','\10','\108','\111','\99','\97',
- '\108','\32','\100','\97','\116','\97','\32','\61','\32','\100','\101','\98','\117','\103','\46','\108','\105','\110','\101',
- '\115','\10','\110','\117','\109','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\40','\41','\59','\10',
- '\102','\111','\114','\32','\105','\32','\61','\32','\49','\44','\32','\110','\117','\109','\32','\100','\111','\10','\100',
- '\97','\116','\97','\91','\105','\93','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\51','\50','\40',
- '\41','\59','\10','\101','\110','\100','\10','\110','\117','\109','\32','\61','\32','\103','\101','\116','\95','\105','\110',
- '\116','\40','\41','\59','\10','\102','\111','\114','\32','\105','\32','\61','\32','\49','\44','\32','\110','\117','\109',
- '\32','\100','\111','\10','\103','\101','\116','\95','\115','\116','\114','\105','\110','\103','\40','\41','\58','\115','\117',
- '\98','\40','\49','\44','\32','\45','\50','\41','\59','\10','\103','\101','\116','\95','\105','\110','\116','\51','\50','\40',
- '\41','\59','\10','\103','\101','\116','\95','\105','\110','\116','\51','\50','\40','\41','\59','\10','\101','\110','\100',
- '\10','\110','\117','\109','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\40','\41','\59','\10','\102',
- '\111','\114','\32','\105','\32','\61','\32','\49','\44','\32','\110','\117','\109','\32','\100','\111','\10','\103','\101',
- '\116','\95','\115','\116','\114','\105','\110','\103','\40','\41','\59','\10','\101','\110','\100','\10','\101','\110','\100',
- '\10','\114','\101','\116','\117','\114','\110','\32','\99','\104','\117','\110','\107','\59','\10','\101','\110','\100',
- '\10','\100','\111','\10','\97','\115','\115','\101','\114','\116','\40','\103','\101','\116','\95','\115','\116','\114',
- '\105','\110','\103','\40','\52','\41','\32','\61','\61','\32','\34','\92','\50','\55','\76','\117','\97','\34','\44','\32',
- '\34','\76','\117','\97','\32','\98','\121','\116','\101','\99','\111','\100','\101','\32','\101','\120','\112','\101','\99',
- '\116','\101','\100','\46','\34','\41','\59','\10','\97','\115','\115','\101','\114','\116','\40','\103','\101','\116','\95',
- '\105','\110','\116','\56','\40','\41','\32','\61','\61','\32','\48','\120','\53','\49','\44','\32','\34','\79','\110','\108',
- '\121','\32','\76','\117','\97','\32','\53','\46','\49','\32','\105','\115','\32','\115','\117','\112','\112','\111','\114',
- '\116','\101','\100','\46','\34','\41','\59','\10','\103','\101','\116','\95','\105','\110','\116','\56','\40','\41','\59',
- '\10','\98','\105','\103','\95','\101','\110','\100','\105','\97','\110','\32','\61','\32','\40','\103','\101','\116','\95',
- '\105','\110','\116','\56','\40','\41','\32','\61','\61','\32','\48','\41','\59','\10','\105','\110','\116','\95','\115',
- '\105','\122','\101','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\56','\40','\41','\59','\10','\115',
- '\105','\122','\101','\95','\116','\32','\32','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\56','\40',
- '\41','\59','\10','\105','\102','\32','\105','\110','\116','\95','\115','\105','\122','\101','\32','\61','\61','\32','\52',
- '\32','\116','\104','\101','\110','\10','\103','\101','\116','\95','\105','\110','\116','\32','\61','\32','\103','\101','\116',
- '\95','\105','\110','\116','\51','\50','\59','\10','\101','\108','\115','\101','\105','\102','\32','\105','\110','\116','\95',
- '\115','\105','\122','\101','\32','\61','\61','\32','\56','\32','\116','\104','\101','\110','\10','\103','\101','\116','\95',
- '\105','\110','\116','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\54','\52','\59','\10','\101','\108',
- '\115','\101','\10','\101','\114','\114','\111','\114','\40','\34','\85','\110','\115','\117','\112','\112','\111','\114',
- '\116','\101','\100','\32','\98','\121','\116','\101','\99','\111','\100','\101','\32','\116','\97','\114','\103','\101',
- '\116','\32','\112','\108','\97','\116','\102','\111','\114','\109','\34','\41','\59','\10','\101','\110','\100','\10','\105',
- '\102','\32','\115','\105','\122','\101','\95','\116','\32','\61','\61','\32','\52','\32','\116','\104','\101','\110','\10',
- '\103','\101','\116','\95','\115','\105','\122','\101','\95','\116','\32','\61','\32','\103','\101','\116','\95','\105','\110',
- '\116','\51','\50','\59','\10','\101','\108','\115','\101','\105','\102','\32','\115','\105','\122','\101','\95','\116','\32',
- '\61','\61','\32','\56','\32','\116','\104','\101','\110','\10','\103','\101','\116','\95','\115','\105','\122','\101','\95',
- '\116','\32','\61','\32','\103','\101','\116','\95','\105','\110','\116','\54','\52','\59','\10','\101','\108','\115','\101',
- '\10','\101','\114','\114','\111','\114','\40','\34','\85','\110','\115','\117','\112','\112','\111','\114','\116','\101',
- '\100','\32','\98','\121','\116','\101','\99','\111','\100','\101','\32','\116','\97','\114','\103','\101','\116','\32','\112',
- '\108','\97','\116','\102','\111','\114','\109','\34','\41','\59','\10','\101','\110','\100','\10','\97','\115','\115','\101',
- '\114','\116','\40','\103','\101','\116','\95','\115','\116','\114','\105','\110','\103','\40','\51','\41','\32','\61','\61',
- '\32','\34','\92','\52','\92','\56','\92','\48','\34','\44','\10','\34','\85','\110','\115','\117','\112','\112','\111','\114',
- '\116','\101','\100','\32','\98','\121','\116','\101','\99','\111','\100','\101','\32','\116','\97','\114','\103','\101',
- '\116','\32','\112','\108','\97','\116','\102','\111','\114','\109','\34','\41','\59','\10','\101','\110','\100','\10','\114',
- '\101','\116','\117','\114','\110','\32','\100','\101','\99','\111','\100','\101','\95','\99','\104','\117','\110','\107',
- '\40','\41','\59','\10','\101','\110','\100','\10','\108','\111','\99','\97','\108','\32','\102','\117','\110','\99','\116',
- '\105','\111','\110','\32','\104','\97','\110','\100','\108','\101','\95','\114','\101','\116','\117','\114','\110','\40',
- '\46','\46','\46','\41','\10','\108','\111','\99','\97','\108','\32','\99','\32','\61','\32','\115','\101','\108','\101',
- '\99','\116','\40','\34','\35','\34','\44','\32','\46','\46','\46','\41','\10','\108','\111','\99','\97','\108','\32','\116',
- '\32','\61','\32','\123','\46','\46','\46','\125','\10','\114','\101','\116','\117','\114','\110','\32','\99','\44','\32',
- '\116','\10','\101','\110','\100','\10','\108','\111','\99','\97','\108','\32','\102','\117','\110','\99','\116','\105','\111',
- '\110','\32','\99','\114','\101','\97','\116','\101','\95','\119','\114','\97','\112','\112','\101','\114','\40','\99','\97',
- '\99','\104','\101','\44','\32','\117','\112','\118','\97','\108','\117','\101','\115','\41','\10','\108','\111','\99','\97',
- '\108','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\115','\32','\61','\32','\99','\97',
- '\99','\104','\101','\46','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\115','\59','\10',
- '\108','\111','\99','\97','\108','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\32','\32','\32','\32',
- '\61','\32','\99','\97','\99','\104','\101','\46','\99','\111','\110','\115','\116','\97','\110','\116','\115','\59','\10',
- '\108','\111','\99','\97','\108','\32','\112','\114','\111','\116','\111','\116','\121','\112','\101','\115','\32','\32',
- '\32','\61','\32','\99','\97','\99','\104','\101','\46','\112','\114','\111','\116','\111','\116','\121','\112','\101','\115',
- '\59','\10','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\44','\32','\116','\111','\112',
- '\10','\108','\111','\99','\97','\108','\32','\101','\110','\118','\105','\114','\111','\110','\109','\101','\110','\116',
- '\10','\108','\111','\99','\97','\108','\32','\73','\80','\32','\61','\32','\49','\59','\10','\108','\111','\99','\97','\108',
- '\32','\118','\97','\114','\97','\114','\103','\44','\32','\118','\97','\114','\97','\114','\103','\95','\115','\105','\122',
- '\101','\32','\10','\10','\108','\111','\99','\97','\108','\32','\111','\112','\99','\111','\100','\101','\95','\102','\117',
- '\110','\99','\115','\32','\61','\32','\123','\10','\91','\48','\93','\32','\32','\61','\32','\102','\117','\110','\99','\116',
- '\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\115',
- '\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93',
- '\32','\61','\32','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\46','\66','\93','\59','\10','\101','\110','\100','\44','\10','\91','\49','\93','\32','\32','\61','\32','\102','\117',
- '\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\41','\10','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\65','\93','\32','\61','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\105','\110','\115',
- '\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\120','\93','\46','\100','\97','\116','\97','\59','\10',
- '\101','\110','\100','\44','\10','\91','\50','\93','\32','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111',
- '\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\115','\116','\97',
- '\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\32','\61',
- '\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\32','\126','\61','\32','\48',
- '\10','\105','\102','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\67','\32','\126',
- '\61','\32','\48','\32','\116','\104','\101','\110','\10','\73','\80','\32','\61','\32','\73','\80','\32','\43','\32','\49',
- '\10','\101','\110','\100','\10','\101','\110','\100','\44','\10','\91','\51','\93','\32','\32','\61','\32','\102','\117',
- '\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\41','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\32','\61','\32','\115','\116','\97',
- '\99','\107','\10','\102','\111','\114','\32','\105','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116',
- '\105','\111','\110','\46','\65','\44','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\66','\32','\100','\111','\10','\115','\116','\97','\99','\107','\91','\105','\93','\32','\61','\32','\110','\105',
- '\108','\10','\101','\110','\100','\10','\101','\110','\100','\44','\10','\91','\52','\93','\32','\61','\32','\102','\117',
- '\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\41','\10','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\65','\93','\32','\61','\32','\117','\112','\118','\97','\108','\117','\101','\115','\91','\105','\110','\115','\116',
- '\114','\117','\99','\116','\105','\111','\110','\46','\66','\93','\10','\101','\110','\100','\44','\10','\91','\53','\93',
- '\32','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108','\32','\107','\101','\121','\32','\61','\32',
- '\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\105','\110','\115','\116','\114','\117','\99','\116',
- '\105','\111','\110','\46','\66','\120','\93','\46','\100','\97','\116','\97','\59','\10','\115','\116','\97','\99','\107',
- '\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\32','\61','\32','\101',
- '\110','\118','\105','\114','\111','\110','\109','\101','\110','\116','\91','\107','\101','\121','\93','\59','\10','\101',
- '\110','\100','\44','\10','\91','\54','\93','\32','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110',
- '\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108',
- '\32','\67','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\67','\10',
- '\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\32','\61','\32','\115','\116','\97','\99','\107',
- '\10','\67','\32','\61','\32','\67','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110',
- '\115','\116','\97','\110','\116','\115','\91','\67','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32',
- '\111','\114','\32','\115','\116','\97','\99','\107','\91','\67','\93','\10','\115','\116','\97','\99','\107','\91','\105',
- '\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\32','\61','\32','\115','\116','\97',
- '\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\93','\91','\67',
- '\93','\59','\10','\101','\110','\100','\44','\10','\91','\55','\93','\32','\32','\61','\32','\102','\117','\110','\99','\116',
- '\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108',
- '\111','\99','\97','\108','\32','\107','\101','\121','\32','\61','\32','\99','\111','\110','\115','\116','\97','\110','\116',
- '\115','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\120','\93','\46','\100',
- '\97','\116','\97','\59','\10','\101','\110','\118','\105','\114','\111','\110','\109','\101','\110','\116','\91','\107',
- '\101','\121','\93','\32','\61','\32','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99',
- '\116','\105','\111','\110','\46','\65','\93','\59','\10','\101','\110','\100','\44','\10','\91','\56','\93','\32','\61',
- '\32','\102','\117','\110','\99','\116','\105','\111','\110','\32','\40','\105','\110','\115','\116','\114','\117','\99',
- '\116','\105','\111','\110','\41','\10','\117','\112','\118','\97','\108','\117','\101','\115','\91','\105','\110','\115',
- '\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\93','\32','\61','\32','\115','\116','\97','\99','\107',
- '\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\10','\101','\110','\100',
- '\44','\10','\91','\57','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\32','\40','\105',
- '\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108','\32','\66',
- '\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\59','\10','\108',
- '\111','\99','\97','\108','\32','\67','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\46','\67','\59','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\44','\32','\99',
- '\111','\110','\115','\116','\97','\110','\116','\115','\32','\61','\32','\115','\116','\97','\99','\107','\44','\32','\99',
- '\111','\110','\115','\116','\97','\110','\116','\115','\59','\10','\66','\32','\61','\32','\66','\32','\62','\32','\50',
- '\53','\53','\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\66','\45',
- '\50','\53','\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91',
- '\66','\93','\59','\10','\67','\32','\61','\32','\67','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32',
- '\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\67','\45','\50','\53','\54','\93','\46','\100','\97',
- '\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91','\67','\93','\59','\10','\115','\116','\97',
- '\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\91','\66',
- '\93','\32','\61','\32','\67','\10','\101','\110','\100','\44','\10','\91','\49','\48','\93','\32','\61','\32','\102','\117',
- '\110','\99','\116','\105','\111','\110','\32','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\41','\10','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\46','\65','\93','\32','\61','\32','\123','\125','\10','\101','\110','\100','\44','\10','\91','\49','\49','\93','\32',
- '\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\32','\40','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108','\32','\65','\32','\61','\32','\105','\110',
- '\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\10','\108','\111','\99','\97','\108','\32','\66',
- '\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\10','\108','\111',
- '\99','\97','\108','\32','\67','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\67','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\32','\61','\32','\115','\116',
- '\97','\99','\107','\10','\66','\32','\61','\32','\115','\116','\97','\99','\107','\91','\66','\93','\10','\67','\32','\61',
- '\32','\67','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110',
- '\116','\115','\91','\67','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115',
- '\116','\97','\99','\107','\91','\67','\93','\10','\115','\116','\97','\99','\107','\91','\65','\43','\49','\93','\32','\61',
- '\32','\66','\10','\115','\116','\97','\99','\107','\91','\65','\93','\32','\32','\32','\61','\32','\66','\91','\67','\93',
- '\10','\101','\110','\100','\44','\10','\91','\49','\50','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105',
- '\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111',
- '\99','\97','\108','\32','\66','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\66','\59','\10','\108','\111','\99','\97','\108','\32','\67','\32','\61','\32','\105','\110','\115','\116','\114',
- '\117','\99','\116','\105','\111','\110','\46','\67','\59','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97',
- '\99','\107','\44','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\32','\61','\32','\115','\116','\97',
- '\99','\107','\44','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\59','\10','\66','\32','\61','\32',
- '\66','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110',
- '\116','\115','\91','\66','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115',
- '\116','\97','\99','\107','\91','\66','\93','\59','\10','\67','\32','\61','\32','\67','\32','\62','\32','\50','\53','\53',
- '\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\67','\45','\50','\53',
- '\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91','\67','\93',
- '\59','\10','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\65','\93','\32','\61','\32','\66','\43','\67','\59','\10','\101','\110','\100','\44','\10','\91','\49','\51','\93',
- '\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108','\32','\66','\32','\61','\32','\105','\110',
- '\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\59','\10','\108','\111','\99','\97','\108','\32',
- '\67','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\67','\59','\10',
- '\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\44','\32','\99','\111','\110','\115','\116','\97',
- '\110','\116','\115','\32','\61','\32','\115','\116','\97','\99','\107','\44','\32','\99','\111','\110','\115','\116','\97',
- '\110','\116','\115','\59','\10','\66','\32','\61','\32','\66','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100',
- '\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\66','\45','\50','\53','\54','\93','\46','\100',
- '\97','\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91','\66','\93','\59','\10','\67','\32','\61',
- '\32','\67','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110',
- '\116','\115','\91','\67','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115',
- '\116','\97','\99','\107','\91','\67','\93','\59','\10','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116',
- '\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\32','\61','\32','\66','\32','\45','\32','\67','\59','\9',
- '\10','\101','\110','\100','\44','\10','\91','\49','\52','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105',
- '\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111',
- '\99','\97','\108','\32','\66','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\66','\59','\10','\108','\111','\99','\97','\108','\32','\67','\32','\61','\32','\105','\110','\115','\116','\114',
- '\117','\99','\116','\105','\111','\110','\46','\67','\59','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97',
- '\99','\107','\44','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\32','\61','\32','\115','\116','\97',
- '\99','\107','\44','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\59','\10','\66','\32','\61','\32',
- '\66','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110',
- '\116','\115','\91','\66','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115',
- '\116','\97','\99','\107','\91','\66','\93','\59','\10','\67','\32','\61','\32','\67','\32','\62','\32','\50','\53','\53',
- '\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\67','\45','\50','\53',
- '\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91','\67','\93',
- '\59','\10','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\65','\93','\32','\61','\32','\66','\32','\42','\32','\67','\59','\10','\101','\110','\100','\44','\10','\91','\49',
- '\53','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114',
- '\117','\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108','\32','\66','\32','\61','\32','\105',
- '\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\59','\10','\108','\111','\99','\97','\108',
- '\32','\67','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\67','\59',
- '\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\44','\32','\99','\111','\110','\115','\116',
- '\97','\110','\116','\115','\32','\61','\32','\115','\116','\97','\99','\107','\44','\32','\99','\111','\110','\115','\116',
- '\97','\110','\116','\115','\59','\10','\66','\32','\61','\32','\66','\32','\62','\32','\50','\53','\53','\32','\97','\110',
- '\100','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\66','\45','\50','\53','\54','\93','\46',
- '\100','\97','\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91','\66','\93','\59','\10','\67',
- '\32','\61','\32','\67','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110','\115','\116',
- '\97','\110','\116','\115','\91','\67','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32','\111','\114',
- '\32','\115','\116','\97','\99','\107','\91','\67','\93','\59','\10','\115','\116','\97','\99','\107','\91','\105','\110',
- '\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\32','\61','\32','\66','\32','\47','\32',
- '\67','\59','\10','\101','\110','\100','\44','\10','\91','\49','\54','\93','\32','\61','\32','\102','\117','\110','\99','\116',
- '\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108',
- '\111','\99','\97','\108','\32','\66','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\46','\66','\59','\10','\108','\111','\99','\97','\108','\32','\67','\32','\61','\32','\105','\110','\115','\116',
- '\114','\117','\99','\116','\105','\111','\110','\46','\67','\59','\10','\108','\111','\99','\97','\108','\32','\115','\116',
- '\97','\99','\107','\44','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\32','\61','\32','\115','\116',
- '\97','\99','\107','\44','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\59','\10','\66','\32','\61',
- '\32','\66','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110',
- '\116','\115','\91','\66','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115',
- '\116','\97','\99','\107','\91','\66','\93','\59','\10','\67','\32','\61','\32','\67','\32','\62','\32','\50','\53','\53',
- '\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\67','\45','\50','\53',
- '\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91','\67','\93',
- '\59','\10','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\65','\93','\32','\61','\32','\66','\32','\37','\32','\67','\59','\9','\9','\10','\101','\110','\100','\44','\10',
- '\91','\49','\55','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115',
- '\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108','\32','\66','\32','\61',
- '\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\59','\10','\108','\111','\99',
- '\97','\108','\32','\67','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46',
- '\67','\59','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\44','\32','\99','\111','\110',
- '\115','\116','\97','\110','\116','\115','\32','\61','\32','\115','\116','\97','\99','\107','\44','\32','\99','\111','\110',
- '\115','\116','\97','\110','\116','\115','\59','\10','\66','\32','\61','\32','\66','\32','\62','\32','\50','\53','\53','\32',
- '\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\66','\45','\50','\53','\54',
- '\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91','\66','\93','\59',
- '\10','\67','\32','\61','\32','\67','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110',
- '\115','\116','\97','\110','\116','\115','\91','\67','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32',
- '\111','\114','\32','\115','\116','\97','\99','\107','\91','\67','\93','\59','\10','\115','\116','\97','\99','\107','\91',
- '\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\32','\61','\32','\66','\32',
- '\94','\32','\67','\59','\9','\9','\10','\101','\110','\100','\44','\10','\91','\49','\56','\93','\32','\61','\32','\102',
- '\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\41','\10','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\46','\65','\93','\32','\61','\32','\45','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114',
- '\117','\99','\116','\105','\111','\110','\46','\66','\93','\10','\101','\110','\100','\44','\10','\91','\49','\57','\93',
- '\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\41','\10','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\46','\65','\93','\32','\61','\32','\110','\111','\116','\32','\115','\116','\97','\99',
- '\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\93','\10','\101','\110',
- '\100','\44','\10','\91','\50','\48','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\40',
- '\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\115','\116','\97','\99','\107',
- '\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\32','\61','\32','\35',
- '\115','\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46',
- '\66','\93','\10','\101','\110','\100','\44','\10','\91','\50','\49','\93','\32','\61','\32','\102','\117','\110','\99','\116',
- '\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108',
- '\111','\99','\97','\108','\32','\66','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\46','\66','\10','\108','\111','\99','\97','\108','\32','\114','\101','\115','\117','\108','\116','\32','\61','\32',
- '\115','\116','\97','\99','\107','\91','\66','\93','\10','\102','\111','\114','\32','\105','\32','\61','\32','\66','\43',
- '\49','\44','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\67','\32','\100','\111',
- '\10','\114','\101','\115','\117','\108','\116','\32','\61','\32','\114','\101','\115','\117','\108','\116','\32','\46','\46',
- '\32','\115','\116','\97','\99','\107','\91','\105','\93','\32','\10','\101','\110','\100','\10','\115','\116','\97','\99',
- '\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\32','\61','\32',
- '\114','\101','\115','\117','\108','\116','\10','\101','\110','\100','\44','\10','\91','\50','\50','\93','\32','\61','\32',
- '\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105',
- '\111','\110','\41','\10','\73','\80','\32','\61','\32','\73','\80','\32','\43','\32','\105','\110','\115','\116','\114',
- '\117','\99','\116','\105','\111','\110','\46','\115','\66','\120','\10','\101','\110','\100','\44','\10','\91','\50','\51',
- '\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108','\32','\65','\32','\61','\32','\105','\110',
- '\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\10','\108','\111','\99','\97','\108','\32','\66',
- '\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\10','\108','\111',
- '\99','\97','\108','\32','\67','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\67','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\44','\32','\99','\111','\110',
- '\115','\116','\97','\110','\116','\115','\32','\61','\32','\115','\116','\97','\99','\107','\44','\32','\99','\111','\110',
- '\115','\116','\97','\110','\116','\115','\10','\65','\32','\61','\32','\65','\32','\126','\61','\32','\48','\10','\66','\32',
- '\61','\32','\66','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97',
- '\110','\116','\115','\91','\66','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32',
- '\115','\116','\97','\99','\107','\91','\66','\93','\10','\67','\32','\61','\32','\67','\32','\62','\32','\50','\53','\53',
- '\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\67','\45','\50','\53',
- '\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91','\67','\93',
- '\10','\105','\102','\32','\40','\66','\32','\61','\61','\32','\67','\41','\32','\126','\61','\32','\65','\32','\116','\104',
- '\101','\110','\10','\73','\80','\32','\61','\32','\73','\80','\32','\43','\32','\49','\10','\101','\110','\100','\10','\101',
- '\110','\100','\44','\10','\91','\50','\52','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110',
- '\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108',
- '\32','\65','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\10',
- '\108','\111','\99','\97','\108','\32','\66','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105',
- '\111','\110','\46','\66','\10','\108','\111','\99','\97','\108','\32','\67','\32','\61','\32','\105','\110','\115','\116',
- '\114','\117','\99','\116','\105','\111','\110','\46','\67','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97',
- '\99','\107','\44','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\32','\61','\32','\115','\116','\97',
- '\99','\107','\44','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\10','\65','\32','\61','\32','\65',
- '\32','\126','\61','\32','\48','\10','\66','\32','\61','\32','\66','\32','\62','\32','\50','\53','\53','\32','\97','\110',
- '\100','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\66','\45','\50','\53','\54','\93','\46',
- '\100','\97','\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91','\66','\93','\10','\67','\32',
- '\61','\32','\67','\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97',
- '\110','\116','\115','\91','\67','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32',
- '\115','\116','\97','\99','\107','\91','\67','\93','\10','\105','\102','\32','\40','\66','\32','\60','\32','\67','\41','\32',
- '\126','\61','\32','\65','\32','\116','\104','\101','\110','\10','\73','\80','\32','\61','\32','\73','\80','\32','\43','\32',
- '\49','\10','\101','\110','\100','\9','\9','\10','\101','\110','\100','\44','\10','\91','\50','\53','\93','\32','\61','\32',
- '\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105',
- '\111','\110','\41','\10','\108','\111','\99','\97','\108','\32','\65','\32','\61','\32','\105','\110','\115','\116','\114',
- '\117','\99','\116','\105','\111','\110','\46','\65','\10','\108','\111','\99','\97','\108','\32','\66','\32','\61','\32',
- '\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\10','\108','\111','\99','\97','\108',
- '\32','\67','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\67','\10',
- '\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\44','\32','\99','\111','\110','\115','\116','\97',
- '\110','\116','\115','\32','\61','\32','\115','\116','\97','\99','\107','\44','\32','\99','\111','\110','\115','\116','\97',
- '\110','\116','\115','\10','\65','\32','\61','\32','\65','\32','\126','\61','\32','\48','\10','\66','\32','\61','\32','\66',
- '\32','\62','\32','\50','\53','\53','\32','\97','\110','\100','\32','\99','\111','\110','\115','\116','\97','\110','\116',
- '\115','\91','\66','\45','\50','\53','\54','\93','\46','\100','\97','\116','\97','\32','\111','\114','\32','\115','\116',
- '\97','\99','\107','\91','\66','\93','\10','\67','\32','\61','\32','\67','\32','\62','\32','\50','\53','\53','\32','\97',
- '\110','\100','\32','\99','\111','\110','\115','\116','\97','\110','\116','\115','\91','\67','\45','\50','\53','\54','\93',
- '\46','\100','\97','\116','\97','\32','\111','\114','\32','\115','\116','\97','\99','\107','\91','\67','\93','\10','\105',
- '\102','\32','\40','\66','\32','\60','\61','\32','\67','\41','\32','\126','\61','\32','\65','\32','\116','\104','\101','\110',
- '\10','\73','\80','\32','\61','\32','\73','\80','\32','\43','\32','\49','\10','\101','\110','\100','\9','\9','\10','\101',
- '\110','\100','\44','\10','\91','\50','\54','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110',
- '\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\105','\102','\32','\115',
- '\116','\97','\99','\107','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93',
- '\32','\61','\61','\32','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\67','\32',
- '\126','\61','\32','\48','\41','\32','\116','\104','\101','\110','\10','\73','\80','\32','\61','\32','\73','\80','\32','\43',
- '\32','\49','\10','\101','\110','\100','\10','\101','\110','\100','\44','\10','\91','\50','\55','\93','\32','\61','\32','\102',
- '\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\41','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\32','\61','\32','\115','\116',
- '\97','\99','\107','\10','\108','\111','\99','\97','\108','\32','\66','\32','\61','\32','\115','\116','\97','\99','\107',
- '\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\93','\10','\105','\102','\32',
- '\66','\32','\61','\61','\32','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\67',
- '\32','\126','\61','\32','\48','\41','\32','\116','\104','\101','\110','\10','\73','\80','\32','\61','\32','\73','\80','\32',
- '\43','\32','\49','\10','\101','\108','\115','\101','\10','\115','\116','\97','\99','\107','\91','\105','\110','\115','\116',
- '\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\32','\61','\32','\66','\10','\101','\110','\100','\10',
- '\101','\110','\100','\44','\10','\91','\50','\56','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111',
- '\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111','\99',
- '\97','\108','\32','\65','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46',
- '\65','\59','\10','\108','\111','\99','\97','\108','\32','\66','\32','\61','\32','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\46','\66','\59','\10','\108','\111','\99','\97','\108','\32','\67','\32','\61','\32',
- '\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\67','\59','\10','\108','\111','\99','\97',
- '\108','\32','\115','\116','\97','\99','\107','\32','\61','\32','\115','\116','\97','\99','\107','\59','\10','\108','\111',
- '\99','\97','\108','\32','\97','\114','\103','\115','\44','\32','\114','\101','\115','\117','\108','\116','\115','\59','\10',
- '\108','\111','\99','\97','\108','\32','\108','\105','\109','\105','\116','\44','\32','\108','\111','\111','\112','\10','\97',
- '\114','\103','\115','\32','\61','\32','\123','\125','\59','\10','\105','\102','\32','\66','\32','\126','\61','\32','\49',
- '\32','\116','\104','\101','\110','\10','\105','\102','\32','\66','\32','\126','\61','\32','\48','\32','\116','\104','\101',
- '\110','\10','\108','\105','\109','\105','\116','\32','\61','\32','\65','\43','\66','\45','\49','\59','\10','\101','\108',
- '\115','\101','\10','\108','\105','\109','\105','\116','\32','\61','\32','\116','\111','\112','\10','\101','\110','\100',
- '\10','\108','\111','\111','\112','\32','\61','\32','\48','\10','\102','\111','\114','\32','\105','\32','\61','\32','\65',
- '\43','\49','\44','\32','\108','\105','\109','\105','\116','\32','\100','\111','\10','\108','\111','\111','\112','\32','\61',
- '\32','\108','\111','\111','\112','\32','\43','\32','\49','\10','\97','\114','\103','\115','\91','\108','\111','\111','\112',
- '\93','\32','\61','\32','\115','\116','\97','\99','\107','\91','\105','\93','\59','\10','\101','\110','\100','\10','\108',
- '\105','\109','\105','\116','\44','\32','\114','\101','\115','\117','\108','\116','\115','\32','\61','\32','\104','\97','\110',
- '\100','\108','\101','\95','\114','\101','\116','\117','\114','\110','\40','\115','\116','\97','\99','\107','\91','\65','\93',
- '\40','\117','\110','\112','\97','\99','\107','\40','\97','\114','\103','\115','\44','\32','\49','\44','\32','\108','\105',
- '\109','\105','\116','\45','\65','\41','\41','\41','\10','\101','\108','\115','\101','\10','\108','\105','\109','\105','\116',
- '\44','\32','\114','\101','\115','\117','\108','\116','\115','\32','\61','\32','\104','\97','\110','\100','\108','\101','\95',
- '\114','\101','\116','\117','\114','\110','\40','\115','\116','\97','\99','\107','\91','\65','\93','\40','\41','\41','\10',
- '\101','\110','\100','\10','\116','\111','\112','\32','\61','\32','\65','\32','\45','\32','\49','\10','\105','\102','\32',
- '\67','\32','\126','\61','\32','\49','\32','\116','\104','\101','\110','\10','\105','\102','\32','\67','\32','\126','\61',
- '\32','\48','\32','\116','\104','\101','\110','\10','\108','\105','\109','\105','\116','\32','\61','\32','\65','\43','\67',
- '\45','\50','\59','\10','\101','\108','\115','\101','\10','\108','\105','\109','\105','\116','\32','\61','\32','\108','\105',
- '\109','\105','\116','\43','\65','\10','\101','\110','\100','\10','\108','\111','\111','\112','\32','\61','\32','\48','\59',
- '\10','\102','\111','\114','\32','\105','\32','\61','\32','\65','\44','\32','\108','\105','\109','\105','\116','\32','\100',
- '\111','\10','\108','\111','\111','\112','\32','\61','\32','\108','\111','\111','\112','\32','\43','\32','\49','\59','\10',
- '\115','\116','\97','\99','\107','\91','\105','\93','\32','\61','\32','\114','\101','\115','\117','\108','\116','\115','\91',
- '\108','\111','\111','\112','\93','\59','\10','\101','\110','\100','\10','\101','\110','\100','\10','\101','\110','\100',
- '\44','\10','\91','\50','\57','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\32','\40',
- '\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108',
- '\32','\65','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\59',
- '\10','\108','\111','\99','\97','\108','\32','\66','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116',
- '\105','\111','\110','\46','\66','\59','\10','\108','\111','\99','\97','\108','\32','\67','\32','\61','\32','\105','\110',
- '\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\67','\59','\10','\108','\111','\99','\97','\108','\32',
- '\115','\116','\97','\99','\107','\32','\61','\32','\115','\116','\97','\99','\107','\59','\10','\108','\111','\99','\97',
- '\108','\32','\97','\114','\103','\115','\44','\32','\114','\101','\115','\117','\108','\116','\115','\59','\10','\108','\111',
- '\99','\97','\108','\32','\116','\111','\112','\44','\32','\108','\105','\109','\105','\116','\44','\32','\108','\111','\111',
- '\112','\32','\61','\32','\116','\111','\112','\10','\97','\114','\103','\115','\32','\61','\32','\123','\125','\59','\10',
- '\105','\102','\32','\66','\32','\126','\61','\32','\49','\32','\116','\104','\101','\110','\10','\105','\102','\32','\66',
- '\32','\126','\61','\32','\48','\32','\116','\104','\101','\110','\10','\108','\105','\109','\105','\116','\32','\61','\32',
- '\65','\43','\66','\45','\49','\59','\10','\101','\108','\115','\101','\10','\108','\105','\109','\105','\116','\32','\61',
- '\32','\116','\111','\112','\10','\101','\110','\100','\10','\108','\111','\111','\112','\32','\61','\32','\48','\10','\102',
- '\111','\114','\32','\105','\32','\61','\32','\65','\43','\49','\44','\32','\108','\105','\109','\105','\116','\32','\100',
- '\111','\10','\108','\111','\111','\112','\32','\61','\32','\108','\111','\111','\112','\32','\43','\32','\49','\10','\97',
- '\114','\103','\115','\91','\35','\97','\114','\103','\115','\43','\49','\93','\32','\61','\32','\115','\116','\97','\99',
- '\107','\91','\105','\93','\59','\10','\101','\110','\100','\10','\114','\101','\115','\117','\108','\116','\115','\32','\61',
- '\32','\123','\115','\116','\97','\99','\107','\91','\65','\93','\40','\117','\110','\112','\97','\99','\107','\40','\97',
- '\114','\103','\115','\44','\32','\49','\44','\32','\108','\105','\109','\105','\116','\45','\65','\41','\41','\125','\59',
- '\10','\101','\108','\115','\101','\10','\114','\101','\115','\117','\108','\116','\115','\32','\61','\32','\123','\115',
- '\116','\97','\99','\107','\91','\65','\93','\40','\41','\125','\59','\10','\101','\110','\100','\10','\114','\101','\116',
- '\117','\114','\110','\32','\116','\114','\117','\101','\44','\32','\114','\101','\115','\117','\108','\116','\115','\10',
- '\101','\110','\100','\44','\10','\91','\51','\48','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111',
- '\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111','\99',
- '\97','\108','\32','\65','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46',
- '\65','\59','\10','\108','\111','\99','\97','\108','\32','\66','\32','\61','\32','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\46','\66','\59','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99',
- '\107','\32','\61','\32','\115','\116','\97','\99','\107','\59','\10','\108','\111','\99','\97','\108','\32','\108','\105',
- '\109','\105','\116','\59','\10','\108','\111','\99','\97','\108','\32','\108','\111','\111','\112','\44','\32','\111','\117',
- '\116','\112','\117','\116','\59','\10','\105','\102','\32','\66','\32','\61','\61','\32','\49','\32','\116','\104','\101',
- '\110','\10','\114','\101','\116','\117','\114','\110','\32','\116','\114','\117','\101','\59','\10','\101','\110','\100',
- '\10','\105','\102','\32','\66','\32','\61','\61','\32','\48','\32','\116','\104','\101','\110','\10','\108','\105','\109',
- '\105','\116','\32','\61','\32','\116','\111','\112','\10','\101','\108','\115','\101','\10','\108','\105','\109','\105',
- '\116','\32','\61','\32','\65','\32','\43','\32','\66','\32','\45','\32','\50','\59','\10','\101','\110','\100','\10','\111',
- '\117','\116','\112','\117','\116','\32','\61','\32','\123','\125','\59','\10','\108','\111','\99','\97','\108','\32','\108',
- '\111','\111','\112','\32','\61','\32','\48','\10','\102','\111','\114','\32','\105','\32','\61','\32','\65','\44','\32',
- '\108','\105','\109','\105','\116','\32','\100','\111','\10','\108','\111','\111','\112','\32','\61','\32','\108','\111',
- '\111','\112','\32','\43','\32','\49','\10','\111','\117','\116','\112','\117','\116','\91','\108','\111','\111','\112','\93',
- '\32','\61','\32','\115','\116','\97','\99','\107','\91','\105','\93','\59','\10','\101','\110','\100','\10','\114','\101',
- '\116','\117','\114','\110','\32','\116','\114','\117','\101','\44','\32','\111','\117','\116','\112','\117','\116','\59',
- '\10','\101','\110','\100','\44','\10','\91','\51','\49','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105',
- '\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111',
- '\99','\97','\108','\32','\65','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\65','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\32','\61','\32','\115','\116',
- '\97','\99','\107','\10','\108','\111','\99','\97','\108','\32','\115','\116','\101','\112','\32','\61','\32','\115','\116',
- '\97','\99','\107','\91','\65','\43','\50','\93','\10','\108','\111','\99','\97','\108','\32','\105','\110','\100','\101',
- '\120','\32','\61','\32','\115','\116','\97','\99','\107','\91','\65','\93','\32','\43','\32','\115','\116','\101','\112',
- '\32','\10','\115','\116','\97','\99','\107','\91','\65','\93','\32','\61','\32','\105','\110','\100','\101','\120','\10',
- '\105','\102','\32','\115','\116','\101','\112','\32','\62','\32','\48','\32','\116','\104','\101','\110','\10','\105','\102',
- '\32','\105','\110','\100','\101','\120','\32','\60','\61','\32','\115','\116','\97','\99','\107','\91','\65','\43','\49',
- '\93','\32','\116','\104','\101','\110','\10','\73','\80','\32','\61','\32','\73','\80','\32','\43','\32','\105','\110','\115',
- '\116','\114','\117','\99','\116','\105','\111','\110','\46','\115','\66','\120','\10','\115','\116','\97','\99','\107','\91',
- '\65','\43','\51','\93','\32','\61','\32','\105','\110','\100','\101','\120','\10','\101','\110','\100','\10','\101','\108',
- '\115','\101','\10','\105','\102','\32','\105','\110','\100','\101','\120','\32','\62','\61','\32','\115','\116','\97','\99',
- '\107','\91','\65','\43','\49','\93','\32','\116','\104','\101','\110','\10','\73','\80','\32','\61','\32','\73','\80','\32',
- '\43','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\115','\66','\120','\10','\115',
- '\116','\97','\99','\107','\91','\65','\43','\51','\93','\32','\61','\32','\105','\110','\100','\101','\120','\10','\101',
- '\110','\100','\10','\101','\110','\100','\10','\101','\110','\100','\44','\10','\91','\51','\50','\93','\32','\61','\32',
- '\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105',
- '\111','\110','\41','\10','\108','\111','\99','\97','\108','\32','\65','\32','\61','\32','\105','\110','\115','\116','\114',
- '\117','\99','\116','\105','\111','\110','\46','\65','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99',
- '\107','\32','\61','\32','\115','\116','\97','\99','\107','\10','\115','\116','\97','\99','\107','\91','\65','\93','\32',
- '\61','\32','\115','\116','\97','\99','\107','\91','\65','\93','\32','\45','\32','\115','\116','\97','\99','\107','\91','\65',
- '\43','\50','\93','\10','\73','\80','\32','\61','\32','\73','\80','\32','\43','\32','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\46','\115','\66','\120','\32','\10','\101','\110','\100','\44','\10','\91','\51','\51',
- '\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117',
- '\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108','\32','\65','\32','\61','\32','\105','\110',
- '\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\10','\108','\111','\99','\97','\108','\32','\66',
- '\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\10','\108','\111',
- '\99','\97','\108','\32','\67','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\46','\67','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\32','\61','\32','\115','\116',
- '\97','\99','\107','\10','\108','\111','\99','\97','\108','\32','\111','\102','\102','\115','\101','\116','\32','\61','\32',
- '\65','\43','\50','\10','\108','\111','\99','\97','\108','\32','\114','\101','\115','\117','\108','\116','\32','\61','\32',
- '\123','\115','\116','\97','\99','\107','\91','\65','\93','\40','\115','\116','\97','\99','\107','\91','\65','\43','\49',
- '\93','\44','\32','\115','\116','\97','\99','\107','\91','\65','\43','\50','\93','\41','\125','\10','\102','\111','\114',
- '\32','\105','\32','\61','\32','\49','\44','\32','\67','\32','\100','\111','\10','\115','\116','\97','\99','\107','\91','\111',
- '\102','\102','\115','\101','\116','\43','\105','\93','\32','\61','\32','\114','\101','\115','\117','\108','\116','\91','\105',
- '\93','\10','\101','\110','\100','\10','\105','\102','\32','\115','\116','\97','\99','\107','\91','\65','\43','\51','\93',
- '\32','\126','\61','\32','\110','\105','\108','\32','\116','\104','\101','\110','\10','\115','\116','\97','\99','\107','\91',
- '\65','\43','\50','\93','\32','\61','\32','\115','\116','\97','\99','\107','\91','\65','\43','\51','\93','\10','\101','\108',
- '\115','\101','\10','\73','\80','\32','\61','\32','\73','\80','\32','\43','\32','\49','\10','\101','\110','\100','\10','\101',
- '\110','\100','\44','\10','\91','\51','\52','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110',
- '\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108','\111','\99','\97','\108',
- '\32','\65','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\10',
- '\108','\111','\99','\97','\108','\32','\66','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105',
- '\111','\110','\46','\66','\10','\108','\111','\99','\97','\108','\32','\67','\32','\61','\32','\105','\110','\115','\116',
- '\114','\117','\99','\116','\105','\111','\110','\46','\67','\10','\108','\111','\99','\97','\108','\32','\115','\116','\97',
- '\99','\107','\32','\61','\32','\115','\116','\97','\99','\107','\10','\105','\102','\32','\67','\32','\61','\61','\32','\48',
- '\32','\116','\104','\101','\110','\10','\101','\114','\114','\111','\114','\40','\34','\78','\89','\73','\58','\32','\101',
- '\120','\116','\101','\110','\100','\101','\100','\32','\83','\69','\84','\76','\73','\83','\84','\34','\41','\10','\101',
- '\108','\115','\101','\10','\108','\111','\99','\97','\108','\32','\111','\102','\102','\115','\101','\116','\32','\61','\32',
- '\40','\67','\32','\45','\32','\49','\41','\32','\42','\32','\53','\48','\10','\108','\111','\99','\97','\108','\32','\116',
- '\32','\61','\32','\115','\116','\97','\99','\107','\91','\65','\93','\10','\105','\102','\32','\66','\32','\61','\61','\32',
- '\48','\32','\116','\104','\101','\110','\10','\66','\32','\61','\32','\116','\111','\112','\10','\101','\110','\100','\10',
- '\102','\111','\114','\32','\105','\32','\61','\32','\49','\44','\32','\66','\32','\100','\111','\10','\116','\91','\111',
- '\102','\102','\115','\101','\116','\43','\105','\93','\32','\61','\32','\115','\116','\97','\99','\107','\91','\65','\43',
- '\105','\93','\9','\10','\101','\110','\100','\9','\9','\9','\9','\10','\101','\110','\100','\10','\101','\110','\100','\44',
- '\10','\91','\51','\53','\93','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\40','\105','\110',
- '\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\105','\111','\46','\115','\116','\100','\101',
- '\114','\114','\58','\119','\114','\105','\116','\101','\40','\34','\78','\89','\73','\58','\32','\67','\76','\79','\83',
- '\69','\34','\41','\10','\105','\111','\46','\115','\116','\100','\101','\114','\114','\58','\102','\108','\117','\115','\104',
- '\40','\41','\10','\101','\110','\100','\44','\10','\91','\51','\54','\93','\32','\61','\32','\102','\117','\110','\99','\116',
- '\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41','\10','\108',
- '\111','\99','\97','\108','\32','\112','\114','\111','\116','\111','\32','\61','\32','\112','\114','\111','\116','\111','\116',
- '\121','\112','\101','\115','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\66',
- '\120','\93','\10','\108','\111','\99','\97','\108','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\115','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\115','\10',
- '\108','\111','\99','\97','\108','\32','\115','\116','\97','\99','\107','\32','\61','\32','\115','\116','\97','\99','\107',
- '\10','\108','\111','\99','\97','\108','\32','\105','\110','\100','\105','\99','\101','\115','\32','\61','\32','\123','\125',
- '\10','\108','\111','\99','\97','\108','\32','\110','\101','\119','\95','\117','\112','\118','\97','\108','\115','\32','\61',
- '\32','\115','\101','\116','\109','\101','\116','\97','\116','\97','\98','\108','\101','\40','\123','\125','\44','\10','\123',
- '\10','\95','\95','\105','\110','\100','\101','\120','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110',
- '\40','\116','\44','\32','\107','\41','\10','\108','\111','\99','\97','\108','\32','\117','\112','\118','\97','\108','\32',
- '\61','\32','\105','\110','\100','\105','\99','\101','\115','\91','\107','\93','\10','\114','\101','\116','\117','\114','\110',
- '\32','\117','\112','\118','\97','\108','\46','\115','\101','\103','\109','\101','\110','\116','\91','\117','\112','\118',
- '\97','\108','\46','\111','\102','\102','\115','\101','\116','\93','\10','\101','\110','\100','\44','\10','\95','\95','\110',
- '\101','\119','\105','\110','\100','\101','\120','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110',
- '\40','\116','\44','\32','\107','\44','\32','\118','\41','\10','\108','\111','\99','\97','\108','\32','\117','\112','\118',
- '\97','\108','\32','\61','\32','\105','\110','\100','\105','\99','\101','\115','\91','\107','\93','\10','\117','\112','\118',
- '\97','\108','\46','\115','\101','\103','\109','\101','\110','\116','\91','\117','\112','\118','\97','\108','\46','\111',
- '\102','\102','\115','\101','\116','\93','\32','\61','\32','\118','\10','\101','\110','\100','\10','\125','\10','\41','\10',
- '\102','\111','\114','\32','\105','\32','\61','\32','\49','\44','\32','\112','\114','\111','\116','\111','\46','\117','\112',
- '\118','\97','\108','\117','\101','\115','\32','\100','\111','\10','\108','\111','\99','\97','\108','\32','\109','\111','\118',
- '\101','\109','\101','\110','\116','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111',
- '\110','\115','\91','\73','\80','\93','\10','\105','\102','\32','\109','\111','\118','\101','\109','\101','\110','\116','\46',
- '\111','\112','\99','\111','\100','\101','\32','\61','\61','\32','\48','\32','\116','\104','\101','\110','\10','\105','\110',
- '\100','\105','\99','\101','\115','\91','\105','\45','\49','\93','\32','\61','\32','\123','\115','\101','\103','\109','\101',
- '\110','\116','\32','\61','\32','\115','\116','\97','\99','\107','\44','\32','\111','\102','\102','\115','\101','\116','\32',
- '\61','\32','\109','\111','\118','\101','\109','\101','\110','\116','\46','\66','\125','\10','\101','\108','\115','\101',
- '\105','\102','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\115','\91','\73','\80',
- '\93','\46','\111','\112','\99','\111','\100','\101','\32','\61','\61','\32','\52','\32','\116','\104','\101','\110','\10',
- '\105','\110','\100','\105','\99','\101','\115','\91','\105','\45','\49','\93','\32','\61','\32','\123','\115','\101','\103',
- '\109','\101','\110','\116','\32','\61','\32','\117','\112','\118','\97','\108','\117','\101','\115','\44','\32','\111','\102',
- '\102','\115','\101','\116','\32','\61','\32','\109','\111','\118','\101','\109','\101','\110','\116','\46','\66','\125',
- '\10','\101','\110','\100','\10','\73','\80','\32','\61','\32','\73','\80','\32','\43','\32','\49','\10','\101','\110','\100',
- '\10','\108','\111','\99','\97','\108','\32','\95','\44','\32','\102','\117','\110','\99','\32','\61','\32','\99','\114',
- '\101','\97','\116','\101','\95','\119','\114','\97','\112','\112','\101','\114','\40','\112','\114','\111','\116','\111',
- '\44','\32','\110','\101','\119','\95','\117','\112','\118','\97','\108','\115','\41','\10','\115','\116','\97','\99','\107',
- '\91','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\46','\65','\93','\32','\61','\32','\102',
- '\117','\110','\99','\10','\101','\110','\100','\44','\10','\91','\51','\55','\93','\32','\61','\32','\102','\117','\110',
- '\99','\116','\105','\111','\110','\40','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\41',
- '\10','\108','\111','\99','\97','\108','\32','\65','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116',
- '\105','\111','\110','\46','\65','\10','\108','\111','\99','\97','\108','\32','\66','\32','\61','\32','\105','\110','\115',
- '\116','\114','\117','\99','\116','\105','\111','\110','\46','\66','\10','\108','\111','\99','\97','\108','\32','\115','\116',
- '\97','\99','\107','\44','\32','\118','\97','\114','\97','\114','\103','\32','\61','\32','\115','\116','\97','\99','\107',
- '\44','\32','\118','\97','\114','\97','\114','\103','\10','\10','\102','\111','\114','\32','\105','\32','\61','\32','\65',
- '\44','\32','\65','\32','\43','\32','\40','\66','\32','\62','\32','\48','\32','\97','\110','\100','\32','\66','\32','\45',
- '\32','\49','\32','\111','\114','\32','\118','\97','\114','\97','\114','\103','\95','\115','\105','\122','\101','\41','\32',
- '\100','\111','\10','\115','\116','\97','\99','\107','\91','\105','\93','\32','\61','\32','\118','\97','\114','\97','\114',
- '\103','\91','\105','\32','\45','\32','\65','\93','\10','\101','\110','\100','\10','\101','\110','\100','\44','\10','\125',
- '\10','\108','\111','\99','\97','\108','\32','\102','\117','\110','\99','\116','\105','\111','\110','\32','\108','\111','\111',
- '\112','\40','\41','\10','\108','\111','\99','\97','\108','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105',
- '\111','\110','\115','\32','\61','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\115',
- '\10','\108','\111','\99','\97','\108','\32','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110',
- '\44','\32','\97','\44','\32','\98','\10','\119','\104','\105','\108','\101','\32','\116','\114','\117','\101','\32','\100',
- '\111','\10','\105','\110','\115','\116','\114','\117','\99','\116','\105','\111','\110','\32','\61','\32','\105','\110',
- '\115','\116','\114','\117','\99','\116','\105','\111','\110','\115','\91','\73','\80','\93','\59','\10','\73','\80','\32',
- '\61','\32','\73','\80','\32','\43','\32','\49','\10','\97','\44','\32','\98','\32','\61','\32','\111','\112','\99','\111',
- '\100','\101','\95','\102','\117','\110','\99','\115','\91','\105','\110','\115','\116','\114','\117','\99','\116','\105',
- '\111','\110','\46','\111','\112','\99','\111','\100','\101','\93','\40','\105','\110','\115','\116','\114','\117','\99',
- '\116','\105','\111','\110','\41','\59','\10','\105','\102','\32','\97','\32','\116','\104','\101','\110','\10','\114','\101',
- '\116','\117','\114','\110','\32','\98','\59','\10','\101','\110','\100','\10','\101','\110','\100','\10','\101','\110','\100',
- '\10','\108','\111','\99','\97','\108','\32','\100','\101','\98','\117','\103','\103','\105','\110','\103','\32','\61','\32',
- '\123','\10','\103','\101','\116','\95','\115','\116','\97','\99','\107','\32','\61','\32','\102','\117','\110','\99','\116',
- '\105','\111','\110','\40','\41','\10','\114','\101','\116','\117','\114','\110','\32','\115','\116','\97','\99','\107','\59',
- '\10','\101','\110','\100','\59','\10','\103','\101','\116','\95','\73','\80','\32','\61','\32','\102','\117','\110','\99',
- '\116','\105','\111','\110','\40','\41','\10','\114','\101','\116','\117','\114','\110','\32','\73','\80','\59','\10','\101',
- '\110','\100','\10','\125','\59','\10','\108','\111','\99','\97','\108','\32','\102','\117','\110','\99','\116','\105','\111',
- '\110','\32','\102','\117','\110','\99','\40','\46','\46','\46','\41','\10','\108','\111','\99','\97','\108','\32','\108',
- '\111','\99','\97','\108','\95','\115','\116','\97','\99','\107','\32','\61','\32','\123','\125','\59','\10','\108','\111',
- '\99','\97','\108','\32','\103','\104','\111','\115','\116','\95','\115','\116','\97','\99','\107','\32','\61','\32','\123',
- '\125','\59','\10','\116','\111','\112','\32','\61','\32','\45','\49','\10','\115','\116','\97','\99','\107','\32','\61',
- '\32','\115','\101','\116','\109','\101','\116','\97','\116','\97','\98','\108','\101','\40','\108','\111','\99','\97','\108',
- '\95','\115','\116','\97','\99','\107','\44','\32','\123','\10','\95','\95','\105','\110','\100','\101','\120','\32','\61',
- '\32','\103','\104','\111','\115','\116','\95','\115','\116','\97','\99','\107','\59','\10','\95','\95','\110','\101','\119',
- '\105','\110','\100','\101','\120','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111','\110','\40','\116',
- '\44','\32','\107','\44','\32','\118','\41','\10','\105','\102','\32','\107','\32','\62','\32','\116','\111','\112','\32',
- '\97','\110','\100','\32','\118','\32','\116','\104','\101','\110','\10','\116','\111','\112','\32','\61','\32','\107','\10',
- '\101','\110','\100','\10','\103','\104','\111','\115','\116','\95','\115','\116','\97','\99','\107','\91','\107','\93','\32',
- '\61','\32','\118','\10','\101','\110','\100','\59','\10','\125','\41','\10','\108','\111','\99','\97','\108','\32','\97',
- '\114','\103','\115','\32','\61','\32','\123','\46','\46','\46','\125','\59','\9','\10','\118','\97','\114','\97','\114',
- '\103','\32','\61','\32','\123','\125','\10','\118','\97','\114','\97','\114','\103','\95','\115','\105','\122','\101','\32',
- '\61','\32','\115','\101','\108','\101','\99','\116','\40','\34','\35','\34','\44','\32','\46','\46','\46','\41','\32','\45',
- '\32','\49','\10','\102','\111','\114','\32','\105','\32','\61','\32','\48','\44','\32','\118','\97','\114','\97','\114',
- '\103','\95','\115','\105','\122','\101','\32','\100','\111','\10','\108','\111','\99','\97','\108','\95','\115','\116','\97',
- '\99','\107','\91','\105','\93','\32','\61','\32','\97','\114','\103','\115','\91','\105','\43','\49','\93','\59','\10','\118',
- '\97','\114','\97','\114','\103','\91','\105','\93','\32','\61','\32','\97','\114','\103','\115','\91','\105','\43','\49',
- '\93','\10','\101','\110','\100','\10','\101','\110','\118','\105','\114','\111','\110','\109','\101','\110','\116','\32',
- '\61','\32','\103','\101','\116','\102','\101','\110','\118','\40','\41','\59','\10','\73','\80','\32','\61','\32','\49',
- '\59','\10','\108','\111','\99','\97','\108','\32','\116','\104','\114','\101','\97','\100','\32','\61','\32','\99','\111',
- '\114','\111','\117','\116','\105','\110','\101','\46','\99','\114','\101','\97','\116','\101','\40','\108','\111','\111',
- '\112','\41','\10','\108','\111','\99','\97','\108','\32','\97','\44','\32','\98','\32','\61','\32','\99','\111','\114','\111',
- '\117','\116','\105','\110','\101','\46','\114','\101','\115','\117','\109','\101','\40','\116','\104','\114','\101','\97',
- '\100','\41','\10','\105','\102','\32','\97','\32','\116','\104','\101','\110','\10','\105','\102','\32','\98','\32','\116',
- '\104','\101','\110','\10','\114','\101','\116','\117','\114','\110','\32','\117','\110','\112','\97','\99','\107','\40',
- '\98','\41','\59','\10','\101','\110','\100','\10','\114','\101','\116','\117','\114','\110','\59','\10','\101','\108','\115',
- '\101','\10','\108','\111','\99','\97','\108','\32','\110','\97','\109','\101','\32','\61','\32','\99','\97','\99','\104',
- '\101','\46','\110','\97','\109','\101','\59','\10','\108','\111','\99','\97','\108','\32','\108','\105','\110','\101','\32',
- '\61','\32','\99','\97','\99','\104','\101','\46','\100','\101','\98','\117','\103','\46','\108','\105','\110','\101','\115',
- '\91','\73','\80','\93','\59','\10','\108','\111','\99','\97','\108','\32','\101','\114','\114','\32','\32','\61','\32','\98',
- '\58','\103','\115','\117','\98','\40','\34','\40','\46','\45','\58','\41','\34','\44','\32','\34','\34','\41','\59','\10',
- '\108','\111','\99','\97','\108','\32','\111','\117','\116','\112','\117','\116','\32','\61','\32','\34','\34','\59','\10',
- '\111','\117','\116','\112','\117','\116','\32','\61','\32','\111','\117','\116','\112','\117','\116','\32','\46','\46','\32',
- '\40','\110','\97','\109','\101','\32','\97','\110','\100','\32','\110','\97','\109','\101','\32','\46','\46','\32','\34',
- '\58','\34','\32','\111','\114','\32','\34','\34','\41','\59','\10','\111','\117','\116','\112','\117','\116','\32','\61',
- '\32','\111','\117','\116','\112','\117','\116','\32','\46','\46','\32','\40','\108','\105','\110','\101','\32','\97','\110',
- '\100','\32','\108','\105','\110','\101','\32','\46','\46','\32','\34','\58','\34','\32','\111','\114','\32','\34','\34',
- '\41','\59','\10','\111','\117','\116','\112','\117','\116','\32','\61','\32','\111','\117','\116','\112','\117','\116','\32',
- '\46','\46','\32','\98','\10','\101','\114','\114','\111','\114','\40','\111','\117','\116','\112','\117','\116','\44','\32',
- '\48','\41','\59','\10','\101','\110','\100','\10','\101','\110','\100','\10','\114','\101','\116','\117','\114','\110','\32',
- '\100','\101','\98','\117','\103','\103','\105','\110','\103','\44','\32','\102','\117','\110','\99','\59','\10','\101','\110',
- '\100','\10','\108','\111','\99','\97','\108','\32','\86','\77','\32','\61','\32','\123','\10','\108','\111','\97','\100',
- '\95','\98','\121','\116','\101','\99','\111','\100','\101','\32','\61','\32','\102','\117','\110','\99','\116','\105','\111',
- '\110','\40','\98','\121','\116','\101','\99','\111','\100','\101','\41','\10','\108','\111','\99','\97','\108','\32','\99',
- '\97','\99','\104','\101','\32','\61','\32','\100','\101','\99','\111','\100','\101','\95','\98','\121','\116','\101','\99',
- '\111','\100','\101','\40','\98','\121','\116','\101','\99','\111','\100','\101','\41','\59','\10','\108','\111','\99','\97',
- '\108','\32','\95','\44','\32','\102','\117','\110','\99','\32','\61','\32','\99','\114','\101','\97','\116','\101','\95',
- '\119','\114','\97','\112','\112','\101','\114','\40','\99','\97','\99','\104','\101','\41','\59','\10','\114','\101','\116',
- '\117','\114','\110','\32','\102','\117','\110','\99','\59','\10','\101','\110','\100','\59','\10','\117','\116','\105','\108',
- '\115','\32','\61','\32','\123','\10','\100','\101','\99','\111','\100','\101','\95','\98','\121','\116','\101','\99','\111',
- '\100','\101','\32','\61','\32','\100','\101','\99','\111','\100','\101','\95','\98','\121','\116','\101','\99','\111','\100',
- '\101','\59','\10','\99','\114','\101','\97','\116','\101','\95','\119','\114','\97','\112','\112','\101','\114','\32','\61',
- '\32','\99','\114','\101','\97','\116','\101','\95','\119','\114','\97','\112','\112','\101','\114','\59','\10','\100','\101',
- '\98','\117','\103','\95','\98','\121','\116','\101','\99','\111','\100','\101','\32','\61','\32','\102','\117','\110','\99',
- '\116','\105','\111','\110','\40','\98','\121','\116','\101','\99','\111','\100','\101','\41','\10','\108','\111','\99','\97',
- '\108','\32','\99','\97','\99','\104','\101','\32','\61','\32','\100','\101','\99','\111','\100','\101','\95','\98','\121',
- '\116','\101','\99','\111','\100','\101','\40','\98','\121','\116','\101','\99','\111','\100','\101','\41','\10','\114','\101',
- '\116','\117','\114','\110','\32','\99','\114','\101','\97','\116','\101','\95','\119','\114','\97','\112','\112','\101',
- '\114','\40','\99','\97','\99','\104','\101','\41','\59','\10','\101','\110','\100','\59','\10','\125','\59','\10','\125',
- '\10','\93','\93','\46','\46','\34','\86','\77','\46','\108','\111','\97','\100','\95','\98','\121','\116','\101','\99','\111',
- '\100','\101','\40','\116','\97','\98','\108','\101','\46','\99','\111','\110','\99','\97','\116','\40','\100','\97','\116',
- '\97','\44','\32','\91','\91','\93','\93','\41','\41','\40','\41','\34','\41','\10','\10','\112','\114','\105','\110','\116',
- '\40','\34','\92','\110','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45',
- '\45','\45','\45','\45','\32','\66','\79','\84','\84','\79','\77','\32','\79','\70','\32','\83','\67','\82','\73','\80','\84',
- '\32','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45','\45',
- '\34','\41','\10','\112','\114','\105','\110','\116','\40','\34','\92','\110','\89','\111','\117','\114','\32','\115','\99',
- '\114','\105','\112','\116','\32','\104','\97','\115','\32','\98','\101','\101','\110','\32','\101','\110','\99','\114','\121',
- '\112','\116','\101','\100','\46','\32','\84','\104','\101','\32','\114','\101','\115','\117','\108','\116','\32','\105',
- '\115','\32','\97','\98','\111','\118','\101','\46','\92','\110','\34','\41','\10','\10','\0','\1','\0','\0','\0','\21','\0',
- '\0','\0','\0','\0','\0','\2','\4','\0','\0','\0','\5','\0','\0','\0','\65','\64','\0','\0','\28','\64','\0','\1','\30','\0',
- '\128','\0','\2','\0','\0','\0','\4','\6','\0','\0','\0','\0','\0','\0','\0','\112','\114','\105','\110','\116','\0','\4',
- '\5','\0','\0','\0','\0','\0','\0','\0','\116','\101','\115','\116','\0','\0','\0','\0','\0','\4','\0','\0','\0','\13','\0',
- '\0','\0','\13','\0','\0','\0','\13','\0','\0','\0','\21','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0','\0'}
- local lua_opcode_types = {
- "ABC", "ABx", "ABC", "ABC",
- "ABC", "ABx", "ABC", "ABx",
- "ABC", "ABC", "ABC", "ABC",
- "ABC", "ABC", "ABC", "ABC",
- "ABC", "ABC", "ABC", "ABC",
- "ABC", "ABC", "AsBx", "ABC",
- "ABC", "ABC", "ABC", "ABC",
- "ABC", "ABC", "ABC", "AsBx",
- "AsBx", "ABC", "ABC", "ABC",
- "ABx", "ABC",
- }
- local lua_opcode_names = {
- "MOVE", "LOADK", "LOADBOOL", "LOADNIL",
- "GETUPVAL", "GETGLOBAL", "GETTABLE", "SETGLOBAL",
- "SETUPVAL", "SETTABLE", "NEWTABLE", "SELF",
- "ADD", "SUB", "MUL", "DIV",
- "MOD", "POW", "UNM", "NOT",
- "LEN", "CONCAT", "JMP", "EQ",
- "LT", "LE", "TEST", "TESTSET",
- "CALL", "TAILCALL", "RETURN", "FORLOOP",
- "FORPREP", "TFORLOOP", "SETLIST", "CLOSE",
- "CLOSURE", "VARARG"
- };
- local function get_bits(input, n, n2)
- if n2 then
- local total = 0
- local digitn = 0
- for i = n, n2 do
- total = total + 2^digitn*get_bits(input, i)
- digitn = digitn + 1
- end
- return total
- else
- local pn = 2^(n-1)
- return (input % (pn + pn) >= pn) and 1 or 0
- end
- end
- local function decode_bytecode(bytecode)
- local index = 1
- local big_endian = false
- local int_size;
- local size_t;
- local get_int, get_size_t;
- local get_int8, get_int32, get_int64, get_float64, get_string;
- do
- function get_int8()
- local a = bytecode:byte(index, index);
- index = index + 1
- return a
- end
- function get_int32()
- local a, b, c, d = bytecode:byte(index, index + 3);
- index = index + 4;
- return d*16777216 + c*65536 + b*256 + a
- end
- function get_int64()
- local a = get_int32();
- local b = get_int32();
- return b*4294967296 + a;
- end
- function get_float64()
- local a = get_int32()
- local b = get_int32()
- return (-2*get_bits(b, 32)+1)*(2^(get_bits(b, 21, 31)-1023))*
- ((get_bits(b, 1, 20)*(2^32) + a)/(2^52)+1)
- end
- function get_string(len)
- local str;
- if len then
- str = bytecode:sub(index, index + len - 1);
- index = index + len;
- else
- len = get_size_t();
- if len == 0 then return; end
- str = bytecode:sub(index, index + len - 1);
- index = index + len;
- end
- return str;
- end
- end
- local function decode_chunk()
- local chunk;
- local instructions = {};
- local constants = {};
- local prototypes = {};
- local debug = {
- lines = {};
- };
- chunk = {
- instructions = instructions;
- constants = constants;
- prototypes = prototypes;
- debug = debug;
- };
- local num;
- chunk.name = get_string();
- chunk.first_line = get_int();
- chunk.last_line = get_int();
- if chunk.name then chunk.name = chunk.name:sub(1, -2); end
- chunk.upvalues = get_int8();
- chunk.arguments = get_int8();
- chunk.varg = get_int8();
- chunk.stack = get_int8();
- do
- num = get_int();
- for i = 1, num do
- local instruction = {
- };
- local data = get_int32();
- local opcode = get_bits(data, 1, 6);
- local type = lua_opcode_types[opcode + 1];
- instruction.opcode = opcode;
- instruction.type = type;
- instruction.A = get_bits(data, 7, 14);
- if type == "ABC" then
- instruction.B = get_bits(data, 24, 32);
- instruction.C = get_bits(data, 15, 23);
- elseif type == "ABx" then
- instruction.Bx = get_bits(data, 15, 32);
- elseif type == "AsBx" then
- instruction.sBx = get_bits(data, 15, 32) - 131071;
- end
- instructions[i] = instruction;
- end
- end
- do
- num = get_int();
- for i = 1, num do
- local constant = {
- };
- local type = get_int8();
- constant.type = type;
- if type == 1 then
- constant.data = (get_int8() ~= 0);
- elseif type == 3 then
- constant.data = get_float64();
- elseif type == 4 then
- constant.data = get_string():sub(1, -2);
- end
- constants[i-1] = constant;
- end
- end
- do
- num = get_int();
- for i = 1, num do
- prototypes[i-1] = decode_chunk();
- end
- end
- do
- local data = debug.lines
- num = get_int();
- for i = 1, num do
- data[i] = get_int32();
- end
- num = get_int();
- for i = 1, num do
- get_string():sub(1, -2);
- get_int32();
- get_int32();
- end
- num = get_int();
- for i = 1, num do
- get_string();
- end
- end
- return chunk;
- end
- do
- assert(get_string(4) == "\27Lua", "Lua bytecode expected.");
- assert(get_int8() == 0x51, "Only Lua 5.1 is supported.");
- get_int8();
- big_endian = (get_int8() == 0);
- int_size = get_int8();
- size_t = get_int8();
- if int_size == 4 then
- get_int = get_int32;
- elseif int_size == 8 then
- get_int = get_int64;
- else
- error("Unsupported bytecode target platform");
- end
- if size_t == 4 then
- get_size_t = get_int32;
- elseif size_t == 8 then
- get_size_t = get_int64;
- else
- error("Unsupported bytecode target platform");
- end
- assert(get_string(3) == "\4\8\0",
- "Unsupported bytecode target platform");
- end
- return decode_chunk();
- end
- local function handle_return(...)
- local c = select("#", ...)
- local t = {...}
- return c, t
- end
- local function create_wrapper(cache, upvalues)
- local instructions = cache.instructions;
- local constants = cache.constants;
- local prototypes = cache.prototypes;
- local stack, top
- local environment
- local IP = 1;
- local vararg, vararg_size
- local opcode_funcs = {
- [0] = function(instruction)
- stack[instruction.A] = stack[instruction.B];
- end,
- [1] = function(instruction)
- stack[instruction.A] = constants[instruction.Bx].data;
- end,
- [2] = function(instruction)
- stack[instruction.A] = instruction.B ~= 0
- if instruction.C ~= 0 then
- IP = IP + 1
- end
- end,
- [3] = function(instruction)
- local stack = stack
- for i = instruction.A, instruction.B do
- stack[i] = nil
- end
- end,
- [4] = function(instruction)
- stack[instruction.A] = upvalues[instruction.B]
- end,
- [5] = function(instruction)
- local key = constants[instruction.Bx].data;
- stack[instruction.A] = environment[key];
- end,
- [6] = function(instruction)
- local C = instruction.C
- local stack = stack
- C = C > 255 and constants[C-256].data or stack[C]
- stack[instruction.A] = stack[instruction.B][C];
- end,
- [7] = function(instruction)
- local key = constants[instruction.Bx].data;
- environment[key] = stack[instruction.A];
- end,
- [8] = function (instruction)
- upvalues[instruction.B] = stack[instruction.A]
- end,
- [9] = function (instruction)
- local B = instruction.B;
- local C = instruction.C;
- local stack, constants = stack, constants;
- B = B > 255 and constants[B-256].data or stack[B];
- C = C > 255 and constants[C-256].data or stack[C];
- stack[instruction.A][B] = C
- end,
- [10] = function (instruction)
- stack[instruction.A] = {}
- end,
- [11] = function (instruction)
- local A = instruction.A
- local B = instruction.B
- local C = instruction.C
- local stack = stack
- B = stack[B]
- C = C > 255 and constants[C-256].data or stack[C]
- stack[A+1] = B
- stack[A] = B[C]
- end,
- [12] = function(instruction)
- local B = instruction.B;
- local C = instruction.C;
- local stack, constants = stack, constants;
- B = B > 255 and constants[B-256].data or stack[B];
- C = C > 255 and constants[C-256].data or stack[C];
- stack[instruction.A] = B+C;
- end,
- [13] = function(instruction)
- local B = instruction.B;
- local C = instruction.C;
- local stack, constants = stack, constants;
- B = B > 255 and constants[B-256].data or stack[B];
- C = C > 255 and constants[C-256].data or stack[C];
- stack[instruction.A] = B - C;
- end,
- [14] = function(instruction)
- local B = instruction.B;
- local C = instruction.C;
- local stack, constants = stack, constants;
- B = B > 255 and constants[B-256].data or stack[B];
- C = C > 255 and constants[C-256].data or stack[C];
- stack[instruction.A] = B * C;
- end,
- [15] = function(instruction)
- local B = instruction.B;
- local C = instruction.C;
- local stack, constants = stack, constants;
- B = B > 255 and constants[B-256].data or stack[B];
- C = C > 255 and constants[C-256].data or stack[C];
- stack[instruction.A] = B / C;
- end,
- [16] = function(instruction)
- local B = instruction.B;
- local C = instruction.C;
- local stack, constants = stack, constants;
- B = B > 255 and constants[B-256].data or stack[B];
- C = C > 255 and constants[C-256].data or stack[C];
- stack[instruction.A] = B % C;
- end,
- [17] = function(instruction)
- local B = instruction.B;
- local C = instruction.C;
- local stack, constants = stack, constants;
- B = B > 255 and constants[B-256].data or stack[B];
- C = C > 255 and constants[C-256].data or stack[C];
- stack[instruction.A] = B ^ C;
- end,
- [18] = function(instruction)
- stack[instruction.A] = -stack[instruction.B]
- end,
- [19] = function(instruction)
- stack[instruction.A] = not stack[instruction.B]
- end,
- [20] = function(instruction)
- stack[instruction.A] = #stack[instruction.B]
- end,
- [21] = function(instruction)
- local B = instruction.B
- local result = stack[B]
- for i = B+1, instruction.C do
- result = result .. stack[i]
- end
- stack[instruction.A] = result
- end,
- [22] = function(instruction)
- IP = IP + instruction.sBx
- end,
- [23] = function(instruction)
- local A = instruction.A
- local B = instruction.B
- local C = instruction.C
- local stack, constants = stack, constants
- A = A ~= 0
- B = B > 255 and constants[B-256].data or stack[B]
- C = C > 255 and constants[C-256].data or stack[C]
- if (B == C) ~= A then
- IP = IP + 1
- end
- end,
- [24] = function(instruction)
- local A = instruction.A
- local B = instruction.B
- local C = instruction.C
- local stack, constants = stack, constants
- A = A ~= 0
- B = B > 255 and constants[B-256].data or stack[B]
- C = C > 255 and constants[C-256].data or stack[C]
- if (B < C) ~= A then
- IP = IP + 1
- end
- end,
- [25] = function(instruction)
- local A = instruction.A
- local B = instruction.B
- local C = instruction.C
- local stack, constants = stack, constants
- A = A ~= 0
- B = B > 255 and constants[B-256].data or stack[B]
- C = C > 255 and constants[C-256].data or stack[C]
- if (B <= C) ~= A then
- IP = IP + 1
- end
- end,
- [26] = function(instruction)
- if stack[instruction.A] == (instruction.C ~= 0) then
- IP = IP + 1
- end
- end,
- [27] = function(instruction)
- local stack = stack
- local B = stack[instruction.B]
- if B == (instruction.C ~= 0) then
- IP = IP + 1
- else
- stack[instruction.A] = B
- end
- end,
- [28] = function(instruction)
- local A = instruction.A;
- local B = instruction.B;
- local C = instruction.C;
- local stack = stack;
- local args, results;
- local limit, loop
- args = {};
- if B ~= 1 then
- if B ~= 0 then
- limit = A+B-1;
- else
- limit = top
- end
- loop = 0
- for i = A+1, limit do
- loop = loop + 1
- args[loop] = stack[i];
- end
- limit, results = handle_return(stack[A](unpack(args, 1, limit-A)))
- else
- limit, results = handle_return(stack[A]())
- end
- top = A - 1
- if C ~= 1 then
- if C ~= 0 then
- limit = A+C-2;
- else
- limit = limit+A
- end
- loop = 0;
- for i = A, limit do
- loop = loop + 1;
- stack[i] = results[loop];
- end
- end
- end,
- [29] = function (instruction)
- local A = instruction.A;
- local B = instruction.B;
- local C = instruction.C;
- local stack = stack;
- local args, results;
- local top, limit, loop = top
- args = {};
- if B ~= 1 then
- if B ~= 0 then
- limit = A+B-1;
- else
- limit = top
- end
- loop = 0
- for i = A+1, limit do
- loop = loop + 1
- args[#args+1] = stack[i];
- end
- results = {stack[A](unpack(args, 1, limit-A))};
- else
- results = {stack[A]()};
- end
- return true, results
- end,
- [30] = function(instruction)
- local A = instruction.A;
- local B = instruction.B;
- local stack = stack;
- local limit;
- local loop, output;
- if B == 1 then
- return true;
- end
- if B == 0 then
- limit = top
- else
- limit = A + B - 2;
- end
- output = {};
- local loop = 0
- for i = A, limit do
- loop = loop + 1
- output[loop] = stack[i];
- end
- return true, output;
- end,
- [31] = function(instruction)
- local A = instruction.A
- local stack = stack
- local step = stack[A+2]
- local index = stack[A] + step
- stack[A] = index
- if step > 0 then
- if index <= stack[A+1] then
- IP = IP + instruction.sBx
- stack[A+3] = index
- end
- else
- if index >= stack[A+1] then
- IP = IP + instruction.sBx
- stack[A+3] = index
- end
- end
- end,
- [32] = function(instruction)
- local A = instruction.A
- local stack = stack
- stack[A] = stack[A] - stack[A+2]
- IP = IP + instruction.sBx
- end,
- [33] = function(instruction)
- local A = instruction.A
- local B = instruction.B
- local C = instruction.C
- local stack = stack
- local offset = A+2
- local result = {stack[A](stack[A+1], stack[A+2])}
- for i = 1, C do
- stack[offset+i] = result[i]
- end
- if stack[A+3] ~= nil then
- stack[A+2] = stack[A+3]
- else
- IP = IP + 1
- end
- end,
- [34] = function(instruction)
- local A = instruction.A
- local B = instruction.B
- local C = instruction.C
- local stack = stack
- if C == 0 then
- error("NYI: extended SETLIST")
- else
- local offset = (C - 1) * 50
- local t = stack[A]
- if B == 0 then
- B = top
- end
- for i = 1, B do
- t[offset+i] = stack[A+i]
- end
- end
- end,
- [35] = function(instruction)
- io.stderr:write("NYI: CLOSE")
- io.stderr:flush()
- end,
- [36] = function(instruction)
- local proto = prototypes[instruction.Bx]
- local instructions = instructions
- local stack = stack
- local indices = {}
- local new_upvals = setmetatable({},
- {
- __index = function(t, k)
- local upval = indices[k]
- return upval.segment[upval.offset]
- end,
- __newindex = function(t, k, v)
- local upval = indices[k]
- upval.segment[upval.offset] = v
- end
- }
- )
- for i = 1, proto.upvalues do
- local movement = instructions[IP]
- if movement.opcode == 0 then
- indices[i-1] = {segment = stack, offset = movement.B}
- elseif instructions[IP].opcode == 4 then
- indices[i-1] = {segment = upvalues, offset = movement.B}
- end
- IP = IP + 1
- end
- local _, func = create_wrapper(proto, new_upvals)
- stack[instruction.A] = func
- end,
- [37] = function(instruction)
- local A = instruction.A
- local B = instruction.B
- local stack, vararg = stack, vararg
- for i = A, A + (B > 0 and B - 1 or vararg_size) do
- stack[i] = vararg[i - A]
- end
- end,
- }
- local function loop()
- local instructions = instructions
- local instruction, a, b
- while true do
- instruction = instructions[IP];
- IP = IP + 1
- a, b = opcode_funcs[instruction.opcode](instruction);
- if a then
- return b;
- end
- end
- end
- local debugging = {
- get_stack = function()
- return stack;
- end;
- get_IP = function()
- return IP;
- end
- };
- local function func(...)
- local local_stack = {};
- local ghost_stack = {};
- top = -1
- stack = setmetatable(local_stack, {
- __index = ghost_stack;
- __newindex = function(t, k, v)
- if k > top and v then
- top = k
- end
- ghost_stack[k] = v
- end;
- })
- local args = {...};
- vararg = {}
- vararg_size = select("#", ...) - 1
- for i = 0, vararg_size do
- local_stack[i] = args[i+1];
- vararg[i] = args[i+1]
- end
- environment = getfenv();
- IP = 1;
- local thread = coroutine.create(loop)
- local a, b = coroutine.resume(thread)
- if a then
- if b then
- return unpack(b);
- end
- return;
- else
- local name = cache.name;
- local line = cache.debug.lines[IP];
- local err = b:gsub("(.-:)", "");
- local output = "";
- output = output .. (name and name .. ":" or "");
- output = output .. (line and line .. ":" or "");
- output = output .. b
- error(output, 0);
- end
- end
- return debugging, func;
- end
- local VM = {
- load_bytecode = function(bytecode)
- local cache = decode_bytecode(bytecode);
- local _, func = create_wrapper(cache);
- return func;
- end;
- utils = {
- decode_bytecode = decode_bytecode;
- create_wrapper = create_wrapper;
- debug_bytecode = function(bytecode)
- local cache = decode_bytecode(bytecode)
- return create_wrapper(cache);
- end;
- };
- }
- VM.load_bytecode(table.concat(data, [[]]))()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement