<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>17070</bug_id>
          
          <creation_ts>2008-01-29 13:39:26 -0800</creation_ts>
          <short_desc>CSS: Request for proprietary extension to generic font families 2: &apos;blackletter&apos;</short_desc>
          <delta_ts>2022-07-16 19:50:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nicholas Shanks">nickshanks</reporter>
          <assigned_to name="Nicholas Shanks">nickshanks</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>mitz</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>68697</commentid>
    <comment_count>0</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2008-01-29 13:39:26 -0800</bug_when>
    <thetext>I would like to have a generic font family called &apos;blackletter&apos;, which would include Fraktur, Old English and similar kinds of fonts. This is a large section of typography that the CSS sepcs neglect. and &apos;Fantasy&apos; doesn&apos;t cut it, since that is usually Apple Chancery, Papyrus, Comic Sans or something along those lines, nothing like a blackletter face.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473454</commentid>
    <comment_count>1</comment_count>
      <attachid>108734</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2011-09-26 15:33:27 -0700</bug_when>
    <thetext>Created attachment 108734
Patch, for comments only

I have based this on the code committed in r91777 for bug 65197. Tests and ChangeLogs not provided as I do not intend this diff for commit. Please provide feedback.

I have chosen Lucida Blackletter as the default font for Windows, and hesitantly, Blackmoor LET as the font for Mac OS X (it shipped with several versions of AppleWorks).

To reiterate, the goal is to provide a &quot;blackletter&quot; generic font family, because whilst many systems have a blackletter font installed, there has been no ubiquitous typeface on Mac or Windows that web authors can rely on, such as Times New Roman or Helvetica. The generic families are supposed to cater for exactly this situation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473460</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-26 15:38:11 -0700</bug_when>
    <thetext>Attachment 108734 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebKit/win/WebPreferences.cpp:655:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/win/WebPreferences.cpp:662:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/API/C/WKPreferences.h:112:  Tab found; better to use spaces  [whitespace/tab] [1]
Source/WebKit/win/WebPreferences.h:94:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/win/WebPreferences.h:97:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/win/WebPreferences.h:98:  The parameter name &quot;family&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473525</commentid>
    <comment_count>3</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2011-09-26 16:38:20 -0700</bug_when>
    <thetext>The tab was Xcode trying to be &apos;helpful&apos;. The other five style issues are in keeping with the code in those particular files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474042</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-27 10:22:54 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Blackmoor LET as the font for Mac OS X

This is a font most OS X users won’t have. Hardcoding it into WebKit seems like a bad idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474635</commentid>
    <comment_count>5</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2011-09-28 03:21:31 -0700</bug_when>
    <thetext>Yeah, since Mac OS X ships with no blackletter font at all, any specific face named is likely to be installed on only a minority of systems.

I looked at http://www.codestyle.org/css/font-family/sampler-MacResultsFull.shtml but found no blackletter font listed at all. The only blackletter font I saw on the Windows page, http://www.codestyle.org/css/font-family/sampler-WindowsResultsFull.shtml was an engraved face (like Academy Engraved) which I didn&apos;t feel was suitable.

Another option I considered, which would make the patch considerably more complex, would be to do a runtime search for any font with a PostScript, QuickDraw or OpenType name field containing a substring or pattern match for values like these: {&quot;blackletter&quot;,&quot;old english&quot;,&quot;cloister black&quot;,&quot;rotunda&quot;,&quot;fraktur&quot;,&quot;schwabach&quot;,&quot;gotisch&quot;,&quot;textualis&quot;,/textura?\b/,/deutsche.*schrift/,/schrift.*deutsche/}

The inclusion of old english and cloister black in that list is due to the large number of blackletter typefaces that include those words in their names—Letraset, Bitstream, URW and Ascender all have faces with Old English in their names. (oddly, alt deutsch is not common)

I could not simple include schrift as a substring as that was catching too many false positives (according to searches I performed at myfonts.com)

My inspiration page is http://web.nickshanks.com/languages/english/eneydos which up until today used the following CSS: font-family: &quot;Cloister Black&quot;, &quot;Cloister Black BT&quot;, &quot;Cloister Black CT&quot;, &quot;Old English&quot;, &quot;Old English Text&quot;, &quot;Old English Text MT&quot;, &quot;Engravers&apos; Old English&quot;, &quot;Engravers Old English&quot;, &quot;Collins Old English&quot;, &quot;London Text&quot;, &quot;Goudy Text&quot;, &quot;Goudy Text Oldstyle&quot;, &quot;Goudy Text CT&quot;, &quot;Lucida Blackletter&quot;, &quot;Linotext&quot;, &quot;Fette Gotisch&quot;, &quot;London&quot;, blackletter;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474654</commentid>
    <comment_count>6</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2011-09-28 04:01:11 -0700</bug_when>
    <thetext>I&apos;ve just spotted &quot;Old English Text MT&quot; in the codestyle Windows results at nearly 60% penetration. I don&apos;t have the Monotype version, so missed it as it was just listed in my -webkit-body font (Helvetica Neue). This seems like a good default for both platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474662</commentid>
    <comment_count>7</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2011-09-28 04:24:35 -0700</bug_when>
    <thetext>A little more research, Old English Text MT is supplied with Microsoft Office (which I don&apos;t have) amongst other things, probably just their Windows versions: http://www.microsoft.com/typography/fonts/font.aspx?FMID=1010 and apparently doesn&apos;t have a &quot;mysterious disease&quot; http://www.microsoft.com/typography/fonts/family.aspx?FID=127 :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474777</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-28 09:37:13 -0700</bug_when>
    <thetext>If we’re not taking advantage of fonts already on people’s computers, then I don’t see the point of this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478786</commentid>
    <comment_count>9</comment_count>
      <attachid>109880</attachid>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2011-10-05 16:46:15 -0700</bug_when>
    <thetext>Created attachment 109880
Patch with heuristics

Okay, I&apos;ll take that as a cue that the patch should include the more complicated font sniffing I had wanted to do. I have added a platform-specific default preferences override system, currently only implemented for Mac and WTF::String preferences. I do not know enough about other platforms&apos; APIs to port the font iteration code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478788</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-05 16:50:08 -0700</bug_when>
    <thetext>Attachment 109880 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebKit/win/WebPreferences.cpp:655:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/win/WebPreferences.cpp:662:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/win/WebPreferences.h:94:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/win/WebPreferences.h:97:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit/win/WebPreferences.h:98:  The parameter name &quot;family&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 5 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479233</commentid>
    <comment_count>11</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2011-10-06 09:56:39 -0700</bug_when>
    <thetext>Also, I know it leaks a HashMap. I am still re-reading http://www.webkit.org/coding/RefPtr.html to work out what I&apos;m supposed to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480510</commentid>
    <comment_count>12</comment_count>
      <attachid>109880</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-08 00:18:54 -0700</bug_when>
    <thetext>Comment on attachment 109880
Patch with heuristics

r- because it&apos;s missing change logs and tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1882184</commentid>
    <comment_count>13</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-07-11 16:11:04 -0700</bug_when>
    <thetext>This idea should be discussed with the relevant CSS working groups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1884594</commentid>
    <comment_count>14</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-07-16 19:50:53 -0700</bug_when>
    <thetext>Right, Brent is right. The correct place to request this feature is at https://github.com/w3c/csswg-drafts/issues/new</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108734</attachid>
            <date>2011-09-26 15:33:27 -0700</date>
            <delta_ts>2011-10-05 16:46:15 -0700</delta_ts>
            <desc>Patch, for comments only</desc>
            <filename>blackletter.diff</filename>
            <type>text/plain</type>
            <size>21284</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDk1OTYzKQorKysgV2ViS2l0L3dpbi9XZWJQ
cmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSwxMiBAQAogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRGYW50YXN5Rm9udEZhbWlseSggCiAgICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBmYW1pbHkpOwogICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBibGFja2xldHRlckZvbnRGYW1pbHkoIAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIGZhbWlseSk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldEJsYWNrbGV0dGVyRm9udEZhbWlseSggCisgICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBmYW1pbHkpOworICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBwaWN0b2dyYXBoRm9udEZhbWlseSggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiogZmFtaWx5KTsKICAgICAKSW5kZXg6IFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZUtl
eXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1By
aXZhdGUuaAkocmV2aXNpb24gOTU5NjMpCisrKyBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjZGVmaW5lIFdlYktp
dFNhbnNTZXJpZkZvbnRQcmVmZXJlbmNlS2V5ICJXZWJLaXRTYW5zU2VyaWZGb250IgogI2RlZmlu
ZSBXZWJLaXRDdXJzaXZlRm9udFByZWZlcmVuY2VLZXkgIldlYktpdEN1cnNpdmVGb250IgogI2Rl
ZmluZSBXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXkgIldlYktpdEZhbnRhc3lGb250Igor
I2RlZmluZSBXZWJLaXRCbGFja2xldHRlckZvbnRQcmVmZXJlbmNlS2V5ICJXZWJLaXRCbGFja2xl
dHRlckZvbnQiCiAjZGVmaW5lIFdlYktpdFBpY3RvZ3JhcGhGb250UHJlZmVyZW5jZUtleSAiV2Vi
S2l0UGljdG9ncmFwaEZvbnQiCiAjZGVmaW5lIFdlYktpdE1pbmltdW1Gb250U2l6ZVByZWZlcmVu
Y2VLZXkgIldlYktpdE1pbmltdW1Gb250U2l6ZSIKICNkZWZpbmUgV2ViS2l0TWluaW11bUxvZ2lj
YWxGb250U2l6ZVByZWZlcmVuY2VLZXkgIldlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemUiCklu
ZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2Vi
Vmlldy5jcHAJKHJldmlzaW9uIDk1OTYzKQorKysgV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDU3OCw2ICs0NTc4LDEyIEBACiAgICAgc2V0dGluZ3MtPnNldEZpeGVk
Rm9udEZhbWlseShBdG9taWNTdHJpbmcoc3RyLCBTeXNTdHJpbmdMZW4oc3RyKSkpOwogICAgIFN5
c0ZyZWVTdHJpbmcoc3RyKTsKIAorICAgIGhyID0gcHJlZmVyZW5jZXMtPmJsYWNrbGV0dGVyRm9u
dEZhbWlseSgmc3RyKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGhyOwor
ICAgIHNldHRpbmdzLT5zZXRCbGFja2xldHRlckZvbnRGYW1pbHkoQXRvbWljU3RyaW5nKHN0ciwg
U3lzU3RyaW5nTGVuKHN0cikpKTsKKyAgICBTeXNGcmVlU3RyaW5nKHN0cik7CisKICAgICBociA9
IHByZWZlcmVuY2VzLT5waWN0b2dyYXBoRm9udEZhbWlseSgmc3RyKTsKICAgICBpZiAoRkFJTEVE
KGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwpJbmRleDogV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlz
aW9uIDk1OTYzKQorKysgV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4OSw2ICsxODksNyBAQAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRTYW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlhbCIp
KTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q3Vyc2l2
ZUZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvbWljIFNhbnMgTVMiKSk7CiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5j
ZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRCbGFja2xldHRlckZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZT
VFIoIkx1Y2lkYSBCbGFja2xldHRlciIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIlRp
bWVzIE5ldyBSb21hbiIpKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZT
VFIoV2ViS2l0TWluaW11bUZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCIwIikpOwogICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRNaW5pbXVtTG9naWNh
bEZvbnRTaXplUHJlZmVyZW5jZUtleSksIENGU1RSKCI5IikpOwpAQCAtNjUxLDYgKzY1MiwyMCBA
QAogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlBy
ZWZlcmVuY2VzOjpibGFja2xldHRlckZvbnRGYW1pbHkoIAorICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiogZmFtaWx5KQoreworICAgICpmYW1pbHkgPSBzdHJpbmdWYWx1ZUZvcktleShDRlNU
UihXZWJLaXRCbGFja2xldHRlckZvbnRQcmVmZXJlbmNlS2V5KSk7CisgICAgcmV0dXJuICgqZmFt
aWx5KSA/IFNfT0sgOiBFX0ZBSUw7Cit9CisKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2Vi
UHJlZmVyZW5jZXM6OnNldEJsYWNrbGV0dGVyRm9udEZhbWlseSggCisgICAgLyogW2luXSAqLyBC
U1RSIGZhbWlseSkKK3sKKyAgICBzZXRTdHJpbmdWYWx1ZShDRlNUUihXZWJLaXRCbGFja2xldHRl
ckZvbnRQcmVmZXJlbmNlS2V5KSwgZmFtaWx5KTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6cGljdG9ncmFwaEZvbnRGYW1p
bHkoIAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQlNUUiogZmFtaWx5KQogewpJbmRleDogV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwJKHJldmlzaW9uIDk1OTYzKQor
KysgV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlcy5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTk4LDYgKzk4LDkgQEAKICAgICBIUkVTVUxUIGZhbnRhc3lGb250RmFtaWx5KFtvdXQs
IHJldHZhbF0gQlNUUiogZmFtaWx5KTsKICAgICBIUkVTVUxUIHNldEZhbnRhc3lGb250RmFtaWx5
KFtpbl0gQlNUUiBmYW1pbHkpOwogCisgICAgSFJFU1VMVCBibGFja2xldHRlckZvbnRGYW1pbHko
W291dCwgcmV0dmFsXSBCU1RSKiBmYW1pbHkpOworICAgIEhSRVNVTFQgc2V0QmxhY2tsZXR0ZXJG
b250RmFtaWx5KFtpbl0gQlNUUiBmYW1pbHkpOworCiAgICAgSFJFU1VMVCBkZWZhdWx0Rm9udFNp
emUoW291dCwgcmV0dmFsXSBpbnQqIGZvbnRTaXplKTsKICAgICBIUkVTVUxUIHNldERlZmF1bHRG
b250U2l6ZShbaW5dIGludCBmb250U2l6ZSk7CiAKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDk1OTYzKQorKysgV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNiAr
MjE5LDkgQEAKIC0gKE5TU3RyaW5nICopcGljdG9ncmFwaEZvbnRGYW1pbHk7CiAtICh2b2lkKXNl
dFBpY3RvZ3JhcGhGb250RmFtaWx5OihOU1N0cmluZyAqKWZhbWlseTsKIAorLSAoTlNTdHJpbmcg
KilibGFja2xldHRlckZvbnRGYW1pbHk7CistICh2b2lkKXNldEJsYWNrbGV0dGVyRm9udEZhbWls
eTooTlNTdHJpbmcgKilmYW1pbHk7CisKIC8vIFRoaXMgaXMgYSBnbG9iYWwgc2V0dGluZy4KIC0g
KEJPT0wpbW9ja1Njcm9sbGJhcnNFbmFibGVkOwogLSAodm9pZClzZXRNb2NrU2Nyb2xsYmFyc0Vu
YWJsZWQ6KEJPT0wpZmxhZzsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDk1OTYzKQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3
IEBACiAjZGVmaW5lIFdlYktpdFNhbnNTZXJpZkZvbnRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0U2Fu
c1NlcmlmRm9udCIKICNkZWZpbmUgV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5IEAiV2Vi
S2l0Q3Vyc2l2ZUZvbnQiCiAjZGVmaW5lIFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSBA
IldlYktpdEZhbnRhc3lGb250IgorI2RlZmluZSBXZWJLaXRCbGFja2xldHRlckZvbnRQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0QmxhY2tsZXR0ZXJGb250IgogI2RlZmluZSBXZWJLaXRQaWN0b2dyYXBo
Rm9udFByZWZlcmVuY2VLZXkgQCJXZWJLaXRQaWN0b2dyYXBoRm9udCIKICNkZWZpbmUgV2ViS2l0
TWluaW11bUZvbnRTaXplUHJlZmVyZW5jZUtleSBAIldlYktpdE1pbmltdW1Gb250U2l6ZSIKICNk
ZWZpbmUgV2ViS2l0TWluaW11bUxvZ2ljYWxGb250U2l6ZVByZWZlcmVuY2VLZXkgQCJXZWJLaXRN
aW5pbXVtTG9naWNhbEZvbnRTaXplIgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9u
IDk1OTYzKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTEzODksNiArMTM4OSw3IEBACiAgICAgCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gX3By
aXZhdGUtPnBhZ2UtPnNldHRpbmdzKCk7CiAgICAgCisgICAgc2V0dGluZ3MtPnNldEJsYWNrbGV0
dGVyRm9udEZhbWlseShbcHJlZmVyZW5jZXMgYmxhY2tsZXR0ZXJGb250RmFtaWx5XSk7CiAgICAg
c2V0dGluZ3MtPnNldEN1cnNpdmVGb250RmFtaWx5KFtwcmVmZXJlbmNlcyBjdXJzaXZlRm9udEZh
bWlseV0pOwogICAgIHNldHRpbmdzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZShbcHJlZmVyZW5j
ZXMgZGVmYXVsdEZpeGVkRm9udFNpemVdKTsKICAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdEZvbnRT
aXplKFtwcmVmZXJlbmNlcyBkZWZhdWx0Rm9udFNpemVdKTsKSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9uIDk1OTYzKQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDcgQEAKICAg
ICAgICAgQCJIZWx2ZXRpY2EiLCAgICAgICAgICAgICAgICAgICBXZWJLaXRTYW5zU2VyaWZGb250
UHJlZmVyZW5jZUtleSwKICAgICAgICAgQCJBcHBsZSBDaGFuY2VyeSIsICAgICAgICAgICAgICBX
ZWJLaXRDdXJzaXZlRm9udFByZWZlcmVuY2VLZXksCiAgICAgICAgIEAiUGFweXJ1cyIsICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0RmFudGFzeUZvbnRQcmVmZXJlbmNlS2V5LAorICAgICAgICBA
IkJsYWNrbW9vciBMRVQiLCAgICAgICAgICAgICAgIFdlYktpdEJsYWNrbGV0dGVyRm9udFByZWZl
cmVuY2VLZXksCiAgICAgICAgIEAiQXBwbGUgQ29sb3IgRW1vamkiLCAgICAgICAgICAgV2ViS2l0
UGljdG9ncmFwaEZvbnRQcmVmZXJlbmNlS2V5LAogICAgICAgICBAIjAiLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYktpdE1pbmltdW1Gb250U2l6ZVByZWZlcmVuY2VLZXksCiAgICAgICAg
IEAiOSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0TWluaW11bUxvZ2ljYWxGb250
U2l6ZVByZWZlcmVuY2VLZXksIApAQCAtMTU1Miw2ICsxNTUzLDE2IEBACiAgICAgW3NlbGYgX3Nl
dFN0cmluZ1ZhbHVlOiBmYW1pbHkgZm9yS2V5OiBXZWJLaXRQaWN0b2dyYXBoRm9udFByZWZlcmVu
Y2VLZXldOwogfQogCistIChOU1N0cmluZyAqKWJsYWNrbGV0dGVyRm9udEZhbWlseQoreworICAg
IHJldHVybiBbc2VsZiBfc3RyaW5nVmFsdWVGb3JLZXk6IFdlYktpdEJsYWNrbGV0dGVyRm9udFBy
ZWZlcmVuY2VLZXldOworfQorCistICh2b2lkKXNldEJsYWNrbGV0dGVyRm9udEZhbWlseTooTlNT
dHJpbmcgKilmYW1pbHkKK3sKKyAgICBbc2VsZiBfc2V0U3RyaW5nVmFsdWU6IGZhbWlseSBmb3JL
ZXk6IFdlYktpdEJsYWNrbGV0dGVyRm9udFByZWZlcmVuY2VLZXldOworfQorCiBAZW5kCiAKIEBp
bXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViSW50ZXJuYWwpCkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJl
dmlzaW9uIDk1OTYzKQorKysgV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpA
QCAtOTA0LDYgKzkwNCw3IEBACiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldFBpY3RvZ3JhcGhG
b250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyM3NldFVzZXNFbmNvZGluZ0RldGVjdG9yRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczI0c2V0QXBwbGljYXRpb25DaHJvbWVNb2RlRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczI0
c2V0QmxhY2tsZXR0ZXJGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRD
b2RlCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldEROU1ByZWZldGNoaW5nRW5hYmxlZEViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZEViCiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MyNHNldFRleHRBcmVhc0FyZVJlc2l6YWJsZUViCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAko
cmV2aXNpb24gOTU5NjMpCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBjb3B5
KQpAQCAtODgsNiArODgsOSBAQAogICAgICAgICB2b2lkIHNldEZhbnRhc3lGb250RmFtaWx5KGNv
bnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwogICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGZhbnRhc3lGb250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVND
UklQVF9DT01NT04pIGNvbnN0OwogCisgICAgICAgIHZvaWQgc2V0QmxhY2tsZXR0ZXJGb250RmFt
aWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pOwor
ICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGJsYWNrbGV0dGVyRm9udEZhbWlseShVU2NyaXB0
Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKSBjb25zdDsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0
UGljdG9ncmFwaEZvbnRGYW1pbHkoY29uc3QgQXRvbWljU3RyaW5nJiwgVVNjcmlwdENvZGUgPSBV
U0NSSVBUX0NPTU1PTik7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcGljdG9ncmFwaEZv
bnRGYW1pbHkoVVNjcmlwdENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CiAKQEAgLTQ4Niw2
ICs0ODksNyBAQAogICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fc2Fuc1NlcmlmRm9udEZh
bWlseU1hcDsKICAgICAgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX2N1cnNpdmVGb250RmFtaWx5
TWFwOwogICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fZmFudGFzeUZvbnRGYW1pbHlNYXA7
CisgICAgICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9ibGFja2xldHRlckZvbnRGYW1pbHlNYXA7
CiAgICAgICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9waWN0b2dyYXBoRm9udEZhbWlseU1hcDsK
ICAgICAgICAgRWRpdGFibGVMaW5rQmVoYXZpb3IgbV9lZGl0YWJsZUxpbmtCZWhhdmlvcjsKICAg
ICAgICAgVGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvciBtX3RleHREaXJlY3Rp
b25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3I7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDk1
OTYzKQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1
LDYgKzI4NSwxNiBAQAogICAgIHNldEdlbmVyaWNGb250RmFtaWx5TWFwKG1fZmFudGFzeUZvbnRG
YW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0LCBtX3BhZ2UpOwogfQogCitjb25zdCBBdG9taWNTdHJp
bmcmIFNldHRpbmdzOjpibGFja2xldHRlckZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0KSBj
b25zdAoreworICAgIHJldHVybiBnZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX2JsYWNr
bGV0dGVyRm9udEZhbWlseU1hcCwgc2NyaXB0KTsKK30KKwordm9pZCBTZXR0aW5nczo6c2V0Qmxh
Y2tsZXR0ZXJGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYgZmFtaWx5LCBVU2NyaXB0Q29k
ZSBzY3JpcHQpCit7CisgICAgc2V0R2VuZXJpY0ZvbnRGYW1pbHlNYXAobV9ibGFja2xldHRlckZv
bnRGYW1pbHlNYXAsIGZhbWlseSwgc2NyaXB0LCBtX3BhZ2UpOworfQorCiBjb25zdCBBdG9taWNT
dHJpbmcmIFNldHRpbmdzOjpwaWN0b2dyYXBoRm9udEZhbWlseShVU2NyaXB0Q29kZSBzY3JpcHQp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEdlbmVyaWNGb250RmFtaWx5Rm9yU2NyaXB0KG1fcGlj
dG9ncmFwaEZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgJKHJldmlzaW9uIDk1OTYzKQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjks
OCArNjksOCBAQAogCiBjbGFzcyBGb250RGVzY3JpcHRpb24gewogcHVibGljOgotICAgIGVudW0g
R2VuZXJpY0ZhbWlseVR5cGUgeyBOb0ZhbWlseSwgU3RhbmRhcmRGYW1pbHksIFNlcmlmRmFtaWx5
LCBTYW5zU2VyaWZGYW1pbHksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb25vc3Bh
Y2VGYW1pbHksIEN1cnNpdmVGYW1pbHksIEZhbnRhc3lGYW1pbHksIFBpY3RvZ3JhcGhGYW1pbHkg
fTsKKyAgICBlbnVtIEdlbmVyaWNGYW1pbHlUeXBlIHsgTm9GYW1pbHksIFN0YW5kYXJkRmFtaWx5
LCBTZXJpZkZhbWlseSwgU2Fuc1NlcmlmRmFtaWx5LCBNb25vc3BhY2VGYW1pbHksIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDdXJzaXZlRmFtaWx5LCBGYW50YXN5RmFtaWx5LCBQaWN0
b2dyYXBoRmFtaWx5LCBCbGFja2xldHRlckZhbWlseSB9OwogCiAgICAgRm9udERlc2NyaXB0aW9u
KCkKICAgICAgICAgOiBtX3NwZWNpZmllZFNpemUoMCkKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Tb3VyY2VDU1NUb2tlbml6ZXIucmUyanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUNTU1Rva2VuaXplci5yZTJqcwkocmV2aXNpb24g
OTU5NjMpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlQ1NTVG9rZW5pemVy
LnJlMmpzCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBACiAgICAgICAgICJ1cHBlci1n
cmVlayIsICJ1cHBlci1oZXhhZGVjaW1hbCIsICJ1cHBlci1sYXRpbiIsICJ1cHBlci1ub3J3ZWdp
YW4iLCAidXBwZXItcm9tYW4iLCAidXBwZXJjYXNlIiwgInVyZHUiLCAidXJsIiwgInZlcnRpY2Fs
IiwgInZlcnRpY2FsLXRleHQiLCAidmlzaWJsZSIsCiAgICAgICAgICJ2aXNpYmxlRmlsbCIsICJ2
aXNpYmxlUGFpbnRlZCIsICJ2aXNpYmxlU3Ryb2tlIiwgInZpc3VhbCIsICJ3LXJlc2l6ZSIsICJ3
YWl0IiwgIndhdmUiLCAid2hpdGUiLCAid2lkZXIiLCAid2luZG93IiwgIndpbmRvd2ZyYW1lIiwg
IndpbmRvd3RleHQiLAogICAgICAgICAieC1sYXJnZSIsICJ4LXNtYWxsIiwgInhvciIsICJ4eC1s
YXJnZSIsICJ4eC1zbWFsbCIsICJ5ZWxsb3ciLCAiLXdhcC1tYXJxdWVlIiwgIi13ZWJraXQtYWN0
aXZlbGluayIsICItd2Via2l0LWF1dG8iLCAiLXdlYmtpdC1iYXNlbGluZS1taWRkbGUiLAotICAg
ICAgICAiLXdlYmtpdC1ib2R5IiwgIi13ZWJraXQtYm94IiwgIi13ZWJraXQtY2VudGVyIiwgIi13
ZWJraXQtY29udHJvbCIsICItd2Via2l0LWZvY3VzLXJpbmctY29sb3IiLCAiLXdlYmtpdC1ncmFi
IiwgIi13ZWJraXQtZ3JhYmJpbmciLAorICAgICAgICAiLXdlYmtpdC1ibGFja2xldHRlciIsICIt
d2Via2l0LWJvZHkiLCAiLXdlYmtpdC1ib3giLCAiLXdlYmtpdC1jZW50ZXIiLCAiLXdlYmtpdC1j
b250cm9sIiwgIi13ZWJraXQtZm9jdXMtcmluZy1jb2xvciIsICItd2Via2l0LWdyYWIiLCAiLXdl
YmtpdC1ncmFiYmluZyIsCiAgICAgICAgICItd2Via2l0LWdyYWRpZW50IiwgIi13ZWJraXQtaW5s
aW5lLWJveCIsICItd2Via2l0LWxlZnQiLCAiLXdlYmtpdC1saW5rIiwgIi13ZWJraXQtbWFycXVl
ZSIsICItd2Via2l0LW1pbmktY29udHJvbCIsICItd2Via2l0LW5vd3JhcCIsICItd2Via2l0LXBp
Y3RvZ3JhcGgiLAogICAgICAgICAiLXdlYmtpdC1yaWdodCIsICItd2Via2l0LXNtYWxsLWNvbnRy
b2wiLCAiLXdlYmtpdC10ZXh0IiwgIi13ZWJraXQteHh4LWxhcmdlIiwgIi13ZWJraXQtem9vbS1p
biIsICItd2Via2l0LXpvb20tb3V0IiwKICAgICBdLmtleVNldCgpOwpJbmRleDogV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUNTU1Rva2VuaXplci5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlQ1NTVG9rZW5pemVyLmpzCShyZXZpc2lv
biA5NTk2MykKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VDU1NUb2tlbml6
ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAKICAgICAgICAgInVwcGVyLWdy
ZWVrIiwgInVwcGVyLWhleGFkZWNpbWFsIiwgInVwcGVyLWxhdGluIiwgInVwcGVyLW5vcndlZ2lh
biIsICJ1cHBlci1yb21hbiIsICJ1cHBlcmNhc2UiLCAidXJkdSIsICJ1cmwiLCAidmVydGljYWwi
LCAidmVydGljYWwtdGV4dCIsICJ2aXNpYmxlIiwKICAgICAgICAgInZpc2libGVGaWxsIiwgInZp
c2libGVQYWludGVkIiwgInZpc2libGVTdHJva2UiLCAidmlzdWFsIiwgInctcmVzaXplIiwgIndh
aXQiLCAid2F2ZSIsICJ3aGl0ZSIsICJ3aWRlciIsICJ3aW5kb3ciLCAid2luZG93ZnJhbWUiLCAi
d2luZG93dGV4dCIsCiAgICAgICAgICJ4LWxhcmdlIiwgIngtc21hbGwiLCAieG9yIiwgInh4LWxh
cmdlIiwgInh4LXNtYWxsIiwgInllbGxvdyIsICItd2FwLW1hcnF1ZWUiLCAiLXdlYmtpdC1hY3Rp
dmVsaW5rIiwgIi13ZWJraXQtYXV0byIsICItd2Via2l0LWJhc2VsaW5lLW1pZGRsZSIsCi0gICAg
ICAgICItd2Via2l0LWJvZHkiLCAiLXdlYmtpdC1ib3giLCAiLXdlYmtpdC1jZW50ZXIiLCAiLXdl
YmtpdC1jb250cm9sIiwgIi13ZWJraXQtZm9jdXMtcmluZy1jb2xvciIsICItd2Via2l0LWdyYWIi
LCAiLXdlYmtpdC1ncmFiYmluZyIsCisgICAgICAgICItd2Via2l0LWJsYWNrbGV0dGVyIiwgIi13
ZWJraXQtYm9keSIsICItd2Via2l0LWJveCIsICItd2Via2l0LWNlbnRlciIsICItd2Via2l0LWNv
bnRyb2wiLCAiLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIiwgIi13ZWJraXQtZ3JhYiIsICItd2Vi
a2l0LWdyYWJiaW5nIiwKICAgICAgICAgIi13ZWJraXQtZ3JhZGllbnQiLCAiLXdlYmtpdC1pbmxp
bmUtYm94IiwgIi13ZWJraXQtbGVmdCIsICItd2Via2l0LWxpbmsiLCAiLXdlYmtpdC1tYXJxdWVl
IiwgIi13ZWJraXQtbWluaS1jb250cm9sIiwgIi13ZWJraXQtbm93cmFwIiwgIi13ZWJraXQtcGlj
dG9ncmFwaCIsCiAgICAgICAgICItd2Via2l0LXJpZ2h0IiwgIi13ZWJraXQtc21hbGwtY29udHJv
bCIsICItd2Via2l0LXRleHQiLCAiLXdlYmtpdC14eHgtbGFyZ2UiLCAiLXdlYmtpdC16b29tLWlu
IiwgIi13ZWJraXQtem9vbS1vdXQiLAogICAgIF0ua2V5U2V0KCk7CkluZGV4OiBXZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMJKHJl
dmlzaW9uIDk1OTYzKQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU0tleXdvcmRD
b21wbGV0aW9ucy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjg5LDcgKzI4OSw3IEBACiAgICAgICAg
ICItd2Via2l0LWNvbnRyb2wiLCAic3RhdHVzLWJhciIsICJpdGFsaWMiLCAib2JsaXF1ZSIsICJz
bWFsbC1jYXBzIiwgIm5vcm1hbCIsICJib2xkIiwgImJvbGRlciIsICJsaWdodGVyIiwKICAgICAg
ICAgIjEwMCIsICIyMDAiLCAiMzAwIiwgIjQwMCIsICI1MDAiLCAiNjAwIiwgIjcwMCIsICI4MDAi
LCAiOTAwIiwgInh4LXNtYWxsIiwgIngtc21hbGwiLCAic21hbGwiLCAibWVkaXVtIiwKICAgICAg
ICAgImxhcmdlIiwgIngtbGFyZ2UiLCAieHgtbGFyZ2UiLCAiLXdlYmtpdC14eHgtbGFyZ2UiLCAi
c21hbGxlciIsICJsYXJnZXIiLCAic2VyaWYiLCAic2Fucy1zZXJpZiIsICJjdXJzaXZlIiwKLSAg
ICAgICAgImZhbnRhc3kiLCAibW9ub3NwYWNlIiwgIi13ZWJraXQtYm9keSIsICItd2Via2l0LXBp
Y3RvZ3JhcGgiCisgICAgICAgICJmYW50YXN5IiwgIm1vbm9zcGFjZSIsICItd2Via2l0LWJvZHki
LCAiLXdlYmtpdC1waWN0b2dyYXBoIiwgIi13ZWJraXQtYmxhY2tsZXR0ZXIiCiAgICAgXSwKICAg
ICAiZG9taW5hbnQtYmFzZWxpbmUiOiBbCiAgICAgICAgICJtaWRkbGUiLCAiYXV0byIsICJjZW50
cmFsIiwgInRleHQtYmVmb3JlLWVkZ2UiLCAidGV4dC1hZnRlci1lZGdlIiwgImlkZW9ncmFwaGlj
IiwgImFscGhhYmV0aWMiLCAiaGFuZ2luZyIsCkBAIC0zNTMsNyArMzUzLDcgQEAKICAgICAgICAg
ImFic29sdXRlIiwgImZpeGVkIiwgInJlbGF0aXZlIiwgInN0YXRpYyIKICAgICBdLAogICAgICJm
b250LWZhbWlseSI6IFsKLSAgICAgICAgInNlcmlmIiwgInNhbnMtc2VyaWYiLCAiY3Vyc2l2ZSIs
ICJmYW50YXN5IiwgIm1vbm9zcGFjZSIsICItd2Via2l0LWJvZHkiLCAiLXdlYmtpdC1waWN0b2dy
YXBoIgorICAgICAgICAic2VyaWYiLCAic2Fucy1zZXJpZiIsICJjdXJzaXZlIiwgImZhbnRhc3ki
LCAibW9ub3NwYWNlIiwgIi13ZWJraXQtYm9keSIsICItd2Via2l0LXBpY3RvZ3JhcGgiLCAiLXdl
YmtpdC1ibGFja2xldHRlciIKICAgICBdLAogICAgICJ0ZXh0LW92ZXJmbG93LW1vZGUiOiBbCiAg
ICAgICAgICJjbGlwIiwgImVsbGlwc2lzIgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3
b3Jkcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCShy
ZXZpc2lvbiA5NTk2MykKKysrIFdlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAogY3Vyc2l2ZQogZmFudGFzeQogbW9ub3NwYWNl
Cistd2Via2l0LWJsYWNrbGV0dGVyCiAtd2Via2l0LWJvZHkKIC13ZWJraXQtcGljdG9ncmFwaAog
Ly8KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA5NTk2MykKKysrIFdl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODE4LDYg
KzI4MTgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBtb25vc3BhY2VGYW1p
bHk7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJpY0Zh
bWlseShGb250RGVzY3JpcHRpb246Ok1vbm9zcGFjZUZhbWlseSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJs
YWNrbGV0dGVyOgorICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9IGJsYWNrbGV0dGVyRmFt
aWx5OworICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNG
YW1pbHkoRm9udERlc2NyaXB0aW9uOjpCbGFja2xldHRlckZhbWlseSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtp
dFBpY3RvZ3JhcGg6CiAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gcGljdG9ncmFwaEZh
bWlseTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmlj
RmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6UGljdG9ncmFwaEZhbWlseSk7CkluZGV4OiBXZWJDb3Jl
L2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDk1OTYzKQorKysgV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzExLDYgKzMxMSw5IEBACiAgICAgICAgICAg
ICAgICAgY2FzZSBDU1NWYWx1ZU1vbm9zcGFjZToKICAgICAgICAgICAgICAgICAgICAgZmFtaWx5
TmFtZSA9IG1vbm9zcGFjZUZhbWlseTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEJsYWNrbGV0dGVyOgorICAgICAgICAgICAg
ICAgICAgICBmYW1pbHlOYW1lID0gYmxhY2tsZXR0ZXJGYW1pbHk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRQaWN0b2dyYXBo
OgogICAgICAgICAgICAgICAgICAgICBmYW1pbHlOYW1lID0gcGljdG9ncmFwaEZhbWlseTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00MTUsOCArNDE4LDEwIEBACiAgICAgICAgICBn
ZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZhbnRhc3lGb250RmFtaWx5KHNjcmlwdCk7CiAgICAg
ZWxzZSBpZiAoZmFtaWx5TmFtZSA9PSBtb25vc3BhY2VGYW1pbHkpCiAgICAgICAgICBnZW5lcmlj
RmFtaWx5ID0gc2V0dGluZ3MtPmZpeGVkRm9udEZhbWlseShzY3JpcHQpOworICAgIGVsc2UgaWYg
KGZhbWlseU5hbWUgPT0gYmxhY2tsZXR0ZXJGYW1pbHkpCisgICAgICAgICBnZW5lcmljRmFtaWx5
ID0gc2V0dGluZ3MtPmJsYWNrbGV0dGVyRm9udEZhbWlseShzY3JpcHQpOwogICAgIGVsc2UgaWYg
KGZhbWlseU5hbWUgPT0gcGljdG9ncmFwaEZhbWlseSkKLSAgICAgICAgIGdlbmVyaWNGYW1pbHkg
PSBzZXR0aW5ncy0+cGljdG9ncmFwaEZvbnRGYW1pbHkoc2NyaXB0KTsKKyAgICAgICAgZ2VuZXJp
Y0ZhbWlseSA9IHNldHRpbmdzLT5waWN0b2dyYXBoRm9udEZhbWlseShzY3JpcHQpOwogICAgIGVs
c2UgaWYgKGZhbWlseU5hbWUgPT0gc3RhbmRhcmRGYW1pbHkpCiAgICAgICAgICBnZW5lcmljRmFt
aWx5ID0gc2V0dGluZ3MtPnN0YW5kYXJkRm9udEZhbWlseShzY3JpcHQpOwogCkluZGV4OiBXZWJD
b3JlL2Nzcy9XZWJLaXRGb250RmFtaWx5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvV2ViS2l0Rm9udEZhbWlseU5hbWVzLmluCShyZXZpc2lvbiA5NTk2MykKKysrIFdlYkNvcmUv
Y3NzL1dlYktpdEZvbnRGYW1pbHlOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMyw1ICszLDYg
QEAKIG1vbm9zcGFjZUZhbWlseT0iLXdlYmtpdC1tb25vc3BhY2UiCiBzYW5zU2VyaWZGYW1pbHk9
Ii13ZWJraXQtc2Fucy1zZXJpZiIKIHNlcmlmRmFtaWx5PSItd2Via2l0LXNlcmlmIgorYmxhY2ts
ZXR0ZXJGYW1pbHk9Ii13ZWJraXQtYmxhY2tsZXR0ZXIiCiBwaWN0b2dyYXBoRmFtaWx5PSItd2Vi
a2l0LXBpY3RvZ3JhcGgiCiBzdGFuZGFyZEZhbWlseT0iLXdlYmtpdC1zdGFuZGFyZCIKSW5kZXg6
IFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24g
OTU5NjMpCisrKyBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MTEsNiArODExLDggQEAKICAgICAgICAgcmV0dXJuIENTU1ZhbHVl
RmFudGFzeTsKICAgICBpZiAoZmFtaWx5ID09IG1vbm9zcGFjZUZhbWlseSkKICAgICAgICAgcmV0
dXJuIENTU1ZhbHVlTW9ub3NwYWNlOworICAgIGlmIChmYW1pbHkgPT0gYmxhY2tsZXR0ZXJGYW1p
bHkpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZVdlYmtpdEJsYWNrbGV0dGVyOwogICAgIGlmIChm
YW1pbHkgPT0gcGljdG9ncmFwaEZhbWlseSkKICAgICAgICAgcmV0dXJuIENTU1ZhbHVlV2Via2l0
UGljdG9ncmFwaDsKICAgICBpZiAoZmFtaWx5ID09IHNhbnNTZXJpZkZhbWlseSkKSW5kZXg6IFdl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDk1OTYzKQorKysg
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDcsNiArMTA3LDkgQEAKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRGYW50YXN5
Rm9udEZhbWlseShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiBm
YW1pbHkpOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUHJlZmVyZW5jZXNDb3B5RmFudGFzeUZv
bnRGYW1pbHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKK1dLX0VYUE9SVCB2
b2lkIFdLUHJlZmVyZW5jZXNTZXRCbGFja2xldHRlckZvbnRGYW1pbHkoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgZmFtaWx5KTsKK1dLX0VYUE9SVCBXS1N0cmlu
Z1JlZiBXS1ByZWZlcmVuY2VzQ29weUJsYWNrbGV0dGVyRm9udEZhbWlseShXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmKTsKKwkKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRQ
aWN0b2dyYXBoRm9udEZhbWlseShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0
cmluZ1JlZiBmYW1pbHkpOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUHJlZmVyZW5jZXNDb3B5
UGljdG9ncmFwaEZvbnRGYW1pbHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiAK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lv
biA5NTk2MykKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDE2IEBACiAgICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmZhbnRhc3lGb250RmFtaWx5KCkpOwogfQogCit2b2lk
IFdLUHJlZmVyZW5jZXNTZXRCbGFja2xldHRlckZvbnRGYW1pbHkoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgZmFtaWx5KQoreworICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldEJsYWNrbGV0dGVyRm9udEZhbWlseSh0b1dURlN0cmluZyhmYW1pbHkpKTsK
K30KKworV0tTdHJpbmdSZWYgV0tQcmVmZXJlbmNlc0NvcHlCbGFja2xldHRlckZvbnRGYW1pbHko
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRB
UEkodG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+YmxhY2tsZXR0ZXJGb250RmFtaWx5KCkpOworfQor
CiB2b2lkIFdLUHJlZmVyZW5jZXNTZXRQaWN0b2dyYXBoRm9udEZhbWlseShXS1ByZWZlcmVuY2Vz
UmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiBmYW1pbHkpCiB7CiAgICAgdG9JbXBsKHBy
ZWZlcmVuY2VzUmVmKS0+c2V0UGljdG9ncmFwaEZvbnRGYW1pbHkodG9XVEZTdHJpbmcoZmFtaWx5
KSk7CkluZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCShyZXZpc2lvbiA5NTk2
MykKKysrIFdlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTI5LDYgKzEyOSw3IEBACiAgICAgbWFjcm8oRml4ZWRGb250RmFtaWx5LCBmaXhlZEZv
bnRGYW1pbHksIFN0cmluZywgU3RyaW5nLCAiQ291cmllciBOZXciKSBcCiAgICAgbWFjcm8oU2Fu
c1NlcmlmRm9udEZhbWlseSwgc2Fuc1NlcmlmRm9udEZhbWlseSwgU3RyaW5nLCBTdHJpbmcsICJB
cmlhbCIpIFwKICAgICBtYWNybyhTZXJpZkZvbnRGYW1pbHksIHNlcmlmRm9udEZhbWlseSwgU3Ry
aW5nLCBTdHJpbmcsICJUaW1lcyBOZXcgUm9tYW4iKSBcCisgICAgbWFjcm8oQmxhY2tsZXR0ZXJG
b250RmFtaWx5LCBibGFja2xldHRlckZvbnRGYW1pbHksIFN0cmluZywgU3RyaW5nLCAiTHVjaWRh
IEJsYWNrbGV0dGVyIikgXAogICAgIG1hY3JvKFBpY3RvZ3JhcGhGb250RmFtaWx5LCBwaWN0b2dy
YXBoRm9udEZhbWlseSwgU3RyaW5nLCBTdHJpbmcsICJUaW1lcyBOZXcgUm9tYW4iKSBcCiAgICAg
XAogCkBAIC0xNDEsNiArMTQyLDcgQEAKICAgICBtYWNybyhGaXhlZEZvbnRGYW1pbHksIGZpeGVk
Rm9udEZhbWlseSwgU3RyaW5nLCBTdHJpbmcsICJDb3VyaWVyIikgXAogICAgIG1hY3JvKFNhbnNT
ZXJpZkZvbnRGYW1pbHksIHNhbnNTZXJpZkZvbnRGYW1pbHksIFN0cmluZywgU3RyaW5nLCAiSGVs
dmV0aWNhIikgXAogICAgIG1hY3JvKFNlcmlmRm9udEZhbWlseSwgc2VyaWZGb250RmFtaWx5LCBT
dHJpbmcsIFN0cmluZywgIlRpbWVzIikgXAorICAgIG1hY3JvKEJsYWNrbGV0dGVyRm9udEZhbWls
eSwgYmxhY2tsZXR0ZXJGb250RmFtaWx5LCBTdHJpbmcsIFN0cmluZywgIkJsYWNrbW9vciBMRVQi
KSBcCiAgICAgbWFjcm8oUGljdG9ncmFwaEZvbnRGYW1pbHksIHBpY3RvZ3JhcGhGb250RmFtaWx5
LCBTdHJpbmcsIFN0cmluZywgIkFwcGxlIENvbG9yIEVtb2ppIikgXAogICAgIFwKIApAQCAtMTUz
LDYgKzE1NSw3IEBACiAgICAgbWFjcm8oRml4ZWRGb250RmFtaWx5LCBmaXhlZEZvbnRGYW1pbHks
IFN0cmluZywgU3RyaW5nLCAiQ291cmllciBOZXciKSBcCiAgICAgbWFjcm8oU2Fuc1NlcmlmRm9u
dEZhbWlseSwgc2Fuc1NlcmlmRm9udEZhbWlseSwgU3RyaW5nLCBTdHJpbmcsICJIZWx2ZXRpY2Ei
KSBcCiAgICAgbWFjcm8oU2VyaWZGb250RmFtaWx5LCBzZXJpZkZvbnRGYW1pbHksIFN0cmluZywg
U3RyaW5nLCAiVGltZXMiKSBcCisgICAgbWFjcm8oQmxhY2tsZXR0ZXJGb250RmFtaWx5LCBibGFj
a2xldHRlckZvbnRGYW1pbHksIFN0cmluZywgU3RyaW5nLCAiVGltZXMiKSBcCiAgICAgbWFjcm8o
UGljdG9ncmFwaEZvbnRGYW1pbHksIHBpY3RvZ3JhcGhGb250RmFtaWx5LCBTdHJpbmcsIFN0cmlu
ZywgIlRpbWVzIikgXAogICAgIFwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109880</attachid>
            <date>2011-10-05 16:46:15 -0700</date>
            <delta_ts>2011-10-08 00:24:37 -0700</delta_ts>
            <desc>Patch with heuristics</desc>
            <filename>blackletter.diff</filename>
            <type>text/plain</type>
            <size>30305</size>
            <attacher name="Nicholas Shanks">nickshanks</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDk2NzE5KQorKysgV2ViS2l0L3dpbi9XZWJQ
cmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSwxMiBAQAogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRGYW50YXN5Rm9udEZhbWlseSggCiAgICAg
ICAgIC8qIFtpbl0gKi8gQlNUUiBmYW1pbHkpOwogICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBibGFja2xldHRlckZvbnRGYW1pbHkoIAorICAgICAgICAvKiBbcmV0
dmFsXVtvdXRdICovIEJTVFIqIGZhbWlseSk7CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIHNldEJsYWNrbGV0dGVyRm9udEZhbWlseSggCisgICAgICAgIC8qIFtp
bl0gKi8gQlNUUiBmYW1pbHkpOworICAgIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBwaWN0b2dyYXBoRm9udEZhbWlseSggCiAgICAgICAgIC8qIFtyZXR2YWxdW291dF0g
Ki8gQlNUUiogZmFtaWx5KTsKICAgICAKSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gOTY3MTkpCisrKyBX
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTc4LDYgKzQ1NzgsMTIg
QEAKICAgICBzZXR0aW5ncy0+c2V0Rml4ZWRGb250RmFtaWx5KEF0b21pY1N0cmluZyhzdHIsIFN5
c1N0cmluZ0xlbihzdHIpKSk7CiAgICAgU3lzRnJlZVN0cmluZyhzdHIpOwogCisgICAgaHIgPSBw
cmVmZXJlbmNlcy0+YmxhY2tsZXR0ZXJGb250RmFtaWx5KCZzdHIpOworICAgIGlmIChGQUlMRUQo
aHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3MtPnNldEJsYWNrbGV0dGVyRm9u
dEZhbWlseShBdG9taWNTdHJpbmcoc3RyLCBTeXNTdHJpbmdMZW4oc3RyKSkpOworICAgIFN5c0Zy
ZWVTdHJpbmcoc3RyKTsKKwogICAgIGhyID0gcHJlZmVyZW5jZXMtPnBpY3RvZ3JhcGhGb250RmFt
aWx5KCZzdHIpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CkluZGV4
OiBXZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDk2NzE5KQorKysg
V2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQAogI2RlZmluZSBXZWJLaXRTYW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSAi
V2ViS2l0U2Fuc1NlcmlmRm9udCIKICNkZWZpbmUgV2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNl
S2V5ICJXZWJLaXRDdXJzaXZlRm9udCIKICNkZWZpbmUgV2ViS2l0RmFudGFzeUZvbnRQcmVmZXJl
bmNlS2V5ICJXZWJLaXRGYW50YXN5Rm9udCIKKyNkZWZpbmUgV2ViS2l0QmxhY2tsZXR0ZXJGb250
UHJlZmVyZW5jZUtleSAiV2ViS2l0QmxhY2tsZXR0ZXJGb250IgogI2RlZmluZSBXZWJLaXRQaWN0
b2dyYXBoRm9udFByZWZlcmVuY2VLZXkgIldlYktpdFBpY3RvZ3JhcGhGb250IgogI2RlZmluZSBX
ZWJLaXRNaW5pbXVtRm9udFNpemVQcmVmZXJlbmNlS2V5ICJXZWJLaXRNaW5pbXVtRm9udFNpemUi
CiAjZGVmaW5lIFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNlS2V5ICJXZWJL
aXRNaW5pbXVtTG9naWNhbEZvbnRTaXplIgpJbmRleDogV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNl
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlz
aW9uIDk2NzE5KQorKysgV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4OSw2ICsxODksNyBAQAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRTYW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJBcmlhbCIp
KTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0Q3Vyc2l2
ZUZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZTVFIoIkNvbWljIFNhbnMgTVMiKSk7CiAgICAgQ0ZEaWN0
aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5j
ZUtleSksIENGU1RSKCJDb21pYyBTYW5zIE1TIikpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRCbGFja2xldHRlckZvbnRQcmVmZXJlbmNlS2V5KSwgQ0ZT
VFIoIk9sZCBFbmdsaXNoIFRleHQgTVQiKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdFBpY3RvZ3JhcGhGb250UHJlZmVyZW5jZUtleSksIENGU1RSKCJU
aW1lcyBOZXcgUm9tYW4iKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdE1pbmltdW1Gb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiMCIpKTsKICAg
ICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0TWluaW11bUxvZ2lj
YWxGb250U2l6ZVByZWZlcmVuY2VLZXkpLCBDRlNUUigiOSIpKTsKQEAgLTY1MSw2ICs2NTIsMjAg
QEAKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQ
cmVmZXJlbmNlczo6YmxhY2tsZXR0ZXJGb250RmFtaWx5KCAKKyAgICAvKiBbcmV0dmFsXVtvdXRd
ICovIEJTVFIqIGZhbWlseSkKK3sKKyAgICAqZmFtaWx5ID0gc3RyaW5nVmFsdWVGb3JLZXkoQ0ZT
VFIoV2ViS2l0QmxhY2tsZXR0ZXJGb250UHJlZmVyZW5jZUtleSkpOworICAgIHJldHVybiAoKmZh
bWlseSkgPyBTX09LIDogRV9GQUlMOworfQorCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YlByZWZlcmVuY2VzOjpzZXRCbGFja2xldHRlckZvbnRGYW1pbHkoIAorICAgIC8qIFtpbl0gKi8g
QlNUUiBmYW1pbHkpCit7CisgICAgc2V0U3RyaW5nVmFsdWUoQ0ZTVFIoV2ViS2l0QmxhY2tsZXR0
ZXJGb250UHJlZmVyZW5jZUtleSksIGZhbWlseSk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnBpY3RvZ3JhcGhGb250RmFt
aWx5KCAKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJTVFIqIGZhbWlseSkKIHsKSW5kZXg6IFdl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsCShyZXZpc2lvbiA5NjcxOSkK
KysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXMuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC05OCw2ICs5OCw5IEBACiAgICAgSFJFU1VMVCBmYW50YXN5Rm9udEZhbWlseShbb3V0
LCByZXR2YWxdIEJTVFIqIGZhbWlseSk7CiAgICAgSFJFU1VMVCBzZXRGYW50YXN5Rm9udEZhbWls
eShbaW5dIEJTVFIgZmFtaWx5KTsKIAorICAgIEhSRVNVTFQgYmxhY2tsZXR0ZXJGb250RmFtaWx5
KFtvdXQsIHJldHZhbF0gQlNUUiogZmFtaWx5KTsKKyAgICBIUkVTVUxUIHNldEJsYWNrbGV0dGVy
Rm9udEZhbWlseShbaW5dIEJTVFIgZmFtaWx5KTsKKwogICAgIEhSRVNVTFQgZGVmYXVsdEZvbnRT
aXplKFtvdXQsIHJldHZhbF0gaW50KiBmb250U2l6ZSk7CiAgICAgSFJFU1VMVCBzZXREZWZhdWx0
Rm9udFNpemUoW2luXSBpbnQgZm9udFNpemUpOwogCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCShyZXZpc2lvbiA5NjcxOSkKKysrIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDYg
KzIxOSw5IEBACiAtIChOU1N0cmluZyAqKXBpY3RvZ3JhcGhGb250RmFtaWx5OwogLSAodm9pZClz
ZXRQaWN0b2dyYXBoRm9udEZhbWlseTooTlNTdHJpbmcgKilmYW1pbHk7CiAKKy0gKE5TU3RyaW5n
ICopYmxhY2tsZXR0ZXJGb250RmFtaWx5OworLSAodm9pZClzZXRCbGFja2xldHRlckZvbnRGYW1p
bHk6KE5TU3RyaW5nICopZmFtaWx5OworCiAvLyBUaGlzIGlzIGEgZ2xvYmFsIHNldHRpbmcuCiAt
IChCT09MKW1vY2tTY3JvbGxiYXJzRW5hYmxlZDsKIC0gKHZvaWQpc2V0TW9ja1Njcm9sbGJhcnNF
bmFibGVkOihCT09MKWZsYWc7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5j
ZUtleXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA5NjcxOSkKKysrIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
NyBAQAogI2RlZmluZSBXZWJLaXRTYW5zU2VyaWZGb250UHJlZmVyZW5jZUtleSBAIldlYktpdFNh
bnNTZXJpZkZvbnQiCiAjZGVmaW5lIFdlYktpdEN1cnNpdmVGb250UHJlZmVyZW5jZUtleSBAIldl
YktpdEN1cnNpdmVGb250IgogI2RlZmluZSBXZWJLaXRGYW50YXN5Rm9udFByZWZlcmVuY2VLZXkg
QCJXZWJLaXRGYW50YXN5Rm9udCIKKyNkZWZpbmUgV2ViS2l0QmxhY2tsZXR0ZXJGb250UHJlZmVy
ZW5jZUtleSBAIldlYktpdEJsYWNrbGV0dGVyRm9udCIKICNkZWZpbmUgV2ViS2l0UGljdG9ncmFw
aEZvbnRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0UGljdG9ncmFwaEZvbnQiCiAjZGVmaW5lIFdlYktp
dE1pbmltdW1Gb250U2l6ZVByZWZlcmVuY2VLZXkgQCJXZWJLaXRNaW5pbXVtRm9udFNpemUiCiAj
ZGVmaW5lIFdlYktpdE1pbmltdW1Mb2dpY2FsRm9udFNpemVQcmVmZXJlbmNlS2V5IEAiV2ViS2l0
TWluaW11bUxvZ2ljYWxGb250U2l6ZSIKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lv
biA5NjcxOSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzcxLDYgKzEzNzEsNyBAQAogICAgIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IF9w
cml2YXRlLT5wYWdlLT5zZXR0aW5ncygpOwogICAgIAorICAgIHNldHRpbmdzLT5zZXRCbGFja2xl
dHRlckZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIGJsYWNrbGV0dGVyRm9udEZhbWlseV0pOwogICAg
IHNldHRpbmdzLT5zZXRDdXJzaXZlRm9udEZhbWlseShbcHJlZmVyZW5jZXMgY3Vyc2l2ZUZvbnRG
YW1pbHldKTsKICAgICBzZXR0aW5ncy0+c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoW3ByZWZlcmVu
Y2VzIGRlZmF1bHRGaXhlZEZvbnRTaXplXSk7CiAgICAgc2V0dGluZ3MtPnNldERlZmF1bHRGb250
U2l6ZShbcHJlZmVyZW5jZXMgZGVmYXVsdEZvbnRTaXplXSk7CkluZGV4OiBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiA5NjcxOSkKKysrIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEwLDYgKzMxMCw3IEBACiAg
ICAgICAgIEAiSGVsdmV0aWNhIiwgICAgICAgICAgICAgICAgICAgV2ViS2l0U2Fuc1NlcmlmRm9u
dFByZWZlcmVuY2VLZXksCiAgICAgICAgIEAiQXBwbGUgQ2hhbmNlcnkiLCAgICAgICAgICAgICAg
V2ViS2l0Q3Vyc2l2ZUZvbnRQcmVmZXJlbmNlS2V5LAogICAgICAgICBAIlBhcHlydXMiLCAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdEZhbnRhc3lGb250UHJlZmVyZW5jZUtleSwKKyAgICAgICAg
QCJPbGQgRW5nbGlzaCBUZXh0IE1UIiwgICAgICAgICBXZWJLaXRCbGFja2xldHRlckZvbnRQcmVm
ZXJlbmNlS2V5LAogICAgICAgICBAIkFwcGxlIENvbG9yIEVtb2ppIiwgICAgICAgICAgIFdlYktp
dFBpY3RvZ3JhcGhGb250UHJlZmVyZW5jZUtleSwKICAgICAgICAgQCIwIiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXRNaW5pbXVtRm9udFNpemVQcmVmZXJlbmNlS2V5LAogICAgICAg
ICBAIjkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdE1pbmltdW1Mb2dpY2FsRm9u
dFNpemVQcmVmZXJlbmNlS2V5LCAKQEAgLTE1NTIsNiArMTU1MywxNiBAQAogICAgIFtzZWxmIF9z
ZXRTdHJpbmdWYWx1ZTogZmFtaWx5IGZvcktleTogV2ViS2l0UGljdG9ncmFwaEZvbnRQcmVmZXJl
bmNlS2V5XTsKIH0KIAorLSAoTlNTdHJpbmcgKilibGFja2xldHRlckZvbnRGYW1pbHkKK3sKKyAg
ICByZXR1cm4gW3NlbGYgX3N0cmluZ1ZhbHVlRm9yS2V5OiBXZWJLaXRCbGFja2xldHRlckZvbnRQ
cmVmZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRCbGFja2xldHRlckZvbnRGYW1pbHk6KE5T
U3RyaW5nICopZmFtaWx5Cit7CisgICAgW3NlbGYgX3NldFN0cmluZ1ZhbHVlOiBmYW1pbHkgZm9y
S2V5OiBXZWJLaXRCbGFja2xldHRlckZvbnRQcmVmZXJlbmNlS2V5XTsKK30KKwogQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYkludGVybmFsKQpJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShy
ZXZpc2lvbiA5NjcxOSkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTkxNyw2ICs5MTcsNyBAQAogX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRQaWN0b2dyYXBo
Rm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZQogX19aTjdXZWJD
b3JlOFNldHRpbmdzMjNzZXRVc2VzRW5jb2RpbmdEZXRlY3RvckViCiBfX1pON1dlYkNvcmU4U2V0
dGluZ3MyNHNldEFwcGxpY2F0aW9uQ2hyb21lTW9kZUViCitfX1pON1dlYkNvcmU4U2V0dGluZ3My
NHNldEJsYWNrbGV0dGVyRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0
Q29kZQogX19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRETlNQcmVmZXRjaGluZ0VuYWJsZWRFYgog
X19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWRFYgogX19aTjdX
ZWJDb3JlOFNldHRpbmdzMjRzZXRUZXh0QXJlYXNBcmVSZXNpemFibGVFYgpJbmRleDogV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJ
KHJldmlzaW9uIDk2NzE5KQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg4LDYgKzg4LDkgQEAKICAgICAgICAgdm9pZCBzZXRGYW50YXN5Rm9udEZhbWlseShj
b25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsKICAgICAg
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBmYW50YXN5Rm9udEZhbWlseShVU2NyaXB0Q29kZSA9IFVT
Q1JJUFRfQ09NTU9OKSBjb25zdDsKIAorICAgICAgICB2b2lkIHNldEJsYWNrbGV0dGVyRm9udEZh
bWlseShjb25zdCBBdG9taWNTdHJpbmcmLCBVU2NyaXB0Q29kZSA9IFVTQ1JJUFRfQ09NTU9OKTsK
KyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBibGFja2xldHRlckZvbnRGYW1pbHkoVVNjcmlw
dENvZGUgPSBVU0NSSVBUX0NPTU1PTikgY29uc3Q7CisgICAgICAgIAogICAgICAgICB2b2lkIHNl
dFBpY3RvZ3JhcGhGb250RmFtaWx5KGNvbnN0IEF0b21pY1N0cmluZyYsIFVTY3JpcHRDb2RlID0g
VVNDUklQVF9DT01NT04pOwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHBpY3RvZ3JhcGhG
b250RmFtaWx5KFVTY3JpcHRDb2RlID0gVVNDUklQVF9DT01NT04pIGNvbnN0OwogCkBAIC00ODcs
NiArNDkwLDcgQEAKICAgICAgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX3NhbnNTZXJpZkZvbnRG
YW1pbHlNYXA7CiAgICAgICAgIFNjcmlwdEZvbnRGYW1pbHlNYXAgbV9jdXJzaXZlRm9udEZhbWls
eU1hcDsKICAgICAgICAgU2NyaXB0Rm9udEZhbWlseU1hcCBtX2ZhbnRhc3lGb250RmFtaWx5TWFw
OworICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fYmxhY2tsZXR0ZXJGb250RmFtaWx5TWFw
OwogICAgICAgICBTY3JpcHRGb250RmFtaWx5TWFwIG1fcGljdG9ncmFwaEZvbnRGYW1pbHlNYXA7
CiAgICAgICAgIEVkaXRhYmxlTGlua0JlaGF2aW9yIG1fZWRpdGFibGVMaW5rQmVoYXZpb3I7CiAg
ICAgICAgIFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVzaW9uQmVoYXZpb3IgbV90ZXh0RGlyZWN0
aW9uU3VibWVudUluY2x1c2lvbkJlaGF2aW9yOwpJbmRleDogV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCShyZXZpc2lvbiA5
NjcxOSkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
Niw2ICsyODYsMTYgQEAKICAgICBzZXRHZW5lcmljRm9udEZhbWlseU1hcChtX2ZhbnRhc3lGb250
RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCwgbV9wYWdlKTsKIH0KIAorY29uc3QgQXRvbWljU3Ry
aW5nJiBTZXR0aW5nczo6YmxhY2tsZXR0ZXJGb250RmFtaWx5KFVTY3JpcHRDb2RlIHNjcmlwdCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZ2V0R2VuZXJpY0ZvbnRGYW1pbHlGb3JTY3JpcHQobV9ibGFj
a2xldHRlckZvbnRGYW1pbHlNYXAsIHNjcmlwdCk7Cit9CisKK3ZvaWQgU2V0dGluZ3M6OnNldEJs
YWNrbGV0dGVyRm9udEZhbWlseShjb25zdCBBdG9taWNTdHJpbmcmIGZhbWlseSwgVVNjcmlwdENv
ZGUgc2NyaXB0KQoreworICAgIHNldEdlbmVyaWNGb250RmFtaWx5TWFwKG1fYmxhY2tsZXR0ZXJG
b250RmFtaWx5TWFwLCBmYW1pbHksIHNjcmlwdCwgbV9wYWdlKTsKK30KKwogY29uc3QgQXRvbWlj
U3RyaW5nJiBTZXR0aW5nczo6cGljdG9ncmFwaEZvbnRGYW1pbHkoVVNjcmlwdENvZGUgc2NyaXB0
KSBjb25zdAogewogICAgIHJldHVybiBnZXRHZW5lcmljRm9udEZhbWlseUZvclNjcmlwdChtX3Bp
Y3RvZ3JhcGhGb250RmFtaWx5TWFwLCBzY3JpcHQpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250RGVzY3JpcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnREZXNjcmlwdGlvbi5oCShyZXZpc2lvbiA5NjcxOSkKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5
LDggKzY5LDggQEAKIAogY2xhc3MgRm9udERlc2NyaXB0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVt
IEdlbmVyaWNGYW1pbHlUeXBlIHsgTm9GYW1pbHksIFN0YW5kYXJkRmFtaWx5LCBTZXJpZkZhbWls
eSwgU2Fuc1NlcmlmRmFtaWx5LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9ub3Nw
YWNlRmFtaWx5LCBDdXJzaXZlRmFtaWx5LCBGYW50YXN5RmFtaWx5LCBQaWN0b2dyYXBoRmFtaWx5
IH07CisgICAgZW51bSBHZW5lcmljRmFtaWx5VHlwZSB7IE5vRmFtaWx5LCBTdGFuZGFyZEZhbWls
eSwgU2VyaWZGYW1pbHksIFNhbnNTZXJpZkZhbWlseSwgTW9ub3NwYWNlRmFtaWx5LCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ3Vyc2l2ZUZhbWlseSwgRmFudGFzeUZhbWlseSwgUGlj
dG9ncmFwaEZhbWlseSwgQmxhY2tsZXR0ZXJGYW1pbHkgfTsKIAogICAgIEZvbnREZXNjcmlwdGlv
bigpCiAgICAgICAgIDogbV9zcGVjaWZpZWRTaXplKDApCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU291cmNlQ1NTVG9rZW5pemVyLnJlMmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VDU1NUb2tlbml6ZXIucmUyanMJKHJldmlzaW9u
IDk2NzE5KQorKysgV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUNTU1Rva2VuaXpl
ci5yZTJqcwkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQAogICAgICAgICAidXBwZXIt
Z3JlZWsiLCAidXBwZXItaGV4YWRlY2ltYWwiLCAidXBwZXItbGF0aW4iLCAidXBwZXItbm9yd2Vn
aWFuIiwgInVwcGVyLXJvbWFuIiwgInVwcGVyY2FzZSIsICJ1cmR1IiwgInVybCIsICJ2ZXJ0aWNh
bCIsICJ2ZXJ0aWNhbC10ZXh0IiwgInZpc2libGUiLAogICAgICAgICAidmlzaWJsZUZpbGwiLCAi
dmlzaWJsZVBhaW50ZWQiLCAidmlzaWJsZVN0cm9rZSIsICJ2aXN1YWwiLCAidy1yZXNpemUiLCAi
d2FpdCIsICJ3YXZlIiwgIndoaXRlIiwgIndpZGVyIiwgIndpbmRvdyIsICJ3aW5kb3dmcmFtZSIs
ICJ3aW5kb3d0ZXh0IiwKICAgICAgICAgIngtbGFyZ2UiLCAieC1zbWFsbCIsICJ4b3IiLCAieHgt
bGFyZ2UiLCAieHgtc21hbGwiLCAieWVsbG93IiwgIi13YXAtbWFycXVlZSIsICItd2Via2l0LWFj
dGl2ZWxpbmsiLCAiLXdlYmtpdC1hdXRvIiwgIi13ZWJraXQtYmFzZWxpbmUtbWlkZGxlIiwKLSAg
ICAgICAgIi13ZWJraXQtYm9keSIsICItd2Via2l0LWJveCIsICItd2Via2l0LWNlbnRlciIsICIt
d2Via2l0LWNvbnRyb2wiLCAiLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yIiwgIi13ZWJraXQtZ3Jh
YiIsICItd2Via2l0LWdyYWJiaW5nIiwKKyAgICAgICAgIi13ZWJraXQtYmxhY2tsZXR0ZXIiLCAi
LXdlYmtpdC1ib2R5IiwgIi13ZWJraXQtYm94IiwgIi13ZWJraXQtY2VudGVyIiwgIi13ZWJraXQt
Y29udHJvbCIsICItd2Via2l0LWZvY3VzLXJpbmctY29sb3IiLCAiLXdlYmtpdC1ncmFiIiwgIi13
ZWJraXQtZ3JhYmJpbmciLAogICAgICAgICAiLXdlYmtpdC1ncmFkaWVudCIsICItd2Via2l0LWlu
bGluZS1ib3giLCAiLXdlYmtpdC1sZWZ0IiwgIi13ZWJraXQtbGluayIsICItd2Via2l0LW1hcnF1
ZWUiLCAiLXdlYmtpdC1taW5pLWNvbnRyb2wiLCAiLXdlYmtpdC1ub3dyYXAiLCAiLXdlYmtpdC1w
aWN0b2dyYXBoIiwKICAgICAgICAgIi13ZWJraXQtcmlnaHQiLCAiLXdlYmtpdC1zbWFsbC1jb250
cm9sIiwgIi13ZWJraXQtdGV4dCIsICItd2Via2l0LXh4eC1sYXJnZSIsICItd2Via2l0LXpvb20t
aW4iLCAiLXdlYmtpdC16b29tLW91dCIsCiAgICAgXS5rZXlTZXQoKTsKSW5kZXg6IFdlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VDU1NUb2tlbml6ZXIuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvdXJjZUNTU1Rva2VuaXplci5qcwkocmV2aXNp
b24gOTY3MTkpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlQ1NTVG9rZW5p
emVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBACiAgICAgICAgICJ1cHBlci1n
cmVlayIsICJ1cHBlci1oZXhhZGVjaW1hbCIsICJ1cHBlci1sYXRpbiIsICJ1cHBlci1ub3J3ZWdp
YW4iLCAidXBwZXItcm9tYW4iLCAidXBwZXJjYXNlIiwgInVyZHUiLCAidXJsIiwgInZlcnRpY2Fs
IiwgInZlcnRpY2FsLXRleHQiLCAidmlzaWJsZSIsCiAgICAgICAgICJ2aXNpYmxlRmlsbCIsICJ2
aXNpYmxlUGFpbnRlZCIsICJ2aXNpYmxlU3Ryb2tlIiwgInZpc3VhbCIsICJ3LXJlc2l6ZSIsICJ3
YWl0IiwgIndhdmUiLCAid2hpdGUiLCAid2lkZXIiLCAid2luZG93IiwgIndpbmRvd2ZyYW1lIiwg
IndpbmRvd3RleHQiLAogICAgICAgICAieC1sYXJnZSIsICJ4LXNtYWxsIiwgInhvciIsICJ4eC1s
YXJnZSIsICJ4eC1zbWFsbCIsICJ5ZWxsb3ciLCAiLXdhcC1tYXJxdWVlIiwgIi13ZWJraXQtYWN0
aXZlbGluayIsICItd2Via2l0LWF1dG8iLCAiLXdlYmtpdC1iYXNlbGluZS1taWRkbGUiLAotICAg
ICAgICAiLXdlYmtpdC1ib2R5IiwgIi13ZWJraXQtYm94IiwgIi13ZWJraXQtY2VudGVyIiwgIi13
ZWJraXQtY29udHJvbCIsICItd2Via2l0LWZvY3VzLXJpbmctY29sb3IiLCAiLXdlYmtpdC1ncmFi
IiwgIi13ZWJraXQtZ3JhYmJpbmciLAorICAgICAgICAiLXdlYmtpdC1ibGFja2xldHRlciIsICIt
d2Via2l0LWJvZHkiLCAiLXdlYmtpdC1ib3giLCAiLXdlYmtpdC1jZW50ZXIiLCAiLXdlYmtpdC1j
b250cm9sIiwgIi13ZWJraXQtZm9jdXMtcmluZy1jb2xvciIsICItd2Via2l0LWdyYWIiLCAiLXdl
YmtpdC1ncmFiYmluZyIsCiAgICAgICAgICItd2Via2l0LWdyYWRpZW50IiwgIi13ZWJraXQtaW5s
aW5lLWJveCIsICItd2Via2l0LWxlZnQiLCAiLXdlYmtpdC1saW5rIiwgIi13ZWJraXQtbWFycXVl
ZSIsICItd2Via2l0LW1pbmktY29udHJvbCIsICItd2Via2l0LW5vd3JhcCIsICItd2Via2l0LXBp
Y3RvZ3JhcGgiLAogICAgICAgICAiLXdlYmtpdC1yaWdodCIsICItd2Via2l0LXNtYWxsLWNvbnRy
b2wiLCAiLXdlYmtpdC10ZXh0IiwgIi13ZWJraXQteHh4LWxhcmdlIiwgIi13ZWJraXQtem9vbS1p
biIsICItd2Via2l0LXpvb20tb3V0IiwKICAgICBdLmtleVNldCgpOwpJbmRleDogV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzCShy
ZXZpc2lvbiA5NjcxOSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuanMJKHdvcmtpbmcgY29weSkKQEAgLTMwMSw3ICszMDEsNyBAQAogICAgICAg
ICAiLXdlYmtpdC1jb250cm9sIiwgInN0YXR1cy1iYXIiLCAiaXRhbGljIiwgIm9ibGlxdWUiLCAi
c21hbGwtY2FwcyIsICJub3JtYWwiLCAiYm9sZCIsICJib2xkZXIiLCAibGlnaHRlciIsCiAgICAg
ICAgICIxMDAiLCAiMjAwIiwgIjMwMCIsICI0MDAiLCAiNTAwIiwgIjYwMCIsICI3MDAiLCAiODAw
IiwgIjkwMCIsICJ4eC1zbWFsbCIsICJ4LXNtYWxsIiwgInNtYWxsIiwgIm1lZGl1bSIsCiAgICAg
ICAgICJsYXJnZSIsICJ4LWxhcmdlIiwgInh4LWxhcmdlIiwgIi13ZWJraXQteHh4LWxhcmdlIiwg
InNtYWxsZXIiLCAibGFyZ2VyIiwgInNlcmlmIiwgInNhbnMtc2VyaWYiLCAiY3Vyc2l2ZSIsCi0g
ICAgICAgICJmYW50YXN5IiwgIm1vbm9zcGFjZSIsICItd2Via2l0LWJvZHkiLCAiLXdlYmtpdC1w
aWN0b2dyYXBoIgorICAgICAgICAiZmFudGFzeSIsICJtb25vc3BhY2UiLCAiLXdlYmtpdC1ib2R5
IiwgIi13ZWJraXQtcGljdG9ncmFwaCIsICItd2Via2l0LWJsYWNrbGV0dGVyIgogICAgIF0sCiAg
ICAgImRvbWluYW50LWJhc2VsaW5lIjogWwogICAgICAgICAibWlkZGxlIiwgImF1dG8iLCAiY2Vu
dHJhbCIsICJ0ZXh0LWJlZm9yZS1lZGdlIiwgInRleHQtYWZ0ZXItZWRnZSIsICJpZGVvZ3JhcGhp
YyIsICJhbHBoYWJldGljIiwgImhhbmdpbmciLApAQCAtMzY1LDcgKzM2NSw3IEBACiAgICAgICAg
ICJhYnNvbHV0ZSIsICJmaXhlZCIsICJyZWxhdGl2ZSIsICJzdGF0aWMiCiAgICAgXSwKICAgICAi
Zm9udC1mYW1pbHkiOiBbCi0gICAgICAgICJzZXJpZiIsICJzYW5zLXNlcmlmIiwgImN1cnNpdmUi
LCAiZmFudGFzeSIsICJtb25vc3BhY2UiLCAiLXdlYmtpdC1ib2R5IiwgIi13ZWJraXQtcGljdG9n
cmFwaCIKKyAgICAgICAgInNlcmlmIiwgInNhbnMtc2VyaWYiLCAiY3Vyc2l2ZSIsICJmYW50YXN5
IiwgIm1vbm9zcGFjZSIsICItd2Via2l0LWJvZHkiLCAiLXdlYmtpdC1waWN0b2dyYXBoIiwgIi13
ZWJraXQtYmxhY2tsZXR0ZXIiCiAgICAgXSwKICAgICAidGV4dC1vdmVyZmxvdy1tb2RlIjogWwog
ICAgICAgICAiY2xpcCIsICJlbGxpcHNpcyIKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5
d29yZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgko
cmV2aXNpb24gOTY3MTkpCisrKyBXZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMsNiArMTAzLDcgQEAKIGN1cnNpdmUKIGZhbnRhc3kKIG1vbm9zcGFj
ZQorLXdlYmtpdC1ibGFja2xldHRlcgogLXdlYmtpdC1ib2R5CiAtd2Via2l0LXBpY3RvZ3JhcGgK
IC8vCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gOTY3MTkpCisrKyBX
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkxNCw2
ICsyOTE0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmYWNlID0gbW9ub3NwYWNlRmFt
aWx5OwogICAgICAgICAgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldEdlbmVyaWNG
YW1pbHkoRm9udERlc2NyaXB0aW9uOjpNb25vc3BhY2VGYW1pbHkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRC
bGFja2xldHRlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZhY2UgPSBibGFja2xldHRlckZh
bWlseTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmlj
RmFtaWx5KEZvbnREZXNjcmlwdGlvbjo6QmxhY2tsZXR0ZXJGYW1pbHkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJr
aXRQaWN0b2dyYXBoOgogICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSA9IHBpY3RvZ3JhcGhG
YW1pbHk7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0R2VuZXJp
Y0ZhbWlseShGb250RGVzY3JpcHRpb246OlBpY3RvZ3JhcGhGYW1pbHkpOwpJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NG
b250U2VsZWN0b3IuY3BwCShyZXZpc2lvbiA5NjcxOSkKKysrIFdlYkNvcmUvY3NzL0NTU0ZvbnRT
ZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMSw2ICszMTEsOSBAQAogICAgICAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVNb25vc3BhY2U6CiAgICAgICAgICAgICAgICAgICAgIGZhbWls
eU5hbWUgPSBtb25vc3BhY2VGYW1pbHk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVXZWJraXRCbGFja2xldHRlcjoKKyAgICAgICAgICAg
ICAgICAgICAgZmFtaWx5TmFtZSA9IGJsYWNrbGV0dGVyRmFtaWx5OworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlV2Via2l0UGljdG9ncmFw
aDoKICAgICAgICAgICAgICAgICAgICAgZmFtaWx5TmFtZSA9IHBpY3RvZ3JhcGhGYW1pbHk7CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDE1LDYgKzQxOCw4IEBACiAgICAgICAgICBn
ZW5lcmljRmFtaWx5ID0gc2V0dGluZ3MtPmZhbnRhc3lGb250RmFtaWx5KHNjcmlwdCk7CiAgICAg
ZWxzZSBpZiAoZmFtaWx5TmFtZSA9PSBtb25vc3BhY2VGYW1pbHkpCiAgICAgICAgICBnZW5lcmlj
RmFtaWx5ID0gc2V0dGluZ3MtPmZpeGVkRm9udEZhbWlseShzY3JpcHQpOworICAgIGVsc2UgaWYg
KGZhbWlseU5hbWUgPT0gYmxhY2tsZXR0ZXJGYW1pbHkpCisgICAgICAgICBnZW5lcmljRmFtaWx5
ID0gc2V0dGluZ3MtPmJsYWNrbGV0dGVyRm9udEZhbWlseShzY3JpcHQpOwogICAgIGVsc2UgaWYg
KGZhbWlseU5hbWUgPT0gcGljdG9ncmFwaEZhbWlseSkKICAgICAgICAgIGdlbmVyaWNGYW1pbHkg
PSBzZXR0aW5ncy0+cGljdG9ncmFwaEZvbnRGYW1pbHkoc2NyaXB0KTsKICAgICBlbHNlIGlmIChm
YW1pbHlOYW1lID09IHN0YW5kYXJkRmFtaWx5KQpJbmRleDogV2ViQ29yZS9jc3MvV2ViS2l0Rm9u
dEZhbWlseU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL1dlYktpdEZvbnRGYW1p
bHlOYW1lcy5pbgkocmV2aXNpb24gOTY3MTkpCisrKyBXZWJDb3JlL2Nzcy9XZWJLaXRGb250RmFt
aWx5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTMsNSArMyw2IEBACiBtb25vc3BhY2VGYW1p
bHk9Ii13ZWJraXQtbW9ub3NwYWNlIgogc2Fuc1NlcmlmRmFtaWx5PSItd2Via2l0LXNhbnMtc2Vy
aWYiCiBzZXJpZkZhbWlseT0iLXdlYmtpdC1zZXJpZiIKK2JsYWNrbGV0dGVyRmFtaWx5PSItd2Vi
a2l0LWJsYWNrbGV0dGVyIgogcGljdG9ncmFwaEZhbWlseT0iLXdlYmtpdC1waWN0b2dyYXBoIgog
c3RhbmRhcmRGYW1pbHk9Ii13ZWJraXQtc3RhbmRhcmQiCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDk2NzE5KQorKysgV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODE0LDYgKzgxNCw4IEBACiAgICAgICAgIHJldHVybiBDU1NWYWx1ZUZhbnRhc3k7CiAgICAgaWYg
KGZhbWlseSA9PSBtb25vc3BhY2VGYW1pbHkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZU1vbm9z
cGFjZTsKKyAgICBpZiAoZmFtaWx5ID09IGJsYWNrbGV0dGVyRmFtaWx5KQorICAgICAgICByZXR1
cm4gQ1NTVmFsdWVXZWJraXRCbGFja2xldHRlcjsKICAgICBpZiAoZmFtaWx5ID09IHBpY3RvZ3Jh
cGhGYW1pbHkpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVdlYmtpdFBpY3RvZ3JhcGg7CiAgICAg
aWYgKGZhbWlseSA9PSBzYW5zU2VyaWZGYW1pbHkpCkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiA5NjcxOSkKKysrIFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw5IEBA
CiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RmFudGFzeUZvbnRGYW1pbHkoV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tTdHJpbmdSZWYgZmFtaWx5KTsKIFdLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS1ByZWZlcmVuY2VzQ29weUZhbnRhc3lGb250RmFtaWx5KFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2Vz
U2V0QmxhY2tsZXR0ZXJGb250RmFtaWx5KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYs
IFdLU3RyaW5nUmVmIGZhbWlseSk7CitXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQcmVmZXJlbmNl
c0NvcHlCbGFja2xldHRlckZvbnRGYW1pbHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1Jl
Zik7CisKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRQaWN0b2dyYXBoRm9udEZhbWls
eShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBXS1N0cmluZ1JlZiBmYW1pbHkpOwog
V0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUHJlZmVyZW5jZXNDb3B5UGljdG9ncmFwaEZvbnRGYW1p
bHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiAKSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiA5NjcxOSkKKysrIFdlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MzIsNiArMjMyLDE2IEBACiAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPmZhbnRhc3lGb250RmFtaWx5KCkpOwogfQogCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRC
bGFja2xldHRlckZvbnRGYW1pbHkoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgV0tT
dHJpbmdSZWYgZmFtaWx5KQoreworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEJsYWNr
bGV0dGVyRm9udEZhbWlseSh0b1dURlN0cmluZyhmYW1pbHkpKTsKK30KKworV0tTdHJpbmdSZWYg
V0tQcmVmZXJlbmNlc0NvcHlCbGFja2xldHRlckZvbnRGYW1pbHkoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+YmxhY2tsZXR0ZXJGb250RmFtaWx5KCkpOworfQorCiB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRQaWN0b2dyYXBoRm9udEZhbWlseShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
LCBXS1N0cmluZ1JlZiBmYW1pbHkpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0
UGljdG9ncmFwaEZvbnRGYW1pbHkodG9XVEZTdHJpbmcoZmFtaWx5KSk7CkluZGV4OiBXZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTY3MTkpCisrKyBX
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTBFNzhGMjAyMTQzQ0U4MDMwMDc4
NUZGMiAvKiBXZWJQcmVmZXJlbmNlc1N0b3JlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEU3OEYyMDExNDNDRTgwMzAwNzg1RkYyIC8qIFdlYlBy
ZWZlcmVuY2VzU3RvcmVNYWMubW0gKi87IH07CiAJCTBGMTc0QUEzMTQyQTRDQjcwMDM5MjUwRiAv
KiBXZWJHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYxNzRBQTIxNDJBNENCNjAwMzkyNTBGIC8qIFdlYkdlb21ldHJ5LmggKi87IH07CiAJ
CTBGMTc0QUE3MTQyQUFDNjEwMDM5MjUwRiAvKiBXS0dlb21ldHJ5LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTc0QUE2MTQyQUFDNjEwMDM5MjUw
RiAvKiBXS0dlb21ldHJ5LmNwcCAqLzsgfTsKIAkJMEZCNjU5MjMxMjA4QjREQjAwNDQ4MTZDIC8q
IERyYXdpbmdBcmVhSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZCNjU5MjIxMjA4QjREQjAwNDQ4MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oICov
OyB9OwpAQCAtOTQ4LDYgKzk0OSw3IEBACiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9
OwogCQkwODlDMTY2N0ZFODQxMTU4QzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
cGxpc3Quc3RyaW5nczsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxwcm9qL0luZm9Q
bGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRTc4RjIwMTE0M0NF
ODAzMDA3ODVGRjIgLyogV2ViUHJlZmVyZW5jZXNTdG9yZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlByZWZlcmVuY2VzU3RvcmVNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTc0QUEyMTQyQTRDQjYwMDM5MjUwRiAvKiBXZWJH
ZW9tZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJHZW9tZXRyeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE3NEFBNjE0MkFBQzYxMDAzOTI1MEYg
LyogV0tHZW9tZXRyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
S0dlb21ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCNjU5MjIxMjA4
QjREQjAwNDQ4MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEcmF3aW5nQXJlYUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI5NjEsNiArMjk2Myw3IEBACiAJCQkJOTA1NjIwRTUxMkJDMjQ3NjAwMDc5OUI2IC8qIFdl
Yk1lbW9yeVNhbXBsZXIubWFjLm1tICovLAogCQkJCUJDRTIzMUMwMTIyQzQ2NkUwMEQ1QzM1QSAv
KiBXZWJVUkxSZXF1ZXN0TWFjLm1tICovLAogCQkJCUJDOTBBMUQ1MTIyREQ2NkEwMENDOEM1MCAv
KiBXZWJVUkxSZXNwb25zZU1hYy5tbSAqLywKKwkJCQkwRTc4RjIwMTE0M0NFODAzMDA3ODVGRjIg
LyogV2ViUHJlZmVyZW5jZXNTdG9yZU1hYy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwog
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQ1NzEsNiArNDU3NCw3IEBACiAJCQkJRTE5
OTg3NUUxNDJDMDQ1NDAwQkIyREU3IC8qIEJ1aWx0SW5QREZWaWV3LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMTc0QUE3MTQyQUFDNjEwMDM5MjUwRiAvKiBXS0dlb21ldHJ5LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI2MkU3MzEwMTQzMDQ3QTYwMDY5RUMzNSAvKiBXS0hpdFRlc3RSZXN1bHQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEU3OEYyMDIxNDNDRTgwMzAwNzg1RkYyIC8qIFdlYlBy
ZWZlcmVuY2VzU3RvcmVNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdDIvU2hhcmVk
L21hYy9XZWJQcmVmZXJlbmNlc1N0b3JlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hh
cmVkL21hYy9XZWJQcmVmZXJlbmNlc1N0b3JlTWFjLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
Mi9TaGFyZWQvbWFjL1dlYlByZWZlcmVuY2VzU3RvcmVNYWMubW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTmljaG9sYXMgU2hhbmtzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIFdFQktJVCBQUk9KRUNUIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIFdFQktJVCBQUk9KRUNUIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCisKKyNpbXBvcnQgPEFwcEtpdC9OU0ZvbnRNYW5h
Z2VyLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXVEY7CisKK25hbWVzcGFjZSBXZWJLaXQgeworICAg
IAorY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gV2ViUHJlZmVyZW5jZXNTdG9yZTo6cGxh
dGZvcm1TdHJpbmdEZWZhdWx0cyh2b2lkKQoreworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
JiBvdmVycmlkZXMgPSAqbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+OworICAgIAorICAgIC8v
IEZvciB0aGUgQmxhY2tsZXR0ZXIgZm9udCBmYW1pbHksIHdlIG92ZXJyaWRlIHRoZSBkZWZhdWx0
IGFuZCBwZXJmb3JtIGEgc2VhcmNoIG9mIGluc3RhbGxlZCBmb250cy4KKyAgICAvLyBTaW5jZSB3
ZSdyZSB1c2luZyBhIHN0YXRpYyBIYXNoTWFwLCB0aGUgV2ViUHJlZmVyZW5jZXNTdG9yZSB3b3Vs
ZCBoYXZlIHRvIGJlIGRpc3Bvc2VkIGFuZCByZWFsbG9jYXRlZCB0byBwaWNrIHVwIG5ldyBmb250
cy4KKyAgICBpbnQgcHJpb3JpdHkgPSAxMDAwOworICAgIE5TU3RyaW5nKiBmb3VuZEZvbnRGYW1p
bHkgPSBuaWwsICphdmFpbGFibGVGb250OworICAgIE5TRm9udE1hbmFnZXIqIGZvbnRNYW5hZ2Vy
ID0gW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdOworICAgIE5TRW51bWVyYXRvciog
YXZhaWxhYmxlRm9udHMgPSBbW2ZvbnRNYW5hZ2VyIGF2YWlsYWJsZUZvbnRzXSBvYmplY3RFbnVt
ZXJhdG9yXTsKKyAgICB3aGlsZSAoKGF2YWlsYWJsZUZvbnQgPSBbYXZhaWxhYmxlRm9udHMgbmV4
dE9iamVjdF0pKSB7CisgICAgICAgIE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMgb3B0aW9ucyA9IChO
U0Nhc2VJbnNlbnNpdGl2ZVNlYXJjaCB8IE5TRGlhY3JpdGljSW5zZW5zaXRpdmVTZWFyY2ggfCBO
U1dpZHRoSW5zZW5zaXRpdmVTZWFyY2gpOworICAgICAgICAKKyAgICAgICAgLy8gQW4gaWYuLi5l
bHNlIHN0cnVjdHVyZSBpcyB1c2VkIGhlcmUgc28gYXMgdG8gcHJpb3JpdGlzZSB0aGUgZWFybGll
ciBzZWFyY2ggc3RyaW5ncyBpbiBtYXRjaGluZyBhIHJlc3VsdC4KKyAgICAgICAgLy8gV2Uga2Vl
cCB0cmFjayBvZiB0aGUgaGlnaGVzdCBwcmVmZXJlbmNlIHJlc3VsdCBmb3VuZCBzbyBmYXIgdW50
aWwgd2UgZ2V0IHRvIHByZWY9PTEgb3IgcnVuIG91dCBvZiBmb250cy4KKyAgICAgICAgCisgICAg
ICAgIC8vIENsb2lzdGVyIEJsYWNrLCBPbGQgRW5nbGlzaCBhbmQgR291ZHkgVGV4dCBhcmUgVmlj
dG9yaWFuIGRlc2lnbnMgZmFpcmx5IGxlZ2libGUgdG8gbW9kZXJuIHJlYWRlcnMsCisgICAgICAg
IC8vIGF2YWlsYWJsZSBmcm9tIHNldmVyYWwgZGlnaXRhbCBmb3VuZGFyaWVzIHdpdGggYXByb3By
aWF0ZSBwcmVmaXhlcyBvciBzdWZmaXhlcy4KKyAgICAgICAgaWYgKFthdmFpbGFibGVGb250IHJh
bmdlT2ZTdHJpbmc6QCJDbG9pc3RlciBCbGFjayIgb3B0aW9uczpvcHRpb25zXS5sZW5ndGggPiAw
KSB7CisgICAgICAgICAgICBmb3VuZEZvbnRGYW1pbHkgPSBhdmFpbGFibGVGb250OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSBpZiAocHJpb3JpdHkgPiAyICYmIFthdmFpbGFi
bGVGb250IHJhbmdlT2ZTdHJpbmc6QCJPbGQgRW5nbGlzaCIgb3B0aW9uczpvcHRpb25zXS5sZW5n
dGggPiAwKSB7CisgICAgICAgICAgICBmb3VuZEZvbnRGYW1pbHkgPSBhdmFpbGFibGVGb250Owor
ICAgICAgICAgICAgcHJpb3JpdHkgPSAyOworICAgICAgICB9IGVsc2UgaWYgKHByaW9yaXR5ID4g
MyAmJiBbYXZhaWxhYmxlRm9udCByYW5nZU9mU3RyaW5nOkAiR291ZHkgVGV4dCIgb3B0aW9uczpv
cHRpb25zXS5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICBmb3VuZEZvbnRGYW1pbHkgPSBhdmFp
bGFibGVGb250OworICAgICAgICAgICAgcHJpb3JpdHkgPSAzOworICAgICAgICAgICAgCisgICAg
ICAgIC8vIE5vdyBjb21lIHRoZSBtb3JlIGdlbmVyYWwgY2F0ZWdvcmllcyBvZiBibGFja2xldHRl
ciBmYWNlcywgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyAnZGlmZmljdWx0eScgdG8gcmVhZC4KKyAg
ICAgICAgfSBlbHNlIGlmIChwcmlvcml0eSA+IDQgJiYgW2F2YWlsYWJsZUZvbnQgcmFuZ2VPZlN0
cmluZzpAIkJsYWNrbGV0dGVyIiBvcHRpb25zOm9wdGlvbnNdLmxlbmd0aCA+IDApIHsKKyAgICAg
ICAgICAgIGZvdW5kRm9udEZhbWlseSA9IGF2YWlsYWJsZUZvbnQ7CisgICAgICAgICAgICBwcmlv
cml0eSA9IDQ7CisgICAgICAgIH0gZWxzZSBpZiAocHJpb3JpdHkgPiA1ICYmIFthdmFpbGFibGVG
b250IHJhbmdlT2ZTdHJpbmc6QCJUZXh0dXIiIG9wdGlvbnM6b3B0aW9uc10ubGVuZ3RoID4gMCkg
eworICAgICAgICAgICAgZm91bmRGb250RmFtaWx5ID0gYXZhaWxhYmxlRm9udDsKKyAgICAgICAg
ICAgIHByaW9yaXR5ID0gNTsKKyAgICAgICAgfSBlbHNlIGlmIChwcmlvcml0eSA+IDYgJiYgW2F2
YWlsYWJsZUZvbnQgcmFuZ2VPZlN0cmluZzpAIlJvdHVuZCIgb3B0aW9uczpvcHRpb25zXS5sZW5n
dGggPiAwKSB7CisgICAgICAgICAgICBmb3VuZEZvbnRGYW1pbHkgPSBhdmFpbGFibGVGb250Owor
ICAgICAgICAgICAgcHJpb3JpdHkgPSA2OworICAgICAgICB9IGVsc2UgaWYgKHByaW9yaXR5ID4g
NyAmJiBbYXZhaWxhYmxlRm9udCByYW5nZU9mU3RyaW5nOkAiU2Nod2FiYWNoIiBvcHRpb25zOm9w
dGlvbnNdLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGZvdW5kRm9udEZhbWlseSA9IGF2YWls
YWJsZUZvbnQ7CisgICAgICAgICAgICBwcmlvcml0eSA9IDc7CisgICAgICAgIH0gZWxzZSBpZiAo
cHJpb3JpdHkgPiA4ICYmIFthdmFpbGFibGVGb250IHJhbmdlT2ZTdHJpbmc6QCJGcmFrdHVyIiBv
cHRpb25zOm9wdGlvbnNdLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGZvdW5kRm9udEZhbWls
eSA9IGF2YWlsYWJsZUZvbnQ7CisgICAgICAgICAgICBwcmlvcml0eSA9IDg7CisgICAgICAgIH0g
ZWxzZSBpZiAoW2F2YWlsYWJsZUZvbnQgcmFuZ2VPZlN0cmluZzpAIkdvdGlzY2giIG9wdGlvbnM6
b3B0aW9uc10ubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgZm91bmRGb250RmFtaWx5ID0gYXZh
aWxhYmxlRm9udDsKKyAgICAgICAgICAgIHByaW9yaXR5ID0gOTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBpZiAoZm91bmRGb250RmFtaWx5KSB7CisgICAgICAgIFN0cmluZyBmb250RmFt
aWx5ID0gKm5ldyBTdHJpbmcoZm91bmRGb250RmFtaWx5KTsKKyAgICAgICAgb3ZlcnJpZGVzLnNl
dCgoU3RyaW5nKSBXZWJQcmVmZXJlbmNlc0tleTo6YmxhY2tsZXR0ZXJGb250RmFtaWx5S2V5KCks
IGZvbnRGYW1pbHkpOworICAgIH0KKworICAgIHJldHVybiBvdmVycmlkZXM7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9y
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5j
cHAJKHJldmlzaW9uIDk2NzE5KQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9y
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsMTIgQEAKICNkZWZpbmUgREVGSU5F
X1NUUklOR19ERUZBVUxUUyhLZXlVcHBlciwgS2V5TG93ZXIsIFR5cGVOYW1lLCBUeXBlLCBEZWZh
dWx0VmFsdWUpIGRlZmF1bHRzLnNldChXZWJQcmVmZXJlbmNlc0tleTo6S2V5TG93ZXIjI0tleSgp
LCBEZWZhdWx0VmFsdWUpOwogICAgICAgICBGT1JfRUFDSF9XRUJLSVRfU1RSSU5HX1BSRUZFUkVO
Q0UoREVGSU5FX1NUUklOR19ERUZBVUxUUykKICN1bmRlZiBERUZJTkVfU1RSSU5HX0RFRkFVTFRT
CisgICAgICAgCisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBjb25zdCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYgb3ZlcnJpZGVzID0gV2ViUHJlZmVyZW5jZXNTdG9yZTo6cGxhdGZvcm1TdHJp
bmdEZWZhdWx0cygpOworICAgICAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG92ZXJyaWRlcy5iZWdpbigpLCBlbmQgPSBvdmVycmlkZXMuZW5kKCk7
IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgICAgIGRlZmF1bHRzLnNldCgoKml0KS5maXJzdCwg
KCppdCkuc2Vjb25kKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHJldHVybiBkZWZhdWx0cy5nZXQo
a2V5KTsKSW5kZXg6IFdlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgJKHJldmlzaW9uIDk2
NzE5KQorKysgV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzAsNiArMTMwLDcgQEAKICAgICBtYWNybyhGaXhlZEZvbnRGYW1pbHksIGZpeGVk
Rm9udEZhbWlseSwgU3RyaW5nLCBTdHJpbmcsICJDb3VyaWVyIE5ldyIpIFwKICAgICBtYWNybyhT
YW5zU2VyaWZGb250RmFtaWx5LCBzYW5zU2VyaWZGb250RmFtaWx5LCBTdHJpbmcsIFN0cmluZywg
IkFyaWFsIikgXAogICAgIG1hY3JvKFNlcmlmRm9udEZhbWlseSwgc2VyaWZGb250RmFtaWx5LCBT
dHJpbmcsIFN0cmluZywgIlRpbWVzIE5ldyBSb21hbiIpIFwKKyAgICBtYWNybyhCbGFja2xldHRl
ckZvbnRGYW1pbHksIGJsYWNrbGV0dGVyRm9udEZhbWlseSwgU3RyaW5nLCBTdHJpbmcsICJPbGQg
RW5nbGlzaCBUZXh0IE1UIikgXAogICAgIG1hY3JvKFBpY3RvZ3JhcGhGb250RmFtaWx5LCBwaWN0
b2dyYXBoRm9udEZhbWlseSwgU3RyaW5nLCBTdHJpbmcsICJUaW1lcyBOZXcgUm9tYW4iKSBcCiAg
ICAgXAogCkBAIC0xNDIsNiArMTQzLDcgQEAKICAgICBtYWNybyhGaXhlZEZvbnRGYW1pbHksIGZp
eGVkRm9udEZhbWlseSwgU3RyaW5nLCBTdHJpbmcsICJDb3VyaWVyIikgXAogICAgIG1hY3JvKFNh
bnNTZXJpZkZvbnRGYW1pbHksIHNhbnNTZXJpZkZvbnRGYW1pbHksIFN0cmluZywgU3RyaW5nLCAi
SGVsdmV0aWNhIikgXAogICAgIG1hY3JvKFNlcmlmRm9udEZhbWlseSwgc2VyaWZGb250RmFtaWx5
LCBTdHJpbmcsIFN0cmluZywgIlRpbWVzIikgXAorICAgIG1hY3JvKEJsYWNrbGV0dGVyRm9udEZh
bWlseSwgYmxhY2tsZXR0ZXJGb250RmFtaWx5LCBTdHJpbmcsIFN0cmluZywgIk9sZCBFbmdsaXNo
IFRleHQgTVQiKSBcCiAgICAgbWFjcm8oUGljdG9ncmFwaEZvbnRGYW1pbHksIHBpY3RvZ3JhcGhG
b250RmFtaWx5LCBTdHJpbmcsIFN0cmluZywgIkFwcGxlIENvbG9yIEVtb2ppIikgXAogICAgIFwK
IApAQCAtMTU0LDYgKzE1Niw3IEBACiAgICAgbWFjcm8oRml4ZWRGb250RmFtaWx5LCBmaXhlZEZv
bnRGYW1pbHksIFN0cmluZywgU3RyaW5nLCAiQ291cmllciBOZXciKSBcCiAgICAgbWFjcm8oU2Fu
c1NlcmlmRm9udEZhbWlseSwgc2Fuc1NlcmlmRm9udEZhbWlseSwgU3RyaW5nLCBTdHJpbmcsICJI
ZWx2ZXRpY2EiKSBcCiAgICAgbWFjcm8oU2VyaWZGb250RmFtaWx5LCBzZXJpZkZvbnRGYW1pbHks
IFN0cmluZywgU3RyaW5nLCAiVGltZXMiKSBcCisgICAgbWFjcm8oQmxhY2tsZXR0ZXJGb250RmFt
aWx5LCBibGFja2xldHRlckZvbnRGYW1pbHksIFN0cmluZywgU3RyaW5nLCAiT2xkIEVuZ2xpc2gg
VGV4dCBNVCIpIFwKICAgICBtYWNybyhQaWN0b2dyYXBoRm9udEZhbWlseSwgcGljdG9ncmFwaEZv
bnRGYW1pbHksIFN0cmluZywgU3RyaW5nLCAiVGltZXMiKSBcCiAgICAgXAogCkBAIC0yMDYsNiAr
MjA5LDggQEAKICAgICBzdGF0aWMgdm9pZCBvdmVycmlkZVhTU0F1ZGl0b3JFbmFibGVkRm9yVGVz
dFJ1bm5lcihib29sKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVUZXN0UnVubmVyT3ZlcnJpZGVz
KCk7CiAKKyAgICBzdGF0aWMgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcGxhdGZvcm1T
dHJpbmdEZWZhdWx0cygpOworCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9zdHJpbmdW
YWx1ZXM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGJvb2w+IG1fYm9vbFZhbHVlczsKICAgICBIYXNo
TWFwPFN0cmluZywgdWludDMyX3Q+IG1fdWludDMyVmFsdWVzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>