# Name: smd_if v0.73 # Type: Client side plugin # Generic multiple if condition tests # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6Njoic21kX2lmIjtzOjY6ImF1dGhvciI7czoxMToiU3RlZiBE YXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS8i O3M6NzoidmVyc2lvbiI7czo0OiIwLjczIjtzOjExOiJkZXNjcmlwdGlvbiI7czozNToiR2Vu ZXJpYyBtdWx0aXBsZSBpZiBjb25kaXRpb24gdGVzdHMiO3M6NDoiY29kZSI7czoxMDkwMzoi ZnVuY3Rpb24gc21kX2lmKCRhdHRzLCR0aGluZykgew0KCWdsb2JhbCAkdGhpc2FydGljbGUs ICRwcmV0ZXh0LCAkdGhpc2ZpbGUsICR0aGlzbGluaywgJHRoaXNpbWFnZSwgJHZhcmlhYmxl Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2ZpZWxkJyA9PiAnJywNCgkJJ29wZXJh dG9yJyA9PiAnJywNCgkJJ3ZhbHVlJyA9PiAnJywNCgkJJ2xvZ2ljJyA9PiAnYW5kJywNCgkJ J2Nhc2Vfc2Vuc2l0aXZlJyA9PiAwLA0KCQkncGFyYW1fZGVsaW0nID0+ICcsJywNCgkJJ21v ZF9kZWxpbScgPT4gJzonLA0KCQknbGlzdF9kZWxpbScgPT4gJy8nLA0KCQknZGVidWcnID0+ ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJLy8gU3BlY2lhbCBmaWVsZCBuYW1lcyB0aGF0IHJl ZmVyIHRvICRwcmV0ZXh0IG9yIGVsc2V3aGVyZSAtIGV2ZXJ5dGhpbmcgZWxzZSBpcyBhc3N1 bWVkIHRvDQoJLy8gZXhpc3QgaW4gJHRoaXNhcnRpY2xlIHNvIGN1c3RvbSBmaWVsZHMgY2Fu IGJlIHVzZWQNCgkkYWxsUHR4dCA9IGFycmF5KA0KCQkiaWQiID0+ICckcHJldGV4dFsiaWQi XScsDQoJCSJzZWN0aW9uIiA9PiAnJHByZXRleHRbInMiXScsDQoJCSJjYXRlZ29yeSIgPT4g JyRwcmV0ZXh0WyJjIl0nLA0KCQkicXVlcnkiID0+ICckcHJldGV4dFsicSJdJywNCgkJInBn IiA9PiAnJHByZXRleHRbInBnIl0nLA0KCQkibW9udGgiID0+ICckcHJldGV4dFsibW9udGgi XScsDQoJCSJhdXRob3IiID0+ICckcHJldGV4dFsiYXV0aG9yIl0nLA0KCQkic3RhdHVzIiA9 PiAnJHByZXRleHRbInN0YXR1cyJdJywNCgkJInBhZ2UiID0+ICckcHJldGV4dFsicGFnZSJd JywNCgkJIm5leHRfaWQiID0+ICckcHJldGV4dFsibmV4dF9pZCJdJywNCgkJIm5leHRfdGl0 bGUiID0+ICckcHJldGV4dFsibmV4dF90aXRsZSJdJywNCgkJIm5leHRfdXRpdGxlIiA9PiAn JHByZXRleHRbIm5leHRfdXRpdGxlIl0nLA0KCQkicHJldl9pZCIgPT4gJyRwcmV0ZXh0WyJw cmV2X2lkIl0nLA0KCQkicHJldl90aXRsZSIgPT4gJyRwcmV0ZXh0WyJwcmV2X3RpdGxlIl0n LA0KCQkicHJldl91dGl0bGUiID0+ICckcHJldGV4dFsicHJldl91dGl0bGUiXScsDQoJCSJw ZXJtbGlua19tb2RlIiA9PiAnJHByZXRleHRbInBlcm1saW5rX21vZGUiXScsDQoJKTsNCgkv LyBFYWNoIGVudHJ5IGhhcyB0aGUgb3BlcmF0aW9uIHRvIGJlIGV2YWwoKWQgbGF0ZXIgYW5k IGEgbGlzdCBvZiBkaXNhbGxvd2VkIGZpZWxkcw0KCSRhbGxPcHMgPSBhcnJheSgNCgkJJ2Vx JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgQ0FTVCBGSUVMRCA9PT0gQ0FTVCBWQUxV RScsICcnKSwNCgkJJ25vdCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklF TEQgIT09IENBU1QgVkFMVUUnLCAnJyksDQoJCSdndCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5B TUUpICYmIENBU1QgRklFTEQgPiBDQVNUIFZBTFVFJywgJycpLA0KCQknZ2UnID0+IGFycmF5 KCdpc3NldChWQVJOQU1FKSAmJiBDQVNUIEZJRUxEID49IENBU1QgVkFMVUUnLCAnJyksDQoJ CSdsdCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgPCBDQVNUIFZB TFVFJywgJycpLA0KCQknbGUnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBDQVNUIEZJ RUxEIDw9IENBU1QgVkFMVUUnLCAnJyksDQoJCSdpbicgPT4gYXJyYXkoJ2lzc2V0KFZBUk5B TUUpICYmIGluX2FycmF5KEZJRUxELCBleHBsb2RlKCInLiRsaXN0X2RlbGltLiciLCBWQUxV RSkpICE9PSBmYWxzZScsICcnKSwNCgkJJ25vdGluJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFN RSkgJiYgaW5fYXJyYXkoRklFTEQsIGV4cGxvZGUoIicuJGxpc3RfZGVsaW0uJyIsIFZBTFVF KSkgPT09IGZhbHNlJywgJycpLA0KCQknYmVnaW5zJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFN RSkgJiYgc3RycG9zKEZJRUxELCBWQUxVRSkgPT09IDAnLCAnJyksDQoJCSdjb250YWlucycg PT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIHN0cnBvcyhGSUVMRCwgVkFMVUUpICE9PSBm YWxzZScsICcnKSwNCgkJJ2VuZHMnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBzdWJz dHIoRklFTEQsIHN0cmxlbihGSUVMRCkgLSBzdHJsZW4oVkFMVUUpKSA9PT0gVkFMVUUnLCAn JyksDQoJCSdkZWZpbmVkJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSknLCAncGFyZW50Jyks DQoJCSd1bmRlZmluZWQnID0+IGFycmF5KCchaXNzZXQoVkFSTkFNRSknLCAncGFyZW50Jyks DQoJCSdpc2VtcHR5JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgRklFTEQgPT0gIiIn LCAnJyksDQoJCSdpc3VzZWQnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBGSUVMRCAh PSAiIicsICcnKSwNCgkJJ2lzbnVtJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5 cGVfZGlnaXQoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc2FscGhhJyA9PiBhcnJheSgn aXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfYWxwaGEoKHN0cmluZylGSUVMRCknLCAnJyksDQoJ CSdpc2FsbnVtJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfYWxudW0oKHN0 cmluZylGSUVMRCknLCAnJyksDQoJCSdpc2xvd2VyJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFN RSkgJiYgY3R5cGVfbG93ZXIoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc3VwcGVyJyA9 PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfdXBwZXIoKHN0cmluZylGSUVMRCkn LCAnJyksDQoJCSdpc3B1bmN0JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVf cHVuY3QoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc3NwYWNlJyA9PiBhcnJheSgnaXNz ZXQoVkFSTkFNRSkgJiYgY3R5cGVfc3BhY2UoKHN0cmluZylGSUVMRCknLCAnJyksDQoJKTsN Cg0KCSRudW1lcmljT3BzID0gImd0LCBnZSwgbHQsIGxlLCBlcSwgbm90IjsNCgkkY2FzZU9w cyA9ICJpc2xvd2VyLCBpc3VwcGVyIjsNCgkkc3BhY2VPcHMgPSAiaXNudW0sIGlzYWxwaGEs IGlzYWxudW0sIGlzbG93ZXIsIGlzdXBwZXIsIGlzcHVuY3QsIGJlZ2lucywgY29udGFpbnMs IGVuZHMiOw0KCSRmaWVsZHMgPSBkb19saXN0KCRmaWVsZCwgJHBhcmFtX2RlbGltKTsNCgkk b3BzID0gZG9fbGlzdCgkb3BlcmF0b3IsICRwYXJhbV9kZWxpbSk7DQoJJG51bU9wcyA9IGNv dW50KCRvcHMpOw0KCSR2YWxzID0gZG9fbGlzdCgkdmFsdWUsICRwYXJhbV9kZWxpbSk7DQoJ JG51bVZhbHMgPSBjb3VudCgkdmFscyk7DQoJJHBhcmVudENhdHMgPSAnJzsgLy8gUGxhY2Vo b2xkZXIgZm9yIHRoZSBjb25jYXRlbmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBsZWFmIG5vZGVz DQoJJHJlcGxhY2VtZW50cyA9IGFycmF5KCk7DQoJJHR5cGUgPSAoJHRoaXNmaWxlKSA/ICJm aWxlIiA6ICgoJHRoaXNsaW5rKSA/ICJsaW5rIiA6ICgoJHRoaXNpbWFnZSkgPyAiaW1hZ2Ui IDogImFydGljbGUiKSk7DQoJJG91dCA9IGFycmF5KCk7DQoNCglmb3IgKCRpZHggPSAwOyAk aWR4IDwgY291bnQoJGZpZWxkcyk7ICRpZHgrKykgew0KCQkkZmxkID0gJGZpZWxkc1skaWR4 XTsNCgkJJGZsZFBhcnRzID0gZXhwbG9kZSgkbW9kX2RlbGltLCAkZmxkKTsNCgkJJHZhbCA9 ICgkaWR4IDwgJG51bVZhbHMpID8gJHZhbHNbJGlkeF0gOiAnJzsNCgkJJHZhbFBhcnRzID0g ZXhwbG9kZSgkbW9kX2RlbGltLCAkdmFsKTsNCgkJJG9wID0gKCRpZHggPCAkbnVtT3BzICYm ICRvcHNbJGlkeF0gIT0gJycpID8gJG9wc1skaWR4XSA6ICgoJGZsZFBhcnRzWzBdPT0icGFy ZW50IikgPyAiY29udGFpbnMiIDogImVxIik7DQoJCSRvcFBhcnRzID0gZXhwbG9kZSgkbW9k X2RlbGltLCAkb3ApOw0KCQkkb3AgPSAkc3RvcmVkT3AgPSAoYXJyYXlfa2V5X2V4aXN0cygk b3BQYXJ0c1swXSwgJGFsbE9wcykpID8gJG9wUGFydHNbMF0gOiAiZXEiOw0KCQkkY2FzdCA9 ICgoY291bnQoJG9wUGFydHMpID09IDIpICYmICgkb3BQYXJ0c1sxXSA9PT0gIk5VTSIpICYm IChpbl9saXN0KCRvcCwgJG51bWVyaWNPcHMpKSkgPyAnKGludCknIDogJyc7DQoJCSRsZW5n dGggPSAoKGNvdW50KCRvcFBhcnRzKSA9PSAyKSAmJiAoJG9wUGFydHNbMV0gPT09ICJMRU4i KSAmJiAoaW5fbGlzdCgkb3AsICRudW1lcmljT3BzKSkpID8gJ3N0cmxlbihGSUVMRCknIDog Jyc7DQoJCSRraWxsU3BhY2VzID0gKChjb3VudCgkb3BQYXJ0cykgPT0gMikgJiYgKCRvcFBh cnRzWzFdID09PSAiTk9TUEFDRSIpICYmIChpbl9saXN0KCRvcCwgJHNwYWNlT3BzKSkpID8g dHJ1ZSA6IGZhbHNlOw0KCQkkc3RyaXBGbGQgPSAoKGNvdW50KCRmbGRQYXJ0cykgPiAxKSAm JiAoaW5fYXJyYXkoIk5PVEFHUyIsICRmbGRQYXJ0cykpKSA/IHRydWUgOiBmYWxzZTsNCgkJ JHN0cmlwVmFsID0gKChjb3VudCgkdmFsUGFydHMpID4gMSkgJiYgKGluX2FycmF5KCJOT1RB R1MiLCAkdmFsUGFydHMpKSkgPyB0cnVlIDogZmFsc2U7DQoJCSRjYXNlX3NlbnNpdGl2ZSA9 IChpbl9saXN0KCRvcCwgJGNhc2VPcHMpKSA/IDEgOiAkY2FzZV9zZW5zaXRpdmU7DQoJCWlm ICgkZGVidWcpIHsNCgkJCWVjaG8gJ1RFU1QgJy4oJGlkeCsxKS5uOw0KCQkJZG1wKCRmbGRQ YXJ0cywgJG9wUGFydHMsICR2YWxQYXJ0cyk7DQoJCX0NCgkJLy8gR2V0IHRoZSBvcGVyYXRv ciByZXBsYWNlbWVudCBjb2RlDQoJCSRleGNsdWRlID0gZG9fbGlzdCgkYWxsT3BzWyRvcF1b MV0pOw0KCQkkb3AgPSAkYWxsT3BzWyRvcF1bMF07DQoNCgkJLy8gQXMgbG9uZyBhcyB0aGUg Y3VycmVudCBvcGVyYXRvciBhbGxvd3MgdGhpcyBmaWVsZC4uLg0KCQlpZiAoIWluX2FycmF5 KCRmbGRQYXJ0c1swXSwgJGV4Y2x1ZGUpKSB7DQoJCQkvLyBNYWtlIHVwIHRoZSB0ZXN0IGZp ZWxkIHZhcmlhYmxlDQoJCQlpZiAoaXNzZXQoJHRoaXNmaWxlWyRmbGRQYXJ0c1swXV0pKSB7 DQoJCQkJJHJmbGQgPSAkZmxkUGFydHNbMF07DQoJCQkJJGZsZCA9ICckdGhpc2ZpbGVbIicu JHJmbGQuJyJdJzsNCgkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNsaW5rWyRmbGRQYXJ0c1sw XV0pKSB7DQoJCQkJJHJmbGQgPSAkZmxkUGFydHNbMF07DQoJCQkJJGZsZCA9ICckdGhpc2xp bmtbIicuJHJmbGQuJyJdJzsNCgkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNpbWFnZVskZmxk UGFydHNbMF1dKSkgew0KCQkJCSRyZmxkID0gJGZsZFBhcnRzWzBdOw0KCQkJCSRmbGQgPSAn JHRoaXNpbWFnZVsiJy4kcmZsZC4nIl0nOw0KCQkJfSBlbHNlIGlmIChhcnJheV9rZXlfZXhp c3RzKCRmbGRQYXJ0c1swXSwgJGFsbFB0eHQpKSB7DQoJCQkJJHJmbGQgPSAkZmxkUGFydHNb MF07DQoJCQkJJGZsZCA9ICRhbGxQdHh0WyRyZmxkXTsNCgkJCX0gZWxzZSBpZiAoJGZsZFBh cnRzWzBdID09ICJwYXJlbnQiKSB7DQoJCQkJJGxldmVsID0gJyc7DQoJCQkJZm9yZWFjaCAo JGZsZFBhcnRzIGFzICRwYXJ0KSB7DQoJCQkJCWlmICgkcGFydCA9PSAicGFyZW50Iikgew0K CQkJCQkJJHRoZUNhdCA9ICgkdGhpc2ZpbGUpID8gJHRoaXNmaWxlWydjYXRlZ29yeSddIDog KCgkdGhpc2xpbmspID8gJHRoaXNsaW5rWydjYXRlZ29yeSddIDogKCgkdGhpc2ltYWdlKSA/ ICR0aGlzaW1hZ2VbJ2NhdGVnb3J5J10gOiAkcHJldGV4dFsnYyddKSk7DQoJCQkJCX0gZWxz ZSBpZiAoc3RycG9zKCRwYXJ0LCAiQ0FUIikgPT09IDApIHsNCgkJCQkJCSR0aGVDYXQgPSAk dGhpc2FydGljbGVbImNhdGVnb3J5Ii5zdWJzdHIoJHBhcnQsIDMpXTsNCgkJCQkJfSBlbHNl IGlmIChzdHJwb3MoJHBhcnQsICJMVkwiKSA9PT0gMCkgew0KCQkJCQkJJGxldmVsID0gc3Vi c3RyKCRwYXJ0LCAzKTsNCgkJCQkJfQ0KCQkJCX0NCg0KCQkJCSR0cmVlID0gZ2V0VHJlZVBh dGgoZG9TbGFzaCgkdGhlQ2F0KSwgJHR5cGUpOw0KCQkJCWlmICgkZGVidWcpIHsNCgkJCQkJ ZWNobyAiQ0FURUdPUlkgVFJFRToiOw0KCQkJCQlkbXAoJHRyZWUpOw0KCQkJCX0NCgkJCQkk aXRlbXMgPSBhcnJheSgpOw0KCQkJCWZvcmVhY2ggKCR0cmVlIGFzICRsZWFmKSB7DQoJCQkJ CWlmICgkbGVhZlsnbmFtZSddID09ICJyb290IiB8fCAkbGVhZlsnbmFtZSddID09ICR0aGVD YXQpIHsNCgkJCQkJCWNvbnRpbnVlOw0KCQkJCQl9IGVsc2UgaWYgKCRsZXZlbCA9PSAnJyB8 fCAkbGV2ZWwgPT0gJGxlYWZbJ2xldmVsJ10pIHsNCgkJCQkJCSRpdGVtc1tdID0gJGxlYWZb J25hbWUnXTsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkkcGFyZW50Q2F0cyA9ICRyZmxkID0gaW1w bG9kZSgiICIsICRpdGVtcyk7DQoJCQkJJGZsZCA9ICckcGFyZW50Q2F0cyc7DQoJCQl9IGVs c2UgaWYgKCRmbGRQYXJ0c1swXSA9PSAidHhwdmFyIikgew0KCQkJCWlmIChjb3VudCgkZmxk UGFydHMpID4gMSkgew0KCQkJCQkkcmZsZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9 ICckdmFyaWFibGVbIicuJHJmbGQuJyJdJzsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKCRmbGRQ YXJ0c1swXSA9PSAidXJsdmFyIikgew0KCQkJCWlmIChjb3VudCgkZmxkUGFydHMpID4gMSkg ew0KCQkJCQkkcmZsZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9ICckX0dFVFsiJy4k cmZsZC4nIl0nOw0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09ICJzdnJ2 YXIiKSB7DQoJCQkJaWYgKGNvdW50KCRmbGRQYXJ0cykgPiAxKSB7DQoJCQkJCSRyZmxkID0g JGZsZFBhcnRzWzFdOw0KCQkJCQkkZmxkID0gJyRfU0VSVkVSWyInLiRyZmxkLiciXSc7DQoJ CQkJfQ0KCQkJfSBlbHNlIGlmICgkZmxkUGFydHNbMF0gPT0gInBocHZhciIpIHsNCgkJCQlp ZiAoY291bnQoJGZsZFBhcnRzKSA+IDEpIHsNCgkJCQkJJHJmbGQgPSAkZmxkUGFydHNbMV07 DQoJCQkJCSRmbGQgPSAnJEdMT0JBTFNbIicuJHJmbGQuJyJdJzsNCgkJCQl9DQoJCQl9IGVs c2UgaWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskZmxkUGFydHNbMF1dKSkgew0KCQkJCSRyZmxk ID0gc3RydG9sb3dlcigkZmxkUGFydHNbMF0pOw0KCQkJCSRmbGQgPSAnJHRoaXNhcnRpY2xl WyInLiRyZmxkLiciXSc7DQoJCQl9IGVsc2UgaWYgKCRmbGRQYXJ0c1swXSA9PSAiTlVMTCIp IHsNCgkJCQkkc21kX2lmX3ZhciA9ICcnOw0KCQkJCSRmbGQgPSAnJHNtZF9pZl92YXInOw0K CQkJCSRyZmxkID0gIk5VTEwiOw0KCQkJfSBlbHNlIHsNCgkJCQkkc21kX2lmX3ZhciA9ICRm bGRQYXJ0c1swXTsNCgkJCQkkZmxkID0gJyRzbWRfaWZfdmFyJzsNCgkJCQkkcmZsZCA9ICJm aWVsZCI7DQoJCQl9DQoJCQkkcmxmbGQgPSAic21kX2lmX2xlbl8iLiRyZmxkOw0KCQkJJHJm bGQgPSAic21kX2lmXyIuJHJmbGQ7DQoNCgkJCS8vIFRha2UgYSBjb3B5IG9mICRmbGQgdG8g dXNlIGluIGFueSBpc3NldCgpIHJlcXVlc3RzDQoJCQkkZmxkQ2xlYW4gPSAkZmxkOw0KCQkJ aWYgKCRraWxsU3BhY2VzKSB7DQoJCQkJJGZsZCA9ICdwcmVnX3JlcGxhY2UoIi9ccysvIiwi IiwnLiRmbGQuJyknOw0KCQkJfQ0KCQkJaWYgKCRzdHJpcEZsZCkgew0KCQkJCSRmbGQgPSAn dHJpbShzdHJpcF90YWdzKCcuJGZsZC4nKSknOw0KCQkJfQ0KDQoJCQkvLyBGaW5kIHRoZSBy ZWFsIHZhbHVlIHRvIGNvbXBhcmUgYWdhaW5zdCAobWF5IGJlIGFub3RoZXIgZmllbGQpDQoJ CQlpZiAoJHZhbFBhcnRzWzBdID09ICJ1cmx2YXIiKSB7DQoJCQkJaWYgKGNvdW50KCR2YWxQ YXJ0cykgPiAxKSB7DQoJCQkJCSR2ZmxkID0gJHZhbFBhcnRzWzFdOw0KCQkJCQkkdmFsID0g KGlzc2V0KCRfR0VUWyR2ZmxkXSkgJiYgJF9HRVRbJHZmbGRdICE9ICIiKSA/ICckX0dFVFsi Jy4kdmZsZC4nIl0nIDogZG9RdW90ZShzdHJfcmVwbGFjZSgnIicsICdcIicsICR2ZmxkKSk7 DQoJCQkJfQ0KCQkJfSBlbHNlIGlmICgkdmFsUGFydHNbMF0gPT0gInN2cnZhciIpIHsNCgkJ CQlpZiAoY291bnQoJHZhbFBhcnRzKSA+IDEpIHsNCgkJCQkJJHZmbGQgPSAkdmFsUGFydHNb MV07DQoJCQkJCSR2YWwgPSAoaXNzZXQoJF9TRVJWRVJbJHZmbGRdKSAmJiAkX1NFUlZFUlsk dmZsZF0gIT0gIiIpID8gJyRfU0VSVkVSWyInLiR2ZmxkLiciXScgOiBkb1F1b3RlKHN0cl9y ZXBsYWNlKCciJywgJ1wiJywgJHZmbGQpKTsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKCR2YWxQ YXJ0c1swXSA9PSAidHhwdmFyIikgew0KCQkJCWlmIChjb3VudCgkdmFsUGFydHMpID4gMSkg ew0KCQkJCQkkdmZsZCA9ICR2YWxQYXJ0c1sxXTsNCgkJCQkJJHZhbCA9IChpc3NldCgkdmFy aWFibGVbJHZmbGRdKSAmJiAkdmFyaWFibGVbJHZmbGRdICE9ICIiKSA/ICckdmFyaWFibGVb IicuJHZmbGQuJyJdJyA6IGRvUXVvdGUoc3RyX3JlcGxhY2UoJyInLCAnXCInLCAkdmZsZCkp Ow0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoJHZhbFBhcnRzWzBdID09ICJwaHB2YXIiKSB7DQoJ CQkJaWYgKGNvdW50KCR2YWxQYXJ0cykgPiAxKSB7DQoJCQkJCSR2ZmxkID0gJHZhbFBhcnRz WzFdOw0KCQkJCQkkdmFsID0gKGlzc2V0KCRHTE9CQUxTWyR2ZmxkXSkgJiYgJEdMT0JBTFNb JHZmbGRdICE9ICIiKSA/ICckR0xPQkFMU1siJy4kdmZsZC4nIl0nIDogZG9RdW90ZShzdHJf cmVwbGFjZSgnIicsICdcIicsICR2ZmxkKSk7DQoJCQkJfQ0KCQkJfSBlbHNlIGlmIChzdHJw b3MoJHZhbFBhcnRzWzBdLCAiPyIpID09PSAwKSB7DQoJCQkJJHZhbFBhcnRzWzBdID0gc3Vi c3RyKHN0cnRvbG93ZXIoJHZhbFBhcnRzWzBdKSwgMSk7DQoJCQkJJHZmbGQgPSAkdmFsUGFy dHNbMF07DQoJCQkJaWYgKGlzc2V0KCR0aGlzZmlsZVskdmZsZF0pICYmICR0aGlzZmlsZVsk dmZsZF0gIT0gIiIpIHsNCgkJCQkJJHZhbCA9ICckdGhpc2ZpbGVbIicuJHZmbGQuJyJdJzsN CgkJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzbGlua1skdmZsZF0pICYmICR0aGlzbGlua1sk dmZsZF0gIT0gIiIpIHsNCgkJCQkJJHZhbCA9ICckdGhpc2xpbmtbIicuJHZmbGQuJyJdJzsN CgkJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzaW1hZ2VbJHZmbGRdKSAmJiAkdGhpc2ltYWdl WyR2ZmxkXSAhPSAiIikgew0KCQkJCQkkdmFsID0gJyR0aGlzaW1hZ2VbIicuJHZmbGQuJyJd JzsNCgkJCQl9IGVsc2UgaWYgKGFycmF5X2tleV9leGlzdHMoJHZmbGQsICRhbGxQdHh0KSAm JiAkYWxsUHR4dFskdmZsZF0gIT0gIiIpIHsNCgkJCQkJJHZhbCA9ICRhbGxQdHh0WyR2Zmxk XTsNCgkJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskdmZsZF0pICYmICR0aGlz YXJ0aWNsZVskdmZsZF0gIT0gIiIpIHsNCgkJCQkJJHZhbCA9ICckdGhpc2FydGljbGVbIicu JHZmbGQuJyJdJzsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkdmFsID0gZG9RdW90ZShzdHJfcmVw bGFjZSgnIicsICdcIicsICR2ZmxkKSk7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkkdmZs ZCA9ICJ2YWwiOw0KCQkJCSR2YWwgPSBkb1F1b3RlKHN0cl9yZXBsYWNlKCciJywgJ1wiJywg JHZhbFBhcnRzWzBdKSk7DQoJCQl9DQoJCQkkdmxmbGQgPSAic21kX2lmX2xlbl8iLiR2Zmxk Ow0KCQkJJHZmbGQgPSAic21kX2lmXyIuJHZmbGQ7DQoJCQlpZiAoJHN0cmlwVmFsKSB7DQoJ CQkJJHZhbCA9ICd0cmltKHN0cmlwX3RhZ3MoJy4kdmFsLicpKSc7DQoJCQl9DQoNCgkJCS8v IFJlcGxhY2UgdGhlIHN0cmluZyBwYXJ0cy4uLg0KCQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJD QVNUIiwgJGNhc3QsICRvcCk7DQoJCQkkY21kID0gKCRsZW5ndGgpID8gc3RyX3JlcGxhY2Uo IkZJRUxEIiwgJGxlbmd0aCwgJGNtZCkgOiAkY21kOw0KCQkJJGNtZCA9IHN0cl9yZXBsYWNl KCJGSUVMRCIsICgoJGNhc2Vfc2Vuc2l0aXZlKSA/ICRmbGQgOiAnc3RydG9sb3dlcignLiRm bGQuJyknKSwgJGNtZCk7DQoJCQkkY21kID0gc3RyX3JlcGxhY2UoIlZBUk5BTUUiLCAkZmxk Q2xlYW4sICRjbWQpOw0KCQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJWQUxVRSIsICgoJGNhc2Vf c2Vuc2l0aXZlKSA/ICdWQUxVRScgOiAnc3RydG9sb3dlcihWQUxVRSknKSwgJGNtZCk7DQoJ CQkkY21kID0gIkBcJHJlcGxhY2VtZW50c1sneyIuJHJmbGQuIn0nXSA9ICIuJGZsZC4iOyBc bkBcJHJlcGxhY2VtZW50c1sneyIuJHJsZmxkLiJ9J10gPSBzdHJsZW4oIi4kZmxkLiIpOyBc bkBcJHJlcGxhY2VtZW50c1sneyIuJHZmbGQuIn0nXSA9ICIuJHZhbC4iOyBcbkBcJHJlcGxh Y2VtZW50c1sneyIuJHZsZmxkLiJ9J10gPSBzdHJsZW4oIi4kdmFsLiIpOyBcblwkb3V0W10g PSAoIi5zdHJfcmVwbGFjZSgiVkFMVUUiLCAoKCR2YWw9PT0iJyciICYmIHN0cnBvcygkb3As ICJzdHJwb3MiKSAhPT0gZmFsc2UpID8gIicgJyIgOiAkdmFsKSwgJGNtZCkuIikgPyAndHJ1 ZScgOiAnZmFsc2UnOyI7DQoJCQlpZiAoJGRlYnVnKSB7DQoJCQkJZG1wKCRjbWQpOw0KCQkJ fQ0KCQkJLy8gLi4uIGFuZCBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbg0KCQkJZXZhbCgkY21k KTsNCgkJfQ0KCX0NCglpZiAoJGRlYnVnKSB7DQoJCWVjaG8gIlJFU1VMVDoiOw0KCQlkbXAo JG91dCk7DQoJCWVjaG8gIlJFUExBQ0VNRU5UUzoiOw0KCQlkbXAoJHJlcGxhY2VtZW50cyk7 DQoJfQ0KCWlmICgkZGVidWcgPiAxKSB7DQoJCWVjaG8gIlBSRVRFWFQ6IjsNCgkJZG1wKCRw cmV0ZXh0KTsNCgkJZWNobyAiVEhJUyBBUlRJQ0xFOiI7DQoJCWRtcCgkdGhpc2FydGljbGUp Ow0KCQllY2hvICJUSElTIEZJTEU6IjsNCgkJZG1wKCR0aGlzZmlsZSk7DQoJCWVjaG8gIlRI SVMgTElOSzoiOw0KCQlkbXAoJHRoaXNsaW5rKTsNCgkJZWNobyAiVEhJUyBJTUFHRToiOw0K CQlkbXAoJHRoaXNpbWFnZSk7DQoJfQ0KCS8vIENoZWNrIGxvZ2ljDQoJJHJlc3VsdCA9ICgk b3V0KSA/IHRydWUgOiBmYWxzZTsNCglpZiAoc3RydG9sb3dlcigkbG9naWMpID09ICJhbmQi ICYmIGluX2FycmF5KCJmYWxzZSIsICRvdXQpKSB7DQoJCSRyZXN1bHQgPSBmYWxzZTsNCgl9 DQoJaWYgKHN0cnRvbG93ZXIoJGxvZ2ljKSA9PSAib3IiICYmICFpbl9hcnJheSgidHJ1ZSIs ICRvdXQpKSB7DQoJCSRyZXN1bHQgPSBmYWxzZTsNCgl9DQoNCglyZXR1cm4gcGFyc2UoRXZh bEVsc2Uoc3RydHIoJHRoaW5nLCAkcmVwbGFjZW1lbnRzKSwgJHJlc3VsdCkpOw0KfSI7czo0 OiJ0eXBlIjtzOjE6IjAiO3M6NDoiaGVscCI7czozMDY2MjoiCTxwPjxkaXYgaWQ9InNtZF9o ZWxwIj48L3A+CgoJPGgxPnNtZF9pZjwvaDE+CgoJPHA+QSByZWFsbHkgc2ltcGxlLCBnZW5l cmljICYjODIxNjtpZiBjb25kaXRpb24mIzgyMTc7IHRlc3Rlci4gQ2FuIHRlc3QgYW55IGZp ZWxkIG9yIHZhcmlhYmxlIGluIHRoZSBjdXJyZW50IGFydGljbGUsIGZpbGUsIGltYWdlLCBs aW5rLCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXIgb3IgPGNvZGU+Jmx0O3R4 cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gY29udGV4dCBmb3IgYSB2YXJpZXR5IG9mIGF0dHJp YnV0ZXMgYW5kIHRha2UgYWN0aW9uIGlmIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFu PiBvciA8c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+LjwvcD4KCgk8aDI+RmVhdHVy ZXM8L2gyPgoKCTx1bD4KCQk8bGk+U3VwcG9ydHMgbW9zdCBtYWpvciBhcnRpY2xlLCBmaWxl LCBpbWFnZSBhbmQgbGluayB2YXJpYWJsZXMgc3VjaCBhcyBzZWN0aW9uLCBjYXRlZ29yeSwg Y3VzdG9tIGZpZWxkcywgaWQsIHF1ZXJ5IHN0cmluZywgYXV0aG9yLCBib2R5LCBleGNlcnB0 LCB5YWhkZSB5YWhkZSwgcGx1cyB1cmwgdmFycywgc2VydmVyIHZhcnMsIHR4cCB2YXJzLCBw aHAgdmFycywgYW5kIHN1Yi1jYXRlZ29yeS9wYXJlbnQgY2hlY2tpbmc8L2xpPgoJCTxsaT5U ZXN0cyBpbmNsdWRlIGVxdWFsaXR5LCBpbmVxdWFsaXR5LCBsZXNzIHRoYW4sIGdyZWF0ZXIg dGhhbiwgZW1wdHksIHVzZWQsIGRlZmluZWQsIGJlZ2lucywgZW5kcywgY29udGFpbnMsIGlz IG51bWVyaWMgLyBhbHBoYSAvIGFscGhhbnVtZXJpYyAvIGxvd2VyY2FzZSAvIHVwcGVyY2Fz ZSwgYW1vbmcgb3RoZXJzPC9saT4KCQk8bGk+VGVzdHMgZm9yIG1vcmUgdGhhbiBvbmUgY29u ZGl0aW9uIGF0IG9uY2UgYW5kIGFwcGxpZXMgZWl0aGVyIDxzcGFuIGNsYXNzPSJjYXBzIj5B TkQ8L3NwYW4+IGxvZ2ljIChhbGwgdGVzdHMgbXVzdCBwYXNzKSBvciBPUiBsb2dpYyAoYW55 IHRlc3QgbXVzdCBwYXNzKTwvbGk+CgkJPGxpPkFsbCB0ZXN0ZWQgZmllbGRzIGFuZCB2YWx1 ZXMgYXJlIGF2YWlsYWJsZSB0byB0aGUgY29udGFpbmVyIHNvIHlvdSBjYW4gZGlzcGxheSB0 aGVtPC9saT4KCQk8bGk+VWdseSBhbmQgdmVyeSBkaXJ0eS4gVXNlcyA8c3BhbiBjbGFzcz0i Y2FwcyI+UEhQPC9zcGFuPiYjODIxNztzIDxjb2RlPmV2YWwoKTwvY29kZT4gY29tbWFuZCB3 aGljaCBtb3N0IHByb2dyYW1tZXJzIGNvbmN1ciBzaG91bGQgYmUgcmVuYW1lZCA8Y29kZT5l dmlsKCk8L2NvZGU+PC9saT4KCTwvdWw+CgoJPGgyPkF1dGhvcjwvaDI+CgoJPHA+PGEgaHJl Zj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbW1lbnRGb3JtIj5TdGVmIERhd3NvbjwvYT4u IEJhc2VkIG9uIGFuIGlkZWEgYnJld2luZyBpbiB0aGUgYmFjayBvZiBteSBtaW5kIHdoaWxl IGhhY2tpbmcgY2hzX2lmX3VybHZhci48L3A+CgoJPGgyPkluc3RhbGxhdGlvbiAvIFVuaW5z dGFsbGF0aW9uPC9oMj4KCgk8cD5Eb3dubG9hZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxh IGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy85MzAvc21kX2lmIj50ZXh0 cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29t L3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPiwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0 YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9m b3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yNTM1NyI+Zm9ydW0gdGhy ZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBv dGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+VG8gdW5pbnN0YWxsLCBzaW1wbHkg ZGVsZXRlIGZyb20gdGhlIEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFnZS48L3A+CgoJPGgyPlVz YWdlPC9oMj4KCgk8cD5Vc2UgdGhlIHRhZyBpbiBhbnkgcGFnZSwgZm9ybSBvciBhcnRpY2xl IGNvbnRleHQuIENhbiBhbHNvIGJlIHVzZWQgaW5zaWRlIGZpbGUsIGltYWdlIG9yIGxpbmsg bGlzdHMgdG8gdGFrZSBhY3Rpb24gZGVwZW5kaW5nIG9uIGF0dHJpYnV0ZXMgb2YgdGhlIGN1 cnJlbnQgaXRlbS48L3A+CgoJPGgzIGNsYXNzPSJ0YWciPnNtZF9pZjwvaDM+CgoJPHAgY2xh c3M9InRhZy1zdW1tYXJ5Ij5BdCB0aGUgcGxhY2UgeW91IHdpc2ggdG8gY29tcGFyZSBhIGZp ZWxkIHdpdGggYW5vdGhlciB2YWx1ZSwgcHV0IHRoaXMgdGFnIHdpdGggYWxsIHRocmVlIG1h bmRhdG9yeSBhdHRyaWJ1dGVzIChzaGFkZWQgYmVsb3cpLiBFYWNoIHRha2UgYSBzZXJpZXMg b2YgY29tbWEtc2VwYXJhdGVkIGxpc3RzICYjODIxMjsgdGhvdWdoIHRoZSA8YSBocmVmPSIj cGFyYW1kZWxpbSI+Y29tbWEgaXMgb3ZlcnJpZGFibGU8L2E+IHdpdGggdGhlIHBhcmFtX2Rl bGltIGF0dHJpYnV0ZS4gSWYgdGhlIHJlc3VsdCBvZiBhbGwgdGhlIGNvbXBhcmlzb24gdGVz dHMgaXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IHRoZSBjb250YWluZWQgYmxv Y2sgd2lsbCBiZSBleGVjdXRlZC4gSWYgdGhlIHJlc3VsdCBpcyA8c3BhbiBjbGFzcz0iY2Fw cyI+RkFMU0U8L3NwYW4+LCBhbnkgPGNvZGU+Jmx0O3R4cDplbHNlIC8mZ3Q7PC9jb2RlPiB3 aWxsIGJlIGV4ZWN1dGVkIGluc3RlYWQuIFdpdGhvdXQgYW55IDxjb2RlPiZsdDt0eHA6ZWxz ZSAvJmd0OzwvY29kZT4gYmxvY2ssIG5vdGhpbmcgaXMgb3V0cHV0IGlmIHRoZSByZXN1bHQg aXMgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPi48L3A+CgoJPGg0IGNsYXNzPSJh dHRzICIgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIG1hbmQiPmZpZWxkPC9zcGFuPiA6IHRoZSA8YSBocmVmPSIj ZmllbGQiPmZpZWxkczwvYT4gdG8gdGVzdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSBtYW5kIj5vcGVyYXRvcjwvc3Bhbj4gOiB0aGUgPGEgaHJlZj0iI29wZXJhdG9yIj5v cGVyYXRpb25zPC9hPiBmb3IgY29tcGFyaXNvbiB3aXRoIHRoYXQgZmllbGQgKGUuZy4gPGNv ZGU+ZXE8L2NvZGU+LCA8Y29kZT5ub3Q8L2NvZGU+LCA8Y29kZT5iZWdpbnM8L2NvZGU+LCBl dGMpLiBEZWZhdWx0IGlzIHVzdWFsbHkgPGNvZGU+ZXE8L2NvZGU+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIG1hbmQiPnZhbHVlPC9zcGFuPiA6IHRoZSA8YSBocmVmPSIj dmFsdWUiPnZhbHVlczwvYT4gd2l0aCB3aGljaCB0byBjb21wYXJlIHRoZSBmaWVsZHM8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmxvZ2ljPC9zcGFuPiA6IGhvdyBtdWx0 aXBsZSB0ZXN0cyBhcmUgam9pbmVkOiA8c3BhbiBjbGFzcz0iY2FwcyI+QU5EPC9zcGFuPiBv ciBPUi4gRGVmYXVsdCBpcyA8c3BhbiBjbGFzcz0iY2FwcyI+QU5EPC9zcGFuPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Y2FzZV9zZW5zaXRpdmU8L3NwYW4+IDogMSA9 IGNhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb247IDAgPSBpZ25vcmUgY2FzZS4gRGVmYXVsdCBp cyAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5wYXJhbV9kZWxpbTwvc3Bh bj4gOiBkZWxpbWl0ZXIgdXNlZCBiZXR3ZWVuIGVhY2ggZmllbGQsIG9wZXJhdG9yIG9yIHZh bHVlIGluIGEgbXVsdGktdGVzdC4gRGVmYXVsdCBpcyBhIGNvbW1hICgsKTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bW9kX2RlbGltPC9zcGFuPiA6IGRlbGltaXRlciB1 c2VkIHdoZW4gc3BlY2lmeWluZyBmaWVsZCBvciBvcGVyYXRvciBtb2RpZmllcnMgZm9yIHVy bHZhciwgc3ZydmFyIGFuZCB0eHB2YXIuIERlZmF1bHQgaXMgYSBjb2xvbiAoOik8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmxpc3RfZGVsaW08L3NwYW4+IDogZGVsaW1p dGVyIHVzZWQgd2hlbiBzcGVjaWZ5aW5nIGEgbGlzdCBvZiB2YWx1ZXMgdG8gY2hlY2sgdmlh IHRoZSA8Y29kZT5pbjwvY29kZT4gb3IgPGNvZGU+bm90aW48L2NvZGU+IG9wZXJhdG9ycy4g RGVmYXVsdCBpcyBhIGZvcndhcmQtc2xhc2ggKC8pPC9saT4KCTwvdWw+CgoJPHA+VGhlIGxp c3RzIGFyZSBwcm9jZXNzZWQgaW4gb3JkZXIsIGkuZS4gdGhlIDFzdCBmaWVsZCB1c2VzIHRo ZSAxc3Qgb3BlcmF0b3IgaW4gdGhlIGxpc3QgYW5kIGNvbXBhcmVzIGl0IHRvIHRoZSAxc3Qg dmFsdWU7IHRoZSAybmQgZmllbGQgdXNlcyB0aGUgMm5kIG9wZXJhdG9yIGluIHRoZSBsaXN0 IGFuZCBjb21wYXJlcyBpdCB0byB0aGUgMm5kIHZhbHVlLCBhbmQgc28gb24uIFZhbHVlcyBz aG91bGQgdXN1YWxseSBiZSBzcGVjaWZpZWQgd2l0aCBwbGFjZWhvbGRlcnMgdG8gbWFpbnRh aW4gb3JkZXI6IGUuZy4gPGNvZGU+dmFsdWU9JnF1b3Q7LCA0LCwgdG9wJnF1b3Q7PC9jb2Rl PjwvcD4KCgk8cD5Ob3RlIHRoYXQsIGFsdGhvdWdoIHRoZSBmaXJzdCB0aHJlZSBhdHRyaWJ1 dGVzIGFyZSBjb25zaWRlcmVkIG1hbmRhdG9yeSwgaWYgeW91IGhhcHBlbiB0byByZXF1aXJl IHRoZSBkZWZhdWx0IG9wZXJhdG9yIGZvciBhbGwgeW91ciB0ZXN0cywgeW91IGNhbiBzYWZl bHkgb21pdCA8Y29kZT5vcGVyYXRvcjwvY29kZT4uIFNpbWlsYXJseSB3aXRoIHZhbHVlczog aWYgeW91IGFyZSBlbnRpcmVseSB0ZXN0aW5nIHRoZSBleGlzdGVuY2Ugb3IgdHlwZSBvZiB2 YXJpYWJsZXMsIHlvdSBjYW4gb21pdCB0aGUgPGNvZGU+dmFsdWU8L2NvZGU+IHBhcmFtZXRl ciBpZiB5b3Ugd2lzaC48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJmaWVsZCI+ ZmllbGQ8L2g0PgoKCTxwPkxpc3Qgb2YgZmllbGQgbG9jYXRpb25zIHRvIGxvb2sgYXQuIFNv bWUgdXNlZnVsIHZhbHVlcyBhcmU6PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+c2VjdGlvbjwv Y29kZT48L2xpPgoJCTxsaT48Y29kZT5jYXRlZ29yeTwvY29kZT4gKG9yIDxjb2RlPmNhdGVn b3J5MTwvY29kZT4sIG9yIDxjb2RlPmNhdGVnb3J5MjwvY29kZT4gaWYgb24gYW4gYXJ0aWNs ZSBwYWdlKTwvbGk+CgkJPGxpPjxjb2RlPmF1dGhvcmlkPC9jb2RlPiBvciA8Y29kZT5hdXRo b3I8L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+aWQ8L2NvZGU+IChmaWxlL2xpbmsvaW1hZ2Uv YXJ0aWNsZSBJRCkuIEluIGFuIGluZGl2aWR1YWwgYXJ0aWNsZSBjb250ZXh0LCB1c2UgPGNv ZGU+dGhpc2lkPC9jb2RlPiBpbnN0ZWFkPC9saT4KCQk8bGk+PGNvZGU+cXVlcnk8L2NvZGU+ ICh0aGUgcXVlcnkgc3RyaW5nIGZyb20gdGhlIHNlYXJjaCBmb3JtKTwvbGk+CgkJPGxpPjxj b2RlPnBnPC9jb2RlPiAodGhlIGN1cnJlbnQgcGFnZSBudW1iZXIgaW4gbGlzdHMpPC9saT4K CQk8bGk+PGNvZGU+bW9udGg8L2NvZGU+IChjdXJyZW50IG1vbnRoIGZpZWxkIGZyb20gdGhl IGFkZHJlc3MgYmFyKTwvbGk+CgkJPGxpPjxjb2RlPnN0YXR1czwvY29kZT4gKGRvY3VtZW50 IHN0YXR1czogMjAwLCA0MDQsIDQwMywgZXRjKTwvbGk+CgkJPGxpPjxjb2RlPnBhZ2U8L2Nv ZGU+ICh0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gUGFnZSB0ZW1wbGF0ZSB1 c2VkIGJ5IHRoaXMgc2VjdGlvbik8L2xpPgoJCTxsaT48Y29kZT5uZXh0X2lkPC9jb2RlPiAv IDxjb2RlPnByZXZfaWQ8L2NvZGU+IChJRCBvZiBuZXh0L3ByZXYgZG9jdW1lbnQgaWYgb24g YXJ0aWNsZSBwYWdlKTwvbGk+CgkJPGxpPjxjb2RlPm5leHRfdGl0bGU8L2NvZGU+IC8gPGNv ZGU+cHJldl90aXRsZTwvY29kZT4oVGl0bGUgb2YgbmV4dC9wcmV2IGRvY3VtZW50IGlmIG9u IGFydGljbGUgcGFnZSk8L2xpPgoJCTxsaT48Y29kZT5uZXh0X3V0aXRsZTwvY29kZT4gLyA8 Y29kZT5wcmV2X3V0aXRsZTwvY29kZT4gKHVybC10aXRsZSBvZiBuZXh0L3ByZXYgZG9jdW1l bnQgaWYgb24gYXJ0aWNsZSBwYWdlKTwvbGk+CgkJPGxpPjxjb2RlPnBlcm1saW5rX21vZGU8 L2NvZGU+ICh0YWtlIGFjdGlvbiBiYXNlZCBvbiBvbmUgb2YgdGhlIG1lc3N5L2NsZWFuIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHNjaGVtZXMpPC9saT4KCQk8bGk+PGNvZGU+ b3RoZXIgYXJ0aWNsZS9maWxlL2xpbmsgZmllbGQ8L2NvZGU+IChlLmcuIGJvZHksIGV4Y2Vy cHQsIGFydGljbGVfaW1hZ2UsIGtleXdvcmRzLCBsaW5rYW5tZSwgZmlsZW5hbWUsIGRvd25s b2FkcywgJiM4MjMwOyk8L2xpPgoJCTxsaT48Y29kZT5teV9jdXN0b21fZmllbGRfbmFtZTwv Y29kZT4gKGFueSBjdXN0b20gZmllbGRzIHlvdSBoYXZlIGRlZmluZWQpPC9saT4KCQk8bGk+ PGNvZGU+dXJsdmFyOnZhcl9uYW1lPC9jb2RlPiAoYW55IHZhcmlhYmxlIGluIHRoZSBhZGRy ZXNzIGJhciBhZnRlciB0aGUgPGNvZGU+PzwvY29kZT4pPC9saT4KCQk8bGk+PGNvZGU+c3Zy dmFyOnZhcl9uYW1lPC9jb2RlPiAoYW55IHN0YW5kYXJkIHNlcnZlciB2YXJpYWJsZSwgZS5n LiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRUUDwvc3Bhbj5fVVNFUl9BR0VOVCk8L2xpPgoJCTxs aT48Y29kZT50eHB2YXI6bXlfdmFyPC9jb2RlPiAoYW55IFRleHRwYXR0ZXJuIHZhcmlhYmxl IHNldCB3aXRoIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgbmFtZT0mcXVvdDtteV92YXImcXVv dDsgLyZndDs8L2NvZGU+KTwvbGk+CgkJPGxpPjxjb2RlPnBocHZhcjpteV92YXI8L2NvZGU+ IChhbnkgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gdmFyaWFibGUgPGVtPmluIHRo ZSBnbG9iYWwgc2NvcGU8L2VtPik8L2xpPgoJCTxsaT48Y29kZT5wYXJlbnQ6b3B0aW9uYWxf bW9kaWZpZXJzPC9jb2RlPiAod2hldGhlciB0aGUgZ2l2ZW4gY2F0ZWdvcnkgaXMgYSBkZXNj ZW5kZW50IG9mIGFub3RoZXIgY2F0ZWdvcnkpPC9saT4KCQk8bGk+PGNvZGU+TlVMTDwvY29k ZT4gKHVzZWZ1bCB3aGVuIGNvbXBhcmluZyBhcmJpdHJhcnkgdmFsdWVzIGZvciBlbXB0aW5l c3MpPC9saT4KCTwvdWw+CgoJPHA+SWYgeW91IHNwZWNpZnkgYSBmaWVsZCBuYW1lIHRoYXQg ZG9lcyBub3QgZXhpc3QsIHRoZSB0ZXh0IHlvdSB1c2Ugd2lsbCBiZSB0YWtlbiB2ZXJiYXRp bSBpbiBtb3N0IGNhc2VzLjwvcD4KCgk8cD5JZiB5b3Ugd2lzaCB0byBjb21wYXJlIGEgZmll bGQgdGhhdCBtaWdodCBjb250YWluIDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiAo ZS5nIDxjb2RlPmJvZHk8L2NvZGU+KSwgYWRkIHRoZSBtb2RpZmllciA8Y29kZT46Tk9UQUdT PC9jb2RlPiB0byB0aGUgZW5kIG9mIHRoZSBmaWVsZC4gSXQgd2lsbCBoYXZlIGl0cyA8c3Bh biBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gYW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8 L3NwYW4+IHRhZ3Mgc3RyaXBwZWQgZnJvbSBpdCBhbmQgd2lsbCBhbHNvIGJlIHRyaW1tZWQg dG8gcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcy48L3A+CgoJPHA+VGhlIHNw ZWNpYWwgZmllbGQgPGNvZGU+cGFyZW50PC9jb2RlPiBjaGVja3MgdGhlIHBhcmVudCBjYXRl Z29yeSBmb3IgYSBtYXRjaC4gVW5saWtlIHRoZSBvdGhlciBmaWVsZCB0eXBlcywgdGhlIGRl ZmF1bHQgPGEgaHJlZj0iI29wZXJhdG9yIj5vcGVyYXRvcjwvYT4gZm9yIHBhcmVudCBpcyAm IzgyMTY7Y29udGFpbnMmIzgyMTc7LiBUaGlzIGlzIGJlY2F1c2UgdGhlIGVudGlyZSB0cmVl IGlzIGNoZWNrZWQgZm9yIGEgbWF0Y2gsIHN0YXJ0aW5nIGZyb20gdGhlIHRvcCBvZiB0aGUg dHJlZSBkb3duIHRvIHRoZSBjdXJyZW50IGNhdGVnb3J5LiBJbnRlcm5hbGx5LCB0aGUgcGx1 Z2luIG1ha2VzIHVwIGEgJiM4MjIwO2JyZWFkY3J1bWIgdHJhaWwmIzgyMjE7IG9mIGNhdGVn b3JpZXMgaW4gdGhlIGN1cnJlbnQgYnJhbmNoLCBlYWNoIHNlcGFyYXRlZCBieSBhIHNwYWNl LCBzbyB0ZXN0aW5nIGZvciBlcXVhbGl0eSB3b3VsZCByZXF1aXJlIHB1dHRpbmcgdGhlbSBh bGwgaW4gdGhlIDxhIGhyZWY9IiN2YWx1ZSI+dmFsdWU8L2E+IHBhcmFtZXRlci48L3A+CgoJ PHA+WW91IGFyZSBvZiBjb3Vyc2UgZnJlZSB0byBjaG9vc2UgYW4gYWx0ZXJuYXRpdmUgb3Bl cmF0b3I7IDxjb2RlPmJlZ2luczwvY29kZT4gaXMgdmVyeSB1c2VmdWwgZm9yIHRlc3Rpbmcg aWYgdGhlIHRvcCBsZXZlbCBjYXRlZ29yeSBtYXRjaGVzIHRoZSBvbmUgZ2l2ZW4gaW4gdGhl IDxjb2RlPnZhbHVlPC9jb2RlPiBmaWVsZC48L3A+CgoJPHA+SWYgeW91IHVzZSA8Y29kZT5w YXJlbnQ6TFZMbjwvY29kZT4sIHRoZSBjb21wYXJpc29uIHdpbGwgYmUgcmVzdHJpY3RlZCB0 byB0aGF0ICYjODIyMDtsZXZlbCYjODIyMTsgb2Ygc3ViLWNhdGVnb3J5OyBMVkwxIGlzIHRo ZSAmIzgyMjA7dG9wJiM4MjIxOyBsZXZlbCwgTFZMMiBpcyB0aGUgbmV4dCBzdWItY2F0ZWdv cnkgbGV2ZWwsIGFuZCBzbyBvbi4gV2hlbiB1c2luZyB0aGVzZSBtb2RpZmllcnMsIHRoZSAm IzgyMTY7ZXEmIzgyMTc7IG9wZXJhdG9yIGJlY29tZXMgbW9yZSB1c2VmdWwgYmVjYXVzZSB5 b3UgYXJlIGNvbXBhcmluZyBhIHNpbmdsZSBwYXJlbnQgY2F0ZWdvcnkuPC9wPgoKCTxwPldo ZW4gdXNpbmcgYXJ0aWNsZXMsIHlvdSBjYW4gZnVydGhlciBtb2RpZnkgdGhlIGJlaGF2aW91 ciBvZiB0aGUgcGFyZW50IHVzaW5nIHRoZSA8Y29kZT5DQVRuPC9jb2RlPiBzeW50YXggKHdo ZXJlICYjODIxNjtuJiM4MjE3OyBpcyAxIG9yIDIpLiBTcGVjaWZ5aW5nICYjODIyMDtwYXJl bnQmIzgyMjE7IHdpdGhvdXQgPGNvZGU+Q0FUbjwvY29kZT4gd2lsbCB1c2UgdGhlIGdsb2Jh bCBjYXRlZ29yeSAoPGNvZGU+P2M9PC9jb2RlPikuIElmIHlvdSBhZGQgPGNvZGU+OkNBVG48 L2NvZGU+IGl0IHdpbGwgaW5zdGVhZCBjb21wYXJlIHRoZSBhcnRpY2xlJiM4MjE3O3MgY2F0 ZWdvcnkxIG9yIGNhdGVnb3J5MiByZXNwZWN0aXZlbHkuPC9wPgoKCTxwPllvdSBjYW4gdXNl IDxzcGFuIGNsYXNzPSJjYXBzIj5DQVQ8L3NwYW4+IGFuZCA8c3BhbiBjbGFzcz0iY2FwcyI+ TFZMPC9zcGFuPiBpbiBjb21iaW5hdGlvbiwgaW5kZXBlbmRlbnRseSBvciBub3QgYXQgYWxs LiBUaGlzIGFsbG93cyBjb21wYXJpc29ucyBzdWNoIGFzICYjODIyMDtpZiB0aGUgMm5kIHN1 Yi1jYXRlZ29yeSBvZiBjYXRlZ29yeTEgZXF1YWxzIGJsYWhibGFoJiM4MjIxOyBvciAmIzgy MjA7aWYgY2F0ZWdvcnkyIGlzIGEgY2hpbGQgb2YgYmxhaGJsYWgmIzgyMjE7LiBTZWUgPGEg aHJlZj0iI2VnNCI+RXhhbXBsZSA0PC9hPi48L3A+CgoJPHA+T25lIG90aGVyIHNwZWNpYWwg ZmllbGQgaXMgPGNvZGU+TlVMTDwvY29kZT4uIFRoaXMgaXMgZXhhY3RseSB3aGF0IGl0IHNh eXMgaXQgaXM6IGVtcHR5LiBUaGUgcmVhc29uIGZvciBpdHMgaW5jbHVzaW9uIGlzIHRoYXQg c29tZXRpbWVzIHlvdSB3aXNoIHRvIHRlc3Qgc29tZXRoaW5nIHRoYXQgaXNuJiM4MjE3O3Qg YSB0cnVlIHZhcmlhYmxlICYjODIxMjsgZS5nLiBhIHJlcGxhY2VtZW50IHZhcmlhYmxlIGZy b20gc21kX3ZhcnMgb3Igc21kX2VhY2ggJiM4MjEyOyB0byBzZWUgaWYgaXQmIzgyMTc7cyBl bXB0eSBvciBub3QuPC9wPgoKCTxwPklmIHlvdSB3ZXJlIHRvIHB1dCB0aGlzOjwvcD4KCgk8 cD48Y29kZT4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDt7cmVzdWx0fSZxdW90OyBvcGVy YXRvcj0mcXVvdDtpc2VtcHR5JnF1b3Q7Jmd0OzwvY29kZT48L3A+CgoJPHA+eW91IHdvdWxk IG5vdCBnZXQgdGhlIHJlc3VsdCB5b3UgZXhwZWN0IChpdCYjODIxNztzIHByZXR0eSBlc290 ZXJpYyBidXQgaXQgcmV2b2x2ZXMgYXJvdW5kIHRoZSBmYWN0IHRoYXQgPGNvZGU+JnF1b3Q7 JnF1b3Q7PC9jb2RlPiAoYXMgYSB2YXJpYWJsZSBuYW1lKSBpcyBub3QgZW1wdHksIGl0JiM4 MjE3O3MgaW52YWxpZCkuIFRvIGdldCByb3VuZCB0aGlzIHlvdSBtYXkgdXNlIDxzcGFuIGNs YXNzPSJjYXBzIj5OVUxMPC9zcGFuPiBhcyBhIHBsYWNlaG9sZGVyIGFuZCBtb3ZlIHRoZSB0 aGluZyB5b3Ugd2FudCB0byBjaGVjayBpbnRvIHRoZSA8Y29kZT52YWx1ZTwvY29kZT4gaW5z dGVhZCwgZS5nOjwvcD4KCgk8cD48Y29kZT4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDtO VUxMJnF1b3Q7IG9wZXJhdG9yPSZxdW90O2VxJnF1b3Q7IHZhbHVlPSZxdW90O3tyZXN1bHR9 JnF1b3Q7Jmd0OzwvY29kZT48L3A+CgoJPHA+d2lsbCB0ZXN0IHRoZSA8c3BhbiBjbGFzcz0i Y2FwcyI+TlVMTDwvc3Bhbj4gb2JqZWN0IChpLmUuICYjODIxNjtlbXB0aW5lc3MmIzgyMTc7 KSB0byBzZWUgaWYgaXQmIzgyMTc7cyBlcXVhbCB0byB0aGUgPGNvZGU+e3Jlc3VsdH08L2Nv ZGU+IHJlcGxhY2VtZW50IHZhcmlhYmxlLiBZb3UgY2FuIHVzZSBzaW1pbGFyIGxvZ2ljIHRv IHRlc3QgZm9yIG9wdGlvbmFsIHZhcmlhYmxlcyBieSBzd2FwcGluZyB0aGUgZmllbGQgYW5k IHZhbHVlLCBsaWtlIHRoaXM6PC9wPgoKCTxwPjxjb2RlPiZsdDt0eHA6c21kX2lmIGZpZWxk PSZxdW90OzcmcXVvdDsgb3BlcmF0b3I9JnF1b3Q7Z3QmcXVvdDsgdmFsdWU9JnF1b3Q7e3Jl c3VsdH0mcXVvdDsmZ3Q7PC9jb2RlPjwvcD4KCgk8cD5UaGF0IHdvdWxkIHNlZSBpZiB0aGUg cmVwbGFjZW1lbnQgdmFyaWFibGUgPGNvZGU+e3Jlc3VsdH08L2NvZGU+IHdhcyBsZXNzIHRo YW4gb3IgZXF1YWwgdG8gNyAodGhhdCYjODIxNztzIG5vdCBhIHR5cG8sIHRoZSBsb2dpYyBp cyByZXZlcnNlZCBpbiB0aGlzIGNhc2U6IGl0IGlzIGludGVycHJldGVkIGFzOiAmIzgyMjA7 aXMgNyBncmVhdGVyIHRoYW4ge3Jlc3VsdH0mIzgyMjE7LCB3aGljaCBpcyB0aGUgc2FtZSBh cyAmIzgyMjA7aXMge3Jlc3VsdH0gbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDcmIzgyMjE7ISk8 L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJvcGVyYXRvciI+b3BlcmF0b3I8L2g0 PgoKCTxwPkxpc3Qgb2Ygb3BlcmF0b3JzIHRvIGFwcGx5LCBpbiBvcmRlciwgdG8gZWFjaCBm aWVsZC4gQ2hvb3NlIGZyb206PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+ZXE8L2NvZGU+IEVx dWFsICh0aGUgZGVmYXVsdCBmb3IgYWxsIGV4Y2VwdCAmIzgyMTY7cGFyZW50JiM4MjE3Oyk8 L2xpPgoJCTxsaT48Y29kZT5ub3Q8L2NvZGU+IE5vdCBlcXVhbDwvbGk+CgkJPGxpPjxjb2Rl Pmx0PC9jb2RlPiBMZXNzIHRoYW48L2xpPgoJCTxsaT48Y29kZT5ndDwvY29kZT4gR3JlYXRl ciB0aGFuPC9saT4KCQk8bGk+PGNvZGU+bGU8L2NvZGU+IExlc3MgdGhhbiBvciBlcXVhbCB0 bzwvbGk+CgkJPGxpPjxjb2RlPmdlPC9jb2RlPiBHcmVhdGVyIHRoYW4gb3IgZXF1YWwgdG88 L2xpPgoJCTxsaT48Y29kZT5pbjwvY29kZT4gRmllbGQgaXMgb25lIG9mIGEgbGlzdCBvZiB2 YWx1ZXM8L2xpPgoJCTxsaT48Y29kZT5ub3RpbjwvY29kZT4gRmllbGQgaXMgbm90IG9uZSBv ZiB0aGUgZ2l2ZW4gbGlzdCBvZiB2YWx1ZXM8L2xpPgoJCTxsaT48Y29kZT5iZWdpbnM8L2Nv ZGU+IEZpZWxkIGJlZ2lucyB3aXRoIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVyczwvbGk+CgkJ PGxpPjxjb2RlPmNvbnRhaW5zPC9jb2RlPiBGaWVsZCBjb250YWlucyBhIHNlcXVlbmNlIG9m IGNoYXJhY3RlcnMgKGRlZmF1bHQgZm9yICYjODIxNjtwYXJlbnQmIzgyMTc7KTwvbGk+CgkJ PGxpPjxjb2RlPmVuZHM8L2NvZGU+IEZpZWxkIGVuZHMgd2l0aCBhIHNlcXVlbmNlIG9mIGNo YXJhY3RlcnM8L2xpPgoJCTxsaT48Y29kZT5pc2VtcHR5PC9jb2RlPiBGaWVsZCBpcyBlbXB0 eSAoY29udGFpbnMgbm90aGluZyk8L2xpPgoJCTxsaT48Y29kZT5pc3VzZWQ8L2NvZGU+IEZp ZWxkIGhhcyBzb21lIHZhbHVlPC9saT4KCQk8bGk+PGNvZGU+ZGVmaW5lZDwvY29kZT4gRmll bGQgaXMgc2V0ICh1c2VmdWwgd2l0aCB1cmx2YXIgdmFyaWFibGVzKTwvbGk+CgkJPGxpPjxj b2RlPnVuZGVmaW5lZDwvY29kZT4gRmllbGQgaXMgbm90IHNldCwgb3IgbWlzc2luZyBmcm9t IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lPC9saT4KCQk8bGk+PGNv ZGU+aXNudW08L2NvZGU+IEZpZWxkIGlzIGEgbnVtYmVyPC9saT4KCQk8bGk+PGNvZGU+aXNh bHBoYTwvY29kZT4gRmllbGQgY29udGFpbnMgY2hhcmFjdGVycyBvbmx5PC9saT4KCQk8bGk+ PGNvZGU+aXNhbG51bTwvY29kZT4gRmllbGQgY29udGFpbnMgYWxwaGFudW1lcmljIGNoYXJh Y3RlcnMgb25seTwvbGk+CgkJPGxpPjxjb2RlPmlzbG93ZXI8L2NvZGU+IEV2ZXJ5IGNoYXJh Y3RlciBpbiB0aGUgZmllbGQgaXMgbG93ZXIgY2FzZTwvbGk+CgkJPGxpPjxjb2RlPmlzdXBw ZXI8L2NvZGU+IEV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgZmllbGQgaXMgdXBwZXIgY2FzZTwv bGk+CgkJPGxpPjxjb2RlPmlzcHVuY3Q8L2NvZGU+IEV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUg ZmllbGQgaXMgc29tZSBwdW5jdHVhdGlvbiBtYXJrPC9saT4KCQk8bGk+PGNvZGU+aXNzcGFj ZTwvY29kZT4gRXZlcnkgY2hhcmFjdGVyIGluIHRoZSBmaWVsZCBpcyBhIHdoaXRlc3BhY2Ug Y2hhcmFjdGVyIChvciB0YWIsIG5ld2xpbmUsIGV0Yyk8L2xpPgoJPC91bD4KCgk8cD5XaXRo IHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycyAocHJpbWFyaWx5IGd0LCBsdCwgZ2UsIGxlKSB5 b3UgbWF5IGZpbmQgb2RkIGJlaGF2aW91ciB3aGVuIGNvbXBhcmluZyBudW1iZXJzLiBGb3Ig ZXhhbXBsZSwgPGNvZGU+dXJsdmFyOnBpYyBndCA2PC9jb2RlPiB3aWxsIHJldHVybiA8c3Bh biBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj4gaWYgPGNvZGU+cGljPC9jb2RlPiBpcyBzZXQg dG8gJiM4MjIwO2ZyZWQmIzgyMjE7LiBUaGlzIGlzIGJlY2F1c2UgdGhlIHdvcmQgJiM4MjIw O2ZyZWQmIzgyMjE7IChvciBhdCBsZWFzdCB0aGUgJiM4MjIwO2NoYXJhY3RlciBmJiM4MjIx OykgaXMgZ3JlYXRlciBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkFTQ0lJPC9zcGFuPiB0 YWJsZSB0aGFuIHRoZSAmIzgyMjA7Y2hhcmFjdGVyIDYmIzgyMjE7LjwvcD4KCgk8cD5UbyBj aXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgeW91IG1heSBhcHBlbmQgPGNvZGU+Ok5VTTwvY29k ZT4gdG8gdGhlIGVuZCBvZiBhbnkgb2YgdGhlc2Ugb3BlcmF0b3JzIHRvIGZvcmNlIHRoZSBw bHVnaW4gdG8gY2hlY2sgdGhhdCB0aGUgdmFsdWVzIGFyZSBpbnRlZ2Vycy48L3A+CgoJPHA+ SWYgeW91IHdpc2ggdG8gY29tcGFyZSB0aGUgbGVuZ3RoIG9mIGEgZmllbGQgb3IgdmFsdWUs IGFwcGVuZCA8Y29kZT46TEVOPC9jb2RlPiB0byBhbnkgb2YgdGhlIG51bWVyaWNhbCBjb21w YXJpc29uIG9wZXJhdG9ycy4gSXQgZG9lc24mIzgyMTc7dCBtYWtlIHNlbnNlIHRvIHVzZSBi b3RoIDxjb2RlPjpOVU08L2NvZGU+IGFuZCA8Y29kZT46TEVOPC9jb2RlPiB0b2dldGhlciwg c28gdGhleSBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLjwvcD4KCgk8cD5UaGUgPGNvZGU+YmVn aW5zPC9jb2RlPiwgPGNvZGU+ZW5kczwvY29kZT4gYW5kIDxjb2RlPmNvbnRhaW5zPC9jb2Rl PiBvcGVyYXRvcnMsIGFsb25nIHdpdGggYW55IG9mIHRoZSA8Y29kZT5pczwvY29kZT4gb3Bl cmF0b3JzIChleGNlcHQgPGNvZGU+aXNzcGFjZTwvY29kZT4pLCBjYW4gdGFrZSBhbiBleHRy YSBwYXJhbWV0ZXIgYXMgd2VsbC4gU2luY2UgdGhleSBjb21wYXJlIGV2ZXJ5IGNoYXJhY3Rl ciBhZ2FpbnN0IHRoZSBnaXZlbiBiZWhhdmlvdXIsIHNwYWNlIGNoYXJhY3RlcnMgY2FuIG1l c3MgdGhpbmdzIHVwIGEgYml0LiBGb3IgZXhhbXBsZSA8Y29kZT5maWVsZD0mcXVvdDtjdXN0 b20xJnF1b3Q7IG9wZXJhdG9yPSZxdW90O2lzbG93ZXImcXVvdDs8L2NvZGU+IHdpbGwgZmFp bCBpZiBjdXN0b20xIGNvbnRhaW5zICYjODIyMDt0aGlzIGlzIGEgdGVzdCYjODIyMTsuIE9y IGNvbXBhcmluZyBzb21ldGhpbmcgdG8gPGNvZGU+Ym9keTwvY29kZT4gY2FuIGZhaWwgYmVj YXVzZSB0aGUgYm9keSBvZnRlbiBzdGFydHMgd2l0aCBhIG51bWJlciBvZiBzcGFjZSBjaGFy YWN0ZXJzLiBUbyBjaXJjdW12ZW50IHRoaXMsIGFkZCA8Y29kZT46Tk9TUEFDRTwvY29kZT4g dG8gdGhlIG9wZXJhdG9yIHdoaWNoIHdpbGwgcmVtb3ZlIGFsbCBzcGFjZXMgZnJvbSB0aGUg c3RyaW5nIGJlZm9yZSB0ZXN0aW5nIGl0LjwvcD4KCgk8cD5Ob3RlIGFsc28gdGhhdCB3aGls ZSA8Y29kZT5kZWZpbmVkPC9jb2RlPiBhbmQgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBkaWZm ZXIgc2VtYW50aWNhbGx5IGZyb20gPGNvZGU+aXN1c2VkPC9jb2RlPiBhbmQgPGNvZGU+aXNl bXB0eTwvY29kZT4gKHJlc3BlY3RpdmVseSksIHRoZSB3YXkgPHNwYW4gY2xhc3M9ImNhcHMi PlRYUDwvc3Bhbj4gYXNzaWducyB2YXJpYWJsZXMgbWVhbnMgdGhhdCwgZm9yIHRoZSBtb3N0 IHBhcnQsIHRoZSB0ZXJtcyBhcmUgaW50ZXJjaGFuZ2VhYmxlLiBXaGVuIGRlYWxpbmcgd2l0 aCB1cmx2YXJzIGFuZCBzdnJ2YXJzLCB0aGUgdHdvIHNldHMgb2Ygb3BlcmF0b3JzIGJlaGF2 ZSBpbmRlcGVuZGVudGx5LCBhcyB5b3Ugd291bGQgZXhwZWN0LiBTZWUgPGEgaHJlZj0iI2Vn NSI+RXhhbXBsZSA1PC9hPiBmb3IgbW9yZS4gTmVpdGhlciA8Y29kZT5kZWZpbmVkPC9jb2Rl PiBub3IgPGNvZGU+dW5kZWZpbmVkPC9jb2RlPiBtYWtlIHNlbnNlIHdpdGggPGNvZGU+cGFy ZW50PC9jb2RlPiwgc28gdGhleSBhcmUgZm9yYmlkZGVuLjwvcD4KCgk8aDQgY2xhc3M9ImF0 dC1uYW1lICIgaWQ9InZhbHVlIj52YWx1ZTwvaDQ+CgoJPHA+TGlzdCBvZiB2YWx1ZXMgdG8g Y29tcGFyZSBlYWNoIGZpZWxkIGluIHR1cm4gdG8uIENhbiBiZSBzdGF0aWMgdmFsdWVzL3Rl eHQgb3IgdGhlIG5hbWUgb2YgYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZp ZWxkLCBsaWtlIHRob3NlIGdpdmVuIGluIDxhIGhyZWY9IiNmaWVsZCI+ZmllbGQ8L2E+IChl eGNlcHQgJiM4MjIwO3BhcmVudCYjODIyMTspLjwvcD4KCgk8cD5UbyBkaXN0aW5ndWlzaCBh IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkIGZyb20gc3RhdGljIHRleHQs IHByZWZpeCB0aGUgZmllbGQgbmFtZSB3aXRoIDxjb2RlPj88L2NvZGU+LiBGb3IgZXhhbXBs ZTogPGNvZGU+dmFsdWU9JnF1b3Q7dGl0bGUmcXVvdDs8L2NvZGU+IHdpbGwgY29tcGFyZSB5 b3VyIGNob3NlbiBmaWVsZCBhZ2FpbnN0IHRoZSB3b3JkICYjODIyMDt0aXRsZSYjODIyMTss IHdoZXJlYXMgPGNvZGU+dmFsdWU9JnF1b3Q7P3RpdGxlJnF1b3Q7PC9jb2RlPiB3aWxsIGNv bXBhcmUgeW91ciBmaWVsZCBhZ2FpbnN0IHRoZSBjdXJyZW50IGFydGljbGUmIzgyMTc7cyB0 aXRsZS48L3A+CgoJPHA+SWYgeW91IHdpc2ggdG8gY29tcGFyZSBhIHZhbHVlIHRoYXQgbWln aHQgY29udGFpbiA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gKGUuZyA8Y29kZT4/ Ym9keTwvY29kZT4pLCBhZGQgdGhlIG1vZGlmaWVyIDxjb2RlPjpOT1RBR1M8L2NvZGU+IHRv IHRoZSBlbmQgb2YgdGhlIHZhbHVlLiBJdCB3aWxsIGhhdmUgYW55IDxzcGFuIGNsYXNzPSJj YXBzIj5IVE1MPC9zcGFuPiBhbmQgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gdGFn cyBzdHJpcHBlZCBmcm9tIGl0IGFuZCB3aWxsIGFsc28gYmUgdHJpbW1lZCB0byByZW1vdmUg bGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzLjwvcD4KCgk8cD5Ob3RlIHRoYXQgeW91IG1h eSBmaW5kIHVzaW5nIGRvdWJsZS1xdW90ZXMgaW4gZmllbGRzIGdpdmVzIHVuZXhwZWN0ZWQg cmVzdWx0cy4gVGhleSBhcmUgYmVzdCBhdm9pZGVkLCBvciB3b3JrZWQgYXJvdW5kIGJ5IHVz aW5nIDxjb2RlPmNvbnRhaW5zPC9jb2RlPiBpbnN0ZWFkIG9mIDxjb2RlPmVxPC9jb2RlPi48 L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJsb2dpYyI+bG9naWM8L2g0PgoKCTxw PkNhbiBiZSBvbmUgb2YgPGNvZGU+YW5kPC9jb2RlPiAodGhlIGRlZmF1bHQpIG9yIDxjb2Rl Pm9yPC9jb2RlPi4gSWYgdXNpbmcgPGNvZGU+YW5kPC9jb2RlPiwgYWxsIGNvbmRpdGlvbnMg bXVzdCBiZSBtZXQgZm9yIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IHJlc3Vs dC4gSWYgdXNpbmcgPGNvZGU+b3I8L2NvZGU+LCBhbnkgb2YgdGhlIGNvbmRpdGlvbnMgdGhh dCBtYXRjaCB3aWxsIGdpdmUgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj4gcmVz dWx0LjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9ImNhc2VzZW5zZSI+Y2FzZV9z ZW5zaXRpdmU8L2g0PgoKCTxwPkJ5IGRlZmF1bHQsIGFsbCBjb21wYXJpc29ucyBhcmUgY2Fz ZS1pbnNlbnNpdGl2ZSAoMCkuIElmIHlvdSB3aXNoIHRvIG1ha2UgdGhlbSBzZW5zaXRpdmUg dG8gY2FwdGlsaXNhdGlvbiwgc3BlY2lmeSA8Y29kZT5jYXNlX3NlbnNpdGl2ZT0mcXVvdDsx JnF1b3Q7PC9jb2RlPi4gTm90ZSB0aGF0IGlmIHVzaW5nIDxjb2RlPmlzbG93ZXI8L2NvZGU+ IG9yIDxjb2RlPmlzdXBwZXI8L2NvZGU+IGluIGEgY29tcGFyaXNvbiwgY2FzZSBzZW5zaXRp dml0eSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc3dpdGNoZWQgb24gd2hpbGUgdGhlIHRlc3Qg aXMgdGFraW5nIHBsYWNlLjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9InBhcmFt ZGVsaW0iPnBhcmFtX2RlbGltPC9oND4KCgk8cD5Zb3Ugbm9ybWFsbHkgc3BlY2lmeSBjb21t YS1zZXBhcmF0ZWQgbGlzdHMgdG8gdGhlIDxjb2RlPmZpZWxkPC9jb2RlPiwgPGNvZGU+b3Bl cmF0b3I8L2NvZGU+IGFuZCA8Y29kZT52YWx1ZTwvY29kZT4gcGFyYW1ldGVycy4gU29tZXRp bWVzIHRoaXMgbWlnaHQgbm90IGJlIGRlc2lyYWJsZSBpZiB5b3UgaGF2ZSB1c2VkIHRoYXQg Y2hhcmFjdGVyIGluIHRoZSBuYW1lIG9mIGEgY3VzdG9tIGZpZWxkLCBmb3IgZXhhbXBsZS4g VGhpcyBvcHRpb24gYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIGRlbGltaXRlciB0byBhbG1v c3QgYW55dGhpbmcgeW91IGxpa2UsIGUuZy4gc3BlY2lmeWluZyA8Y29kZT5wYXJhbV9kZWxp bT0mcXVvdDsvLyZxdW90OzwvY29kZT4gbWVhbnMgeW91IHdvdWxkIHNwZWNpZnkgPGVtPmFs bDwvZW0+IHlvdXIgcGFyYW1ldGVyIGxpc3RzIGxpa2UgdGhpczo8L3A+CgoJPHA+PGNvZGU+ ZmllbGQ9JnF1b3Q7c2VjdGlvbiAvLyB1cmx2YXI6dHlwZSZxdW90OyBvcGVyYXRvcj0mcXVv dDtlcSAvLyBiZWdpbnMmcXVvdDsgdmFsdWU9JnF1b3Q7YW5pbWFscyAvLyB0aWdlciZxdW90 OzwvY29kZT48L3A+CgoJPGg0IGNsYXNzPSJhdHQtbmFtZSAiIGlkPSJtb2RkZWxpbSI+bW9k X2RlbGltPC9oND4KCgk8cD5WZXJ5IHNpbWlsYXIgdG8gPGEgaHJlZj0iI3BhcmFtZGVsaW0i PnBhcmFtX2RlbGltPC9hPiwgdGhpcyBnb3Zlcm5zIHRoZSBkZWxpbWl0ZXIgdG8gdXNlIGJl dHdlZW4gYW4gb3B0aW9uIGFuZCBpdHMgbW9kaWZpZXIgKGUuZy4gdGhlIHRoaW5nIHNlcGFy YXRpbmcgdXJsdmFyLCBzdnJ2YXIgb3IgdHhwdmFyIGZyb20gdGhlIHZhcmlhYmxlIG5hbWUs IG9yIHBhcmVudCBmcm9tIDxjb2RlPkxWTDwvY29kZT4gYW5kIDxjb2RlPkNBVDwvY29kZT4s IGFuZCBhbHNvIHRoZSBjaGFyYWN0ZXIocykgdGhhdCBzZXBhcmF0ZSBhbiBvcGVyYXRvciBm cm9tIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+TlVNPC9zcGFuPiBvciA8c3BhbiBjbGFzcz0i Y2FwcyI+Tk9TUEFDRTwvc3Bhbj4gbW9kaWZpZXJzKS4gSXQgaXMgdGhlIGNvbG9uICg6KSBi eSBkZWZhdWx0LjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1uYW1lICIgaWQ9Im1vZGRlbGltIj5s aXN0X2RlbGltPC9oND4KCgk8cD5Gb3IgdXNlIHdpdGggdGhlIDxjb2RlPmluPC9jb2RlPiBh bmQgPGNvZGU+bm90aW48L2NvZGU+IG9wZXJhdG9ycywgdGhpcyBpcyB0aGUgZGVsaW1pdGVy IGJldHdlZW4gdmFsdWVzLiBJdCBpcyB0aGUgZm9yd2FyZC1zbGFzaCAoLykgYnkgZGVmYXVs dC4gQSBjb250cml2ZWQgZXhhbXBsZTo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6c21kX2lm IGZpZWxkPSZxdW90O3R4cHZhcjpsZXZlbCZxdW90OyBvcGVyYXRvcj0mcXVvdDtpbiZxdW90 OyB2YWx1ZT0mcXVvdDsxLzIvMy81LzgvMTMvMjEvMzQmcXVvdDsmZ3Q7CiAgJmx0O3AmZ3Q7 UmVzdWx0IGlzIGEgRmlib25hY2NpIHZhbHVlISZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lm Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IGluIGFsbCAmIzgyMTY7ZGVsaW0m IzgyMTc7IGF0dHJpYnV0ZXMsIHNvbWUgY2hhcmFjdGVyIHNlcXVlbmNlcyBtYXkgY2F1c2Ug cHJvYmxlbXMgKHF1b3RlcyAmIzgyMTI7IHNpbmdsZSBvciBkb3VibGUgJiM4MjEyOyBzcHJp bmcgdG8gbWluZDsgb3RoZXJzIGxpa2UgcGFyZW50aGVzZXMgbWF5IGFsc28gY2F1c2UgdGhl IHBsdWdpbiB0byBleHBsb2RlKS48L3A+CgoJPGgzPlJlcGxhY2VtZW50IHRhZ3M8L2gzPgoK CTxwPkV2ZXJ5IGZpZWxkIG9yIHZhbHVlIHRoYXQgeW91IHJlZmVyIHRvIGluIHlvdXIgc21k X2lmIHRhZyBiZWNvbWVzIGF2YWlsYWJsZSB3aXRoaW4gdGhlIGNvbnRhaW5pbmcgYmxvY2sg c28geW91IGNhbiBkaXNwbGF5IGl0cyBjb250ZW50cyBpZiB5b3Ugd2lzaC4gTW9zdCBvZiB0 aGUgdGltZSB0aGlzIGlzIG5vdCBtdWNoIHVzZSBidXQgaXQgY2FuIGJlIHZlcnkgdXNlZnVs IHdpdGggdGhlIDxjb2RlPmluPC9jb2RlPiBvcGVyYXRvci4gRm9yIGluc3RhbmNlLCBpZiB5 b3UgaGF2ZSBhc2tlZCBzbWRfaWYgdG8gdGVzdCB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4gdmFyaWFibGUgbmFtZWQgJiM4MjE2O2xldmVsJiM4MjE3OyBhbmQgdG9sZCBp dCB0byBjb21wYXJlIGl0IHRvIHRoZSBjdXN0b20gZmllbGQgbGFiZWxsZWQgJiM4MjE2O2Fs bG93YWJsZV9sZXZlbHMmIzgyMTc7LCB0d28gdGFncyBiZWNvbWUgYXZhaWxhYmxlIHdoaWNo IHlvdSBjYW4gdXNlIHdpdGhpbiB0aGUgY29udGFpbmluZyBibG9jazo8L3A+CgoJPHVsPgoJ CTxsaT48Y29kZT57c21kX2lmX2xldmVsfTwvY29kZT4gd291bGQgZGlzcGxheSB0aGUgdmFs dWUgb2YgdGhlICYjODIxNjtsZXZlbCYjODIxNzsgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gdmFyaWFibGU8L2xpPgoJCTxsaT48Y29kZT57c21kX2lmX2FsbG93YWJsZV9sZXZl bHN9PC9jb2RlPiB3b3VsZCBkaXNwbGF5IHRoZSBjb250ZW50cyBvZiB0aGUgY3VycmVudCBh cnRpY2xlJiM4MjE3O3MgY3VzdG9tIGZpZWxkPC9saT4KCTwvdWw+CgoJPHA+VGhlIHJlcGxh Y2VtZW50IHRhZ3MgYXJlIGFsd2F5cyBwcmVmaXhlZCB3aXRoIDxjb2RlPnNtZF9pZl88L2Nv ZGU+IHNvIHRoZXkgZG9uJiM4MjE3O3QgY2xhc2ggd2l0aCB0aGUgb25lcyBpbiBzbWRfZ2Fs bGVyeSAoZm9yIGV4YW1wbGUsIHdoZW4gdXNpbmcgc21kX2lmIGluc2lkZSBhbiBzbWRfZ2Fs bGVyeSB0YWcpLiBJZiB5b3UgYXJlIGNvbXBhcmluZyBhIGZpeGVkLXZhbHVlIGZpZWxkIChz dWNoIGFzIDxjb2RlPmZpZWxkPSZxdW90O05VTEwmcXVvdDs8L2NvZGU+IG9yIDxjb2RlPnZh bHVlPSZxdW90OzEyJnF1b3Q7PC9jb2RlPiBvciBzbWRfZ2FsbGVyeSYjODIxNztzIDxjb2Rl PnZhbHVlPSZxdW90O3tjYXRlZ29yeX0mcXVvdDs8L2NvZGU+KSB0aGUgbmFtZSBvZiB0aGUg cmVwbGFjZW1lbnQgdGFncyBhcmUgPGNvZGU+e3NtZF9pZl9maWVsZH08L2NvZGU+IGZvciBm aWVsZHMgYW5kIDxjb2RlPntzbWRfaWZfdmFsfTwvY29kZT4gZm9yIHZhbHVlcy48L3A+CgoJ PHA+VGhlcmUgYXJlIGFsc28gdHdvICYjODIxNjtsZW5ndGgmIzgyMTc7IHJlcGxhY2VtZW50 IHRhZ3MuIEZvbGxvd2luZyBhIHNpbWlsYXIgY29udmVudGlvbiB0byBhYm92ZSwgdGhlc2Ug YXJlIHByZWZpeGVkIHdpdGggPGNvZGU+c21kX2lmX2xlbl88L2NvZGU+LiBJZiB5b3UgZ2V0 IHN0dWNrLCB0ZW1wb3JhcmlseSBzd2l0Y2ggPGNvZGU+ZGVidWc9JnF1b3Q7MSZxdW90Ozwv Y29kZT4gb24gdG8gc2VlIHRoZSByZXBsYWNlbWVudHMgYXZhaWxhYmxlIGFuZCB0aGVpciBh c3NvY2lhdGVkIG5hbWVzL3ZhbHVlcy48L3A+CgoJPHA+U2VlIDxhIGhyZWY9IiNlZzgiPkV4 YW1wbGUgODwvYT4gZm9yIG1vcmUuPC9wPgoKCTxoMj5FeGFtcGxlczwvaDI+CgoJPGgzIGlk PSJlZzEiPkV4YW1wbGUgMTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDtzZWN0aW9uLCBpZCZxdW90Owog ICAgIG9wZXJhdG9yPSZxdW90O2JlZ2lucywgZ3QmcXVvdDsKICAgICB2YWx1ZT0mcXVvdDts aW9uLCAxMiZxdW90OyZndDsKICZsdDt0eHA6YXJ0aWNsZSAvJmd0OwombHQ7dHhwOmVsc2Ug LyZndDsKICZsdDtwJmd0O05vdCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0OwombHQ7L3R4cDpz bWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5DaGVja3MgaWYgdGhlIGN1cnJlbnQgc2Vj dGlvbiBuYW1lIGJlZ2lucyB3aXRoIHRoZSB3b3JkICYjODIyMDtsaW9uJiM4MjIxOyBhbmQg dGhlIGFydGljbGUgSUQgaXMgZ3JlYXRlciB0aGFuIDEyLiBEaXNwbGF5cyB0aGUgYXJ0aWNs ZSBpZiBib3RoIGNvbmRpdGlvbnMgYXJlIG1ldCBvciBkaXNwbGF5cyB0aGUgdGV4dCAmIzgy MjA7Tm90IHRvZGF5LCB0aGFua3MmIzgyMjE7IGlmIG5vdC48L3A+CgoJPGgzIGlkPSJlZzIi PkV4YW1wbGUgMjwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDtzdW1tYXJ5LCBjYXRlZ29yeSwgdXJsdmFy OnBpYyZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2lzdXNlZCwgZXEsIGlzbnVtJnF1b3Q7 CiAgICAgdmFsdWU9JnF1b3Q7LCBhbmltYWwgLCZxdW90OyAmZ3Q7CiAmbHQ7dHhwOmFydGlj bGUgLyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAmbHQ7cCZndDtOb3QgdG9kYXksIHRoYW5r cyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Q2hl Y2tzIGlmIHRoZSBjdXN0b20gZmllbGQgbGFiZWxsZWQgJiM4MjIwO3N1bW1hcnkmIzgyMjE7 IGhhcyBzb21lIGRhdGEgaW4gaXQsIGNoZWNrcyBpZiB0aGUgZ2xvYmFsIGNhdGVnb3J5IGVx dWFscyAmIzgyMjA7YW5pbWFsJiM4MjIxOyBhbmQgdGVzdHMgaWYgdGhlIHVybHZhciA8Y29k ZT5waWM8L2NvZGU+IGlzIG51bWVyaWMgKGUuZy4gPGNvZGU+P3BpYz01PC9jb2RlPikuPC9w PgoKCTxwPklmIGFsbCB0aGVzZSBjb25kaXRpb25zIGFyZSBtZXQgdGhlIGFydGljbGUgaXMg ZGlzcGxheWVkLCBlbHNlIHRoZSBtZXNzYWdlIGlzIHNob3duLiBOb3RlIHRoYXQgPGNvZGU+ aXN1c2VkPC9jb2RlPiBhbmQgPGNvZGU+aXNudW08L2NvZGU+IGRvbiYjODIxNzt0IHRha2Ug YXJndW1lbnRzIGZvciA8Y29kZT52YWx1ZTwvY29kZT4gYW5kIHRoZWlyIHBvc2l0aW9ucyBh cmUgaGVsZCBieSBlbXB0eSBjb21tYXMgKHRlY2huaWNhbGx5IHRoZSBsYXN0IGNvbW1hIGlz biYjODIxNzt0IG5lZWRlZCBidXQgaXQgaGVscHMga2VlcCBldmVyeXRoaW5nIG5lYXQgaWYg eW91IGFkZCBmdXJ0aGVyIHRlc3RzIGxhdGVyIG9uKS48L3A+CgoJPGgzIGlkPSJlZzMiPkV4 YW1wbGUgMzwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4m bHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDthcnRpY2xlX2ltYWdlLCBzdnJ2YXI6SFRUUF9V U0VSX0FHRU5UJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7ZXEsIGNvbnRhaW5zJnF1b3Q7 CiAgICAgdmFsdWU9JnF1b3Q7dXJsdmFyOnBpYywgU2FmYXJpJnF1b3Q7CiAgICAgbG9naWM9 JnF1b3Q7b3ImcXVvdDsmZ3Q7CiAmbHQ7dHhwOmFydGljbGUgLyZndDsKJmx0O3R4cDplbHNl IC8mZ3Q7CiAmbHQ7cCZndDtOb3QgdG9kYXksIHRoYW5rcyZsdDsvcCZndDsKJmx0Oy90eHA6 c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Q29tcGFyZXMgKGZvciBlcXVhbGl0eSkg dGhlIGN1cnJlbnQgYXJ0aWNsZSBpbWFnZSBpZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgdXJs IHZhcmlhYmxlIDxjb2RlPnBpYzwvY29kZT4gYW5kIGNoZWNrcyBpZiB0aGUgdmFsdWUgb2Yg dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5IVFRQPC9zcGFuPl9VU0VSX0FHRU5UIHN0cmluZyBj b250YWlucyAmIzgyMjA7U2FmYXJpJiM4MjIxOy4gVGhpcyBleGFtcGxlIHVzZXMgdGhlICYj ODIxNjtvciYjODIxNzsgbG9naWMsIGhlbmNlIGlmIDxlbT5laXRoZXI8L2VtPiBjb25kaXRp b24gaXMgbWV0IHRoZSBhcnRpY2xlIGlzIHNob3duLCBvdGhlcndpc2UgdGhlICYjODIxNjtu b3QgdG9kYXkmIzgyMTc7IG1lc3NhZ2UgaXMgZGlzcGxheWVkLjwvcD4KCgk8aDMgaWQ9ImVn NCI+RXhhbXBsZSA0PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3BhcmVudDpMVkwyJnF1b3Q7CiAgICAg b3BlcmF0b3I9JnF1b3Q7ZXEmcXVvdDsKICAgICB2YWx1ZT0mcXVvdDttYW1tYWwmcXVvdDsm Z3Q7CiAmbHQ7dHhwOmFydGljbGUgLyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAmbHQ7cCZn dDtOb3QgdG9kYXksIHRoYW5rcyZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+Q2hlY2tzIHRoZSAybmQgc3ViLWNhdGVnb3J5IG9mIHRoZSBnbG9i YWwgY2F0ZWdvcnkmIzgyMTc7cyB0cmVlIHRvIHNlZSBpZiBpdCBlcXVhbHMgJiM4MjIwO21h bW1hbCYjODIyMTsuIElmIGl0IGRvZXMsIHNob3cgdGhlIGFydGljbGU7IGlmIG5vdCBzaG93 IHRoZSBtZXNzYWdlLiBSZW1vdmluZyB0aGUgPGNvZGU+OkxWTDI8L2NvZGU+ICh3aGljaCBh bGxvd3MgeW91IHRvIGFsc28gcmVtb3ZlIHRoZSBvcGVyYXRvciBwYXJhbWV0ZXIgdG8gZm9y Y2UgdGhlIGNvbXBhcmlzb24gdG8gYmUgdGhlIGRlZmF1bHQgJiM4MjIwO2NvbnRhaW5zJiM4 MjIxOykgY2hlY2tzIGlmIHRoZSBjdXJyZW50IGdsb2JhbCBjYXRlZ29yeSBpcyBhIGNoaWxk IG9mICYjODIxNjttYW1tYWwmIzgyMTc7IChhdCBhbnkgbGV2ZWwpLjwvcD4KCgk8cD5DaGFu Z2UgdGhlIGZpZWxkIHRvIDxjb2RlPnBhcmVudDpDQVQxPC9jb2RlPiB0byBzZWUgaWYgdGhl IGFydGljbGUmIzgyMTc7cyBjYXRlZ29yeTEgbWF0Y2hlcyAmIzgyMTY7bWFtbWFsJiM4MjE3 OyBhdCBhbnkgbGV2ZWwsIG9yIHVzZSA8Y29kZT5maWVsZD0mcXVvdDtwYXJlbnQ6Q0FUMTpM VkwyJnF1b3Q7PC9jb2RlPiB0byBjb21iaW5lIHRoZSBjaGVja3MuPC9wPgoKCTxoMyBpZD0i ZWc1Ij5FeGFtcGxlIDU8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7dXJsdmFyOnBpYywgdXJsdmFyOnBh Z2UmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtndDpOVU0sIHVuZGVmaW5lZCZxdW90Owog ICAgIHZhbHVlPSZxdW90Oz9hcnRpY2xlX2ltYWdlLCZxdW90OyZndDsKICZsdDt0eHA6YXJ0 aWNsZSAvJmd0OwombHQ7dHhwOmVsc2UgLyZndDsKICZsdDtwJmd0O05vdCB0b2RheSwgdGhh bmtzJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5U ZXN0cyBpZiB0aGUgdXJsIHZhcmlhYmxlIDxjb2RlPnBpYzwvY29kZT4gaXMgc3RyaWN0bHkg bnVtZXJpY2FsbHkgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBpbiB0aGUgY3VycmVudCBhcnRp Y2xlJiM4MjE3O3MgPGNvZGU+YXJ0aWNsZV9pbWFnZTwvY29kZT4gZmllbGQgYW5kIHRoYXQg dGhlIHVybCB2YXJpYWJsZSA8Y29kZT5wYWdlPC9jb2RlPiBpcyBtaXNzaW5nIGZyb20gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGFkZHJlc3MuIENvbXBhcmUgdGhlIG91 dGNvbWUgb2YgdGhpcyB0ZXN0IHdpdGggdGhlIG90aGVyIG9wZXJhdG9ycyB1c2luZyB0aGUg Zm9sbG93aW5nIHRhYmxlIHdoZW4gdGVzdGluZyB0aGUgPGNvZGU+cGFnZTwvY29kZT4gdXJs dmFyOjwvcD4KCgk8dGFibGU+CgkJPHRyPgoJCQk8dGg+PHNwYW4gY2xhc3M9ImNhcHMiPjxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+PC9zcGFuPiA8L3RoPgoJCQk8dGg+ZGVmaW5l ZCA8L3RoPgoJCQk8dGg+dW5kZWZpbmVkIDwvdGg+CgkJCTx0aD5pc3VzZWQgPC90aD4KCQkJ PHRoPmlzZW1wdHkgPC90aD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBpbmRleC5waHA/cGFn IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5G QUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxz cGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3Bh biBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4g PC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZB TFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPiBpbmRleC5w aHA/cGFnZT0gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9 ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJj YXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8 dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+ PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0i Y2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJPC90cj4KCQk8dHI+CgkJCTx0ZD4g aW5kZXgucGhwP3BhZ2U9NCA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3Bh biBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4g Y2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwv dGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5UUlVF PC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4g Y2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQk8L3RyPgoJPC90YWJs ZT4KCgk8aDMgaWQ9ImVnNiI+RXhhbXBsZSA2PC9oMz4KCgk8cD5QdXQgdGhpcyBpbnNpZGUg eW91ciA8Y29kZT5wbGFpbmxpbmtzPC9jb2RlPiBmb3JtIGFuZCBleGVjdXRlIGEgPGNvZGU+ Jmx0O3R4cDpsaW5rbGlzdCAvJmd0OzwvY29kZT4gZnJvbSBhbiBhcnRpY2xlIHBhZ2UvZm9y bTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9pZiBmaWVsZD0mcXVvdDtpZCwgaWQmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtn ZTpOVU0sIGxlOk5VTSZxdW90OwogICAgIHZhbHVlPSZxdW90O3VybHZhcjptaW4sIHVybHZh cjptYXgmcXVvdDsmZ3Q7CiAgJmx0O3R4cDpsaW5rZGVzY3RpdGxlIC8mZ3Q7Jmx0O2JyIC8m Z3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd2lsbCBs aXN0IG9ubHkgdGhlIGxpbmtzIHRoYXQgaGF2ZSBJRHMgYmV0d2VlbiB0aGUgPGNvZGU+bWlu PC9jb2RlPiBhbmQgPGNvZGU+bWF4PC9jb2RlPiB2YXJpYWJsZXMgc3BlY2lmaWVkIG9uIHRo ZSBhZGRyZXNzIGJhci48L3A+CgoJPGgzIGlkPSJlZzciPkV4YW1wbGUgNzwvaDM+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVs ZD0mcXVvdDt1cmx2YXI6cHJvZHVjdF9jb2RlJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7 aXNhbG51bSZxdW90OyZndDsKICAmbHQ7dHhwOm91dHB1dF9mb3JtIGZvcm09JnF1b3Q7c2hv d19wcm9kdWN0JnF1b3Q7IC8mZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7SW52 YWxpZCBwcm9kdWN0IGNvZGUmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPlRlc3RzIHRvIHNlZSBpZiB0aGUgcHJvZHVjdF9jb2RlIDxzcGFuIGNs YXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIGlzIGFscGhhbnVtZXJpYyBhbmQgZGlz cGxheXMgYSBmb3JtIGlmIHNvLjwvcD4KCgk8aDMgaWQ9ImVnOCI+RXhhbXBsZSA4PC9oMz4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lm IGZpZWxkPSZxdW90O3VybHZhcjpzb3J0X29yZGVyJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1 b3Q7aW4mcXVvdDsKICAgICB2YWx1ZT0mcXVvdDtpZC9wcmljZS9zaXplL2NvbG91ciZxdW90 OyZndDsKICAmbHQ7cCZndDtTb3J0aW5nIHZhbHVlcyBieSB7c21kX2lmX3NvcnRfb3JkZXJ9 Jmx0Oy9wJmd0OwogIC8vIERvIHNvbWUgc3R1ZmYKJmx0O3R4cDplbHNlIC8mZ3Q7CiAgLy8g VXNlIGEgZGVmYXVsdCBzb3J0LCBvciBzaG93IGFuIGVycm9yIGhlcmUKJmx0Oy90eHA6c21k X2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+QnkgdXNpbmcgdGhlIHJlcGxhY2VtZW50IHRh ZyB7c21kX2lmX3NvcnRfb3JkZXJ9IHlvdSBoYXZlIHBsdWNrZWQgdGhlIHZhbHVlIGZyb20g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGJhciBhbmQgaW5zZXJ0ZWQgaXQg aW50byB0aGUgYXJ0aWNsZS4gVXNlZnVsIHdoZW4gdXNpbmcgdGhlIDxjb2RlPmluPC9jb2Rl PiBvciA8Y29kZT5ub3RpbjwvY29kZT4gb3BlcmF0b3JzIGJlY2F1c2UsIGFsdGhvdWdoIHlv dSBrbm93IHRoYXQgdGhlIGZpZWxkIG1hdGNoZWQgb25lIG9mIHRoZSB2YWx1ZXMgaW4geW91 ciBsaXN0LCB5b3Ugd291bGQgb3RoZXJ3aXNlIG5vdCBrbm93IHdoaWNoIG9uZSBoYXMgYmVl biBnaXZlbiBvbiB0aGUgYWRkcmVzcyBiYXIuPC9wPgoKCTxoMyBpZD0iZWc5Ij5FeGFtcGxl IDk8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4 cDpwaHAmZ3Q7Cmdsb2JhbCAkYm9keWV4OwokYm9keWV4ID0gYm9keShhcnJheSgpKSAuIGV4 Y2VycHQoYXJyYXkoKSk7CiZsdDsvdHhwOnBocCZndDsKJmx0O3R4cDpzbWRfaWYgZmllbGQ9 JnF1b3Q7cGhwdmFyOmJvZHlleCZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2d0OkxFTiZx dW90OwogICAgIHZhbHVlPSZxdW90OzUwMCZxdW90OyZndDsKICAmbHQ7cCZndDtZb3UgYXJl IGEgYmlnIGJveSBhdCB7c21kX2lmX2xlbl9ib2R5ZXh9IGNoYXJhY3RlcnMgbG9uZyEmbHQ7 L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxoMiBjbGFzcz0i Y2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2gyPgoKCTx1bD4KCQk8bGk+MzAgRGVjIDA3IHwgMC4x IHwgSW5pdGlhbCByZWxlYXNlPC9saT4KCQk8bGk+MzAgRGVjIDA3IHwgMC4yIHwgQWRkZWQg cGFyZW50IGNhdGVnb3J5IGNoZWNraW5nICh0aGFua3MgdGhlX2dob3N0KTwvbGk+CgkJPGxp PjAyIEphbiAwOCB8IDAuMyB8IEFkZGVkIGRlZmluZWQvdW5kZWZpbmVkIGFuZCBzdHJpY3Qg bnVtZXJpYyBjb21wYXJpc29uczwvbGk+CgkJPGxpPjA2IEphbiAwOCB8IDAuNCB8IEFkZGVk IDxjb2RlPj88L2NvZGU+IG5vdGF0aW9uIHRvIGFsbG93IHRoZSB2YWx1ZSB0byByZWFkIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZpZWxkczsgYmV0dGVyIHF1b3RlIHN1cHBv cnQgKGJvdGggdGhhbmtzIE5laWxBKTwvbGk+CgkJPGxpPjA2IEphbiAwOCB8IDAuNDEgfCBG aXhlZCBsb3dlciBjYXNlIGZpZWxkIG5hbWVzIGFuZCB1bmRlZmluZWQgaW5kZXggZXJyb3Ig KHRoYW5rcyBwZXRlcmopPC9saT4KCQk8bGk+MTQgSmFuIDA4IHwgMC41IHwgQWRkZWQgY2Fz ZV9zZW5zaXRpdmUgb3B0aW9uOyBtYWRlICYjODIxNjtjb250YWlucyYjODIxNzsgdGhlIGRl ZmF1bHQgZm9yICYjODIxNjtwYXJlbnQmIzgyMTc7IHRlc3RzOyBpbXByb3ZlZCBoZWxwIChh bGwgdGhhbmtzIHRoZV9naG9zdCk7IGFkZGVkIGRlbGltIG9wdGlvbnM8L2xpPgoJCTxsaT4x NSBKYW4gMDggfCAwLjUxIHwgRml4ZWQgZGVmaW5lZC91bmRlZmluZWQgc3ludGF4IGVycm9y OyB0aWdodGVuZWQgaXN1c2VkL2lzZW1wdHkgdG8gZGlzdGluZ3Vpc2ggdGhlbSBmcm9tIGRl ZmluZWQvdW5kZWZpbmVkPC9saT4KCQk8bGk+MjUgTWF5IDA4IHwgMC42IHwgRml4ZWQgJiM4 MjE2O3VuZGVmaW5lZCBpbmRleCYjODIxNzsgZXJyb3JzICh0aGFua3MgcmVkYm90IGFuZCB0 aGVfZ2hvc3QpIDsgYWRkZWQgbW9yZSBwcmV0ZXh0IHZhcmlhYmxlcyA7IGFkZGVkIG1vcmUg PGNvZGU+aXM8L2NvZGU+IGNoZWNrcyAoYW5kIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Tk9T UEFDRTwvc3Bhbj4gbW9kaWZpZXIpIDsgYWxsb3dlZCBmaWxlIGFuZCBsaW5rIHRlc3RzIChp bmNsdWRpbmcgcGFyZW50IGNhdGVnb3JpZXMpPC9saT4KCQk8bGk+MjYgTWF5IDA4IHwgMC42 MSB8IEZpeGVkIHN0dXBpZCBvdmVyc2lnaHQgaW4gZmllbGQgbmFtZSBnZW5lcmF0aW9uIHRv IGFsbG93IGFyYml0cmFyeSBuYW1lcyBpbnN0ZWFkIG9mIGZvcmNpbmcgJHRoaXNhcnRpY2xl ICh0aGFua3MgdG8gSm9hbmEgQ2FydmFsaG8gZm9yIGxlYWRpbmcgbWUgdG8gdGhpcyk8L2xp PgoJCTxsaT4xMSBKdW4gMDggfCAwLjYyIHwgRml4ZWQgaW5jb3JyZWN0IHJlc3VsdCBpZiBl dmFsKCkgaXMgZW1wdHkgOyBhZGRlZCA8c3BhbiBjbGFzcz0iY2FwcyI+TlVMTDwvc3Bhbj4g ZmllbGQgb2JqZWN0PC9saT4KCQk8bGk+MTAgU2VwIDA4IHwgMC43IHwgRml4ZWQgd2Fybmlu ZyBpZiBlbXB0eSBjdXN0b20gZmllbGQgaW4gdmFsdWUgKHRoYW5rcyB2aXN1YWxwZW9wbGUp IDsgYWRkZWQgdHhwdmFyIHN1cHBvcnQgKHRoYW5rcyB0aGVfZ2hvc3QpIDsgYWRkZWQgdGhp c2ltYWdlIHN1cHBvcnQgKGZvciB0aGUgZnV0dXJlKSA7IGFkZGVkIG9wZXJhdG9ycyA8Y29k ZT5pbjwvY29kZT4sIDxjb2RlPm5vdGluPC9jb2RlPiBhbmQgdGhlIDxjb2RlPmxpc3RfZGVs aW08L2NvZGU+IGF0dHJpYnV0ZTsgZW5hYmxlZCByZXBsYWNlbWVudCB0YWdzIGZvciBtYXRj aGVkIHZhcmlhYmxlczwvbGk+CgkJPGxpPjAxIE9jdCAwOCB8IDAuNzEgfCBGaXhlZCB0aGUg Zml4IGZvciBlbXB0eSBjdXN0b20gZmllbGRzIGltcGxlbWVudGVkIGluIDAuNyAodGhhbmtz IG1hcHUvdmlzdWFscGVvcGxlKTwvbGk+CgkJPGxpPjAxIE9jdCAwOCB8IDAuNzIgfCBBZGRl ZCA8Y29kZT46Tk9UQUdTPC9jb2RlPiAodGhhbmtzIG1hcHUpPC9saT4KCQk8bGk+MTMgT2N0 IDA4IHwgMC43MyB8IEFkZGVkIDxjb2RlPjpOT1NQQUNFPC9jb2RlPiB0byA8Y29kZT5iZWdp bnM8L2NvZGU+LCA8Y29kZT5lbmRzPC9jb2RlPiBhbmQgPGNvZGU+Y29udGFpbnM8L2NvZGU+ ICh0aGFua3MgbWFwdSksIGFkZGVkIHBocHZhciBzdXBwb3J0LCA8Y29kZT46TEVOPC9jb2Rl PiBtb2RpZmllciBhbmQgbGVuZ3RoIHJlcGxhY2VtZW50IHRhZ3MgKGFsbCB0aGFua3MgdGhl X2dob3N0KTwvbGk+Cgk8L3VsPgoKCTxwPjwvZGl2PjwvcD4KPCEtLSAtLS0gQkVHSU4gUExV R0lOIENTUyAtLS0gLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxp bmUtaGVpZ2h0OjEuMyA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZv bnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tn cm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2Vp Z2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjog I2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5n OjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9y OiBibHVlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xp ZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9o ZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9y ZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRf aGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7 IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRl ci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMz Njk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBj b2xvcjogIzY5MzsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXIt c3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNh c2U7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7 IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3Jt OiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdHQtbmFtZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7 IH0KI3NtZF9oZWxwIC5tYW5kIHsgYmFja2dyb3VuZDojZWVlOyBib3JkZXI6MXB4IGRvdHRl ZCAjOTk5OyB9CiNzbWRfaGVscCB0YWJsZSB7d2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpjZW50 ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRoIHti b3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KPC9zdHlsZT4KPCEtLSAt LS0gRU5EIFBMVUdJTiBDU1MgLS0tIC0tPgoiO3M6MzoibWQ1IjtzOjMyOiJkNTFkYTMwYjUy Y2NhNjU5ODMyNTU5MDg0YjBhNzZmMSI7fQ==