<?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>143065</bug_id>
          
          <creation_ts>2015-03-25 16:46:01 -0700</creation_ts>
          <short_desc>Implement iOS WebKit2 PDF Find-in-Page</short_desc>
          <delta_ts>2015-03-27 15:05:56 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080099</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-25 16:46:01 -0700</bug_when>
    <thetext>Implement iOS WebKit2 PDF Find-in-Page</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080101</commentid>
    <comment_count>1</comment_count>
      <attachid>249444</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-25 16:47:05 -0700</bug_when>
    <thetext>Created attachment 249444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080102</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-25 16:49:24 -0700</bug_when>
    <thetext>Attachment 249444 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKPDFView.mm:478:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKPDFView.mm:526:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/_WKFindOptions.h:30:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 8 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>1080515</commentid>
    <comment_count>3</comment_count>
      <attachid>249546</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-26 17:45:10 -0700</bug_when>
    <thetext>Created attachment 249546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080516</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-26 17:47:56 -0700</bug_when>
    <thetext>Attachment 249546 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKPDFView.mm:478:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKPDFView.mm:526:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/_WKFindOptions.h:30:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 8 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>1080547</commentid>
    <comment_count>5</comment_count>
      <attachid>249546</attachid>
    <who name="">mitz</who>
    <bug_when>2015-03-26 21:48:53 -0700</bug_when>
    <thetext>Comment on attachment 249546
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=249546&amp;action=review

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:402
&gt; +- (NSStringCompareOptions)_stringCompareOptionsFromWKFindOptions:(_WKFindOptions)options
&gt; +{
&gt; +    NSStringCompareOptions findOptions = 0;
&gt; +    if (options &amp; _WKFindOptionsCaseInsensitive)
&gt; +        findOptions |= NSCaseInsensitiveSearch;
&gt; +    if (options &amp; _WKFindOptionsBackwards)
&gt; +        findOptions |= NSBackwardsSearch;
&gt; +    return findOptions;
&gt; +}

Seem like this can be a static function.

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:404
&gt; +- (void)_computeMatchesForString:(NSString *)string options:(_WKFindOptions)options maxCount:(NSUInteger)maxCount completionHandler:(void (^)(bool success))completionHandler

Not BOOL?

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:411
&gt; +    _WKFindOptions optionsAffectingResults = options &amp; ~(_WKFindOptionsBackwards | _WKFindOptionsShowOverlay | _WKFindOptionsShowFindIndicator | _WKFindOptionsShowHighlight | _WKFindOptionsWrapAround | _WKFindOptionsDetermineMatchIndex);

Maybe this should be defined in _WKFindOptions.h so that when new options are added the person adding them can remember to update this value if needed.

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:432
&gt; +    unsigned computeMatchesOperationID = _nextComputeMatchesOperationID++;

I’d ++_nextComputedMatchesOperationID here…(*)

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:437
&gt; +    dispatch_async(_findQueue, ^{

I think we prefer lambdas with explicit captures to blocks in C++ code.

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:440
&gt; +        for (unsigned pageIndex = 0; pageIndex &lt; pages.size(); pageIndex++) {

post++!

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:448
&gt; +                if (_nextComputeMatchesOperationID &gt; computeMatchesOperationID + 1) {

* …and do a simple != here.

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:460
&gt; +            if (_nextComputeMatchesOperationID &gt; computeMatchesOperationID + 1)

and here.

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:496
&gt; +            CGRect zoomRect = [pageInfo.view convertRectFromPDFPageSpace:[match bounds]];

.bounds

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:517
&gt; +            NSUInteger location = [_currentFindSelection startIndex];

Can this be zero?

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:518
&gt; +            previousFindSelection = adoptNS([[UIPDFSelection alloc] initWithPage:[_currentFindSelection page] fromIndex:location - 1 toIndex:location]);

What if location is zero?

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:531
&gt; +        for (unsigned i = 0; i &lt; _pages.size(); i++) {

post++ again?

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:532
&gt; +            UIPDFSelection *match = [_pages[pageIndex].page findString:string fromSelection:(pageIndex == previousFindPageIndex ? previousFindSelection.get() : nullptr) options:findOptions];

nil</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080702</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-27 12:26:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 249546 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249546&amp;action=review
&gt; &gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:411
&gt; &gt; +    _WKFindOptions optionsAffectingResults = options &amp; ~(_WKFindOptionsBackwards | _WKFindOptionsShowOverlay | _WKFindOptionsShowFindIndicator | _WKFindOptionsShowHighlight | _WKFindOptionsWrapAround | _WKFindOptionsDetermineMatchIndex);
&gt; 
&gt; Maybe this should be defined in _WKFindOptions.h so that when new options
&gt; are added the person adding them can remember to update this value if needed.

I&apos;m not sure, because whether &quot;Backwards&quot; affects results or not depends on what you&apos;re doing. I do agree that it would be unfortunate if new options were added and not added to this list, though. Maybe _WKFindOptions.h can have the list except Backwards and we can add Backwards in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080759</commentid>
    <comment_count>7</comment_count>
      <attachid>249609</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-27 14:47:54 -0700</bug_when>
    <thetext>Created attachment 249609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080761</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-27 14:50:39 -0700</bug_when>
    <thetext>Attachment 249609 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKPDFView.mm:487:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKPDFView.mm:536:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/_WKFindOptions.h:30:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 8 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>1080770</commentid>
    <comment_count>9</comment_count>
      <attachid>249611</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-27 15:04:34 -0700</bug_when>
    <thetext>Created attachment 249611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080771</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-03-27 15:05:56 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/182085</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249444</attachid>
            <date>2015-03-25 16:47:05 -0700</date>
            <delta_ts>2015-03-26 17:45:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143065-20150325164628.patch</filename>
            <type>text/plain</type>
            <size>28250</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmFiZGI0MmQ5MDU1NTEz
ZDEzZGRiNWI0YzY0ZDhlMjYyZWNkNjUzZi4uN2Q1ZjNiZTViYjYxOGVlZWNkZjg1MzBiMzY0NDgx
MzJiNGY3OWI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE1LTAzLTI1ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBp
T1MgV2ViS2l0MiBQREYgRmluZC1pbi1QYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2Nzkz
MzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
UGxhdGZvcm0vc3BpL2lvcy9Db3JlUERGU1BJLmg6CisgICAgICAgIEFkZCBzb21lIFNQSS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvdW50U3RyaW5nTWF0Y2hlczpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2ZpbmRTdHJpbmc6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9oaWRlRmluZFVJXSk6CisgICAgICAgIElmIHdlIGhhdmUgYSBjdXN0b20g
Y29udGVudCB2aWV3LCBmb3J3YXJkIGZpbmQtaW4tcGFnZSBtZXRob2RzIHRvIGl0LgorICAgICAg
ICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZpbmRPcHRpb25zLmg6CisgICAgICAgIE1v
dmUgX1dLRmluZE9wdGlvbnMgaW50byBpdHMgb3duIGZpbGUuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmg6CisgICAgICAgIEFkZCBmaW5kLXJl
bGF0ZWQgbWV0aG9kcyB0byB0aGUgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyIHByb3RvY29sLgor
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERG
VmlldyB3ZWJfaW5pdFdpdGhGcmFtZTp3ZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1BERlZpZXcg
ZGVhbGxvY10pOgorICAgICAgICBNYWludGFpbiBhIGRpc3BhdGNoIHF1ZXVlIGZvciBzZWFyY2hp
bmcgdGhlIFBERi4KKworICAgICAgICAoLVtXS1BERlZpZXcgd2ViX3NldENvbnRlbnRQcm92aWRl
ckRhdGE6c3VnZ2VzdGVkRmlsZW5hbWU6XSk6CisgICAgICAgIEZpeCBhIHR5cGUuCisKKyAgICAg
ICAgKC1bV0tQREZWaWV3IF9lbnN1cmVWaWV3Rm9yUGFnZTpdKToKKyAgICAgICAgU3BsaXQgdGhl
IGNvZGUgdG8gY3JlYXRlL3BhcmVudCBhIHBhZ2UgdmlldyBvdXQgZnJvbSBfcmV2YWxpZGF0ZVZp
ZXdzLAorICAgICAgICBzbyB0aGF0IHRoZSBmaW5kIGNvZGUgY2FuIGNyZWF0ZS9wYXJlbnQgdGhl
IHRhcmdldHRlZCBVSVBERlBhZ2VWaWV3CisgICAgICAgIGluIG9yZGVyIHRvIGluc3RhbGwgdGhl
IGZpbmQgaGlnaGxpZ2h0IGluIGl0LCBidXQgYmVmb3JlIGl0IGlzIHNjcm9sbGVkIGludG8gdmll
dy4KKworICAgICAgICAoLVtXS1BERlZpZXcgX3JldmFsaWRhdGVWaWV3c10pOgorICAgICAgICBV
c2UgdGhlIHN0b3JlZCBwYWdlIGluZGV4IGluc3RlYWQgb2YgY291bnRpbmcgYWdhaW4uCisgICAg
ICAgIERvbid0IHVucGFyZW50IHBhZ2Ugdmlld3MgdGhhdCBoYXZlIGZpbmQtaW4tcGFnZSBoaWdo
bGlnaHRzIGluIHRoZW0sIGJlY2F1c2UKKyAgICAgICAgd2Ugd29uJ3Qga25vdyBlbm91Z2ggdG8g
cmVjcmVhdGUgdGhlbSBsYXRlci4KKworICAgICAgICAoLVtXS1BERlZpZXcgX2NvbXB1dGVQYWdl
QW5kRG9jdW1lbnRGcmFtZXNdKToKKyAgICAgICAgUHV0IHRoZSBwYWdlIGluZGV4IGluIFBERlBh
Z2VJbmZvLCBmb3IgcmVmZXJlbmNlIGVsc2V3aGVyZS4KKworICAgICAgICAoLVtXS1BERlZpZXcg
X3N0cmluZ0NvbXBhcmVPcHRpb25zRnJvbVdLRmluZE9wdGlvbnM6XSk6CisgICAgICAgICgtW1dL
UERGVmlldyBfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6b3B0aW9uczptYXhDb3VudDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgQXN5bmNocm9ub3VzbHkgKGFuZCBvbiBvdXIgc2VyaWFs
IHF1ZXVlKSBzZWFyY2ggdGhlIFBERiBmb3IgdGhlIGdpdmVuIHN0cmluZy4KKyAgICAgICAgV2Un
bGwgY2FjaGUgdGhlIG1vc3QgcmVjZW50IHJlc3VsdHMgdG8gYXZvaWQgc2VhcmNoaW5nIG1vcmUg
dGhhbiBvbmNlLAorICAgICAgICBjYW5jZWwgZXhpc3Rpbmcgc2VhcmNoZXMgd2hlbiBhbm90aGVy
IGJlZ2lucyAoc2luY2UgaXQncyBhIHNlcmlhbCBxdWV1ZSwKKyAgICAgICAgdGhpcyBlbnN1cmVz
IHdlJ2xsIG9ubHkgaGF2ZSBvbmUgc2VhcmNoIGFjdGl2ZSBhdCBhIHRpbWUpLgorCisgICAgICAg
ICgtW1dLUERGVmlldyB3ZWJfY291bnRTdHJpbmdNYXRjaGVzOm9wdGlvbnM6bWF4Q291bnQ6XSk6
CisgICAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBmb3IgdGhlIGdpdmVuIHN0cmlu
ZywgYW5kIGluZm9ybSB0aGUgRmluZENsaWVudAorICAgICAgICBvZiB0aGUgcmVzdWx0LgorCisg
ICAgICAgICgtW1dLUERGVmlldyBfZGlkRmluZE1hdGNoOl0pOgorICAgICAgICBXaGVuIHdlIGZp
bmQgYSBtYXRjaCwgY3JlYXRlIGEgdmlldyBmb3IgaXQsIGhpZ2hsaWdodCB0aGUgbWF0Y2gsIGFu
ZAorICAgICAgICB6b29tIHNvIHRoYXQgaXQncyBpbi12aWV3LgorCisgICAgICAgICgtW1dLUERG
VmlldyB3ZWJfZmluZFN0cmluZzpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAgICBJbmNyZW1l
bnRhbGx5IHNlYXJjaCB0aGUgZG9jdW1lbnQgZm9yIHRoZSBnaXZlbiBzdHJpbmcuIFdlIGRvIGFu
IGluY3JlbWVudGFsCisgICAgICAgIHNlYXJjaCBldmVuIGlmIHdlIGhhdmUgYWxsIG9mIHRoZSBy
ZXN1bHRzIHNvIHRoYXQgd2UgY2FuIGFuY2hvciB0aGUgc2VhcmNoCisgICAgICAgIGluIHRoZSBy
aWdodCBwbGFjZSBpZiB0aGUgbmV3IHN0cmluZyBpcyBhIHByZWZpeCBvZiB0aGUgb2xkIHN0cmlu
ZywgZXRjLgorICAgICAgICBXcmFwIGFyb3VuZCBhcHByb3ByaWF0ZWx5IHdoZW4gc2VhcmNoaW5n
IHBhc3QgdGhlIGJlZ2lubmluZyBvciBlbmQgb2YgdGhlCisgICAgICAgIGRvY3VtZW50LiBJZiB3
ZSBoYXZlIGFsbCBvZiB0aGUgcmVzdWx0cyAodGhlcmUgd2VyZSBsZXNzIHRoYW4gbWF4Q291bnQg
cmVzdWx0cyksCisgICAgICAgIGxvb2sgdGhyb3VnaCB0aGUgY2FjaGVkIG1hdGNoZXMgZm9yIHRo
ZSBpbmNyZW1lbnRhbGx5LWZvdW5kIHJlc3VsdCBhbmQKKyAgICAgICAgcmVwb3J0IGl0cyBpbmRl
eCB0byB0aGUgY2xpZW50LgorCisgICAgICAgICgtW1dLUERGVmlldyB3ZWJfaGlkZUZpbmRVSV0p
OgorICAgICAgICBEaXNtaXNzIHRoZSBzZWxlY3Rpb24gYW5kIGNsZWFyIHNvbWUgc3RhdGUgc28g
d2Ugc3RhcnQgdGhlIG5leHQgc2VhcmNoIGFmcmVzaC4KKworICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wMy0yMyAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbWFnZXMgc2hhcmVkIHRvIHBob3RvcyB2
aWEgYWN0aW9uIG1lbnUgYXJlIHBhZGRlZCB3aXRoIHplcm9lcyBhdCB0aGUgZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvQ29yZVBERlNQSS5oCmluZGV4IDYzOTU4MTM1MzE2
NmFmNzNjN2Q4NjU5MDJkMzc5MzBlNzE4YjRjYWMuLmFjZTlhNzFhNDczMDI3MTY5YTMzN2MwYzc4
MTMyZjVhY2MxYzA5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9p
b3MvQ29yZVBERlNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvQ29y
ZVBERlNQSS5oCkBAIC0zMywxNCArMzMsMTggQEAKICNpbXBvcnQgPENvcmVQREYvVUlQREZMaW5r
QW5ub3RhdGlvbi5oPgogI2ltcG9ydCA8Q29yZVBERi9VSVBERlBhZ2UuaD4KICNpbXBvcnQgPENv
cmVQREYvVUlQREZQYWdlVmlldy5oPgorI2ltcG9ydCA8Q29yZVBERi9VSVBERlNlbGVjdGlvbi5o
PgogCiAjZWxzZQogCitAY2xhc3MgVUlQREZTZWxlY3Rpb247CisKIEBpbnRlcmZhY2UgVUlQREZQ
YWdlIDogTlNPYmplY3QKIEBlbmQKIAogQGludGVyZmFjZSBVSVBERlBhZ2UgKERldGFpbHMpCiAt
IChDR1JlY3QpY3JvcEJveEFjY291bnRGb3JSb3RhdGlvbjsKKy0gKFVJUERGU2VsZWN0aW9uICop
ZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZnJvbVNlbGVjdGlvbjooVUlQREZTZWxlY3Rp
b24gKilzZWxlY3Rpb24gb3B0aW9uczooTlNTdHJpbmdDb21wYXJlT3B0aW9ucylvcHRpb25zOwog
QGVuZAogCiBAaW50ZXJmYWNlIFVJUERGRG9jdW1lbnQgOiBOU09iamVjdApAQCAtNTUsNiArNTks
NyBAQAogCiB0eXBlZGVmIGVudW0gewogICAgIGtVSVBERk9iamVjdEtpbmRHcmFwaGljID0gMSwK
KyAgICBrVUlQREZPYmplY3RLaW5kVGV4dCA9IDIKIH0gVUlQREZPYmplY3RLaW5kOwogCiBAY2xh
c3MgVUlQREZQYWdlVmlldzsKQEAgLTEyMCw0ICsxMjUsMTQgQEAgdHlwZWRlZiBlbnVtIHsKIC0g
KHZvaWQpYW5ub3RhdGlvbjooVUlQREZBbm5vdGF0aW9uICopYW5ub3RhdGlvbiBpc0JlaW5nUHJl
c3NlZEF0UG9pbnQ6KENHUG9pbnQpIHBvaW50IGNvbnRyb2xsZXI6KFVJUERGQW5ub3RhdGlvbkNv
bnRyb2xsZXIgKiljb250cm9sbGVyOwogQGVuZAogCitAaW50ZXJmYWNlIFVJUERGU2VsZWN0aW9u
IDogTlNPYmplY3QKK0BlbmQKKworQGludGVyZmFjZSBVSVBERlNlbGVjdGlvbiAoRGV0YWlscykK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIENGUmFuZ2Ugc3RyaW5nUmFuZ2U7CistIChD
R1JlY3QpYm91bmRzOworLSAoVUlQREZQYWdlICopcGFnZTsKKy0gKE5TVUludGVnZXIpc3RhcnRJ
bmRleDsKK0BlbmQKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDU1YzdhNWZiNWUzMTg2NGRmMjFlZDc4MjE4NGMyZjA3
YTMwYTBmZGIuLjNhYTc2NzIwMzVjYWFlNmZhMDM4NTIxNmE4ZDk4ZWE2NmQ4ZTNhYzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0y
MDkwLDE2ICsyMDkwLDM0IEBAIHN0YXRpYyBpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0Zp
bmRPcHRpb25zKF9XS0ZpbmRPcHRpb25zIHdrRmluZE9wdGlvbnMpCiAKIC0gKHZvaWQpX2NvdW50
U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMp
b3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAogeworI2lmIFBMQVRGT1JNKElP
UykKKyAgICBpZiAoX2N1c3RvbUNvbnRlbnRWaWV3KSB7CisgICAgICAgIFtfY3VzdG9tQ29udGVu
dFZpZXcgd2ViX2NvdW50U3RyaW5nTWF0Y2hlczpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1heENv
dW50Om1heENvdW50XTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAgIF9wYWdl
LT5jb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCB0b0ZpbmRPcHRpb25zKG9wdGlvbnMpLCBtYXhD
b3VudCk7CiB9CiAKIC0gKHZvaWQpX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlv
bnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQK
IHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKF9jdXN0b21Db250ZW50VmlldykgeworICAg
ICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9maW5kU3RyaW5nOnN0cmluZyBvcHRpb25zOm9w
dGlvbnMgbWF4Q291bnQ6bWF4Q291bnRdOworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlm
CiAgICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3RyaW5nLCB0b0ZpbmRPcHRpb25zKG9wdGlvbnMpLCBt
YXhDb3VudCk7CiB9CiAKIC0gKHZvaWQpX2hpZGVGaW5kVUkKIHsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgaWYgKF9jdXN0b21Db250ZW50VmlldykgeworICAgICAgICBbX2N1c3RvbUNvbnRlbnRW
aWV3IHdlYl9oaWRlRmluZFVJXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAg
IF9wYWdlLT5oaWRlRmluZFVJKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMWUyZjQ0NTZlZGU3ZTE4
MDU3ZTE1OWIzMDJkYzAxMTI0OGYwNjczYy4uMzAwZDFlZWVkZjY2ODVjNTc5MzZlOGUxZjM4MzEy
MTM1M2ZkYjNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIFdLX0FQSV9F
TkFCTEVECiAKKyNpbXBvcnQgPFdlYktpdC9fV0tGaW5kT3B0aW9ucy5oPgogI2ltcG9ydCA8V2Vi
S2l0L19XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzLmg+CiAKIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIF9XS1BhZ2luYXRpb25Nb2RlKSB7CkBAIC0zNywxOCArMzgsNiBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uTW9kZSkgewogICAgIF9XS1BhZ2luYXRpb25N
b2RlQm90dG9tVG9Ub3AsCiB9IFdLX0VOVU1fQVZBSUxBQkxFKDEwXzEwLCA4XzApOwogCi10eXBl
ZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLRmluZE9wdGlvbnMpIHsKLSAgICBfV0tGaW5k
T3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSA9IDEgPDwgMCwKLSAgICBfV0tGaW5kT3B0aW9uc0F0V29y
ZFN0YXJ0cyA9IDEgPDwgMSwKLSAgICBfV0tGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFz
V29yZFN0YXJ0ID0gMSA8PCAyLAotICAgIF9XS0ZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAz
LAotICAgIF9XS0ZpbmRPcHRpb25zV3JhcEFyb3VuZCA9IDEgPDwgNCwKLSAgICBfV0tGaW5kT3B0
aW9uc1Nob3dPdmVybGF5ID0gMSA8PCA1LAotICAgIF9XS0ZpbmRPcHRpb25zU2hvd0ZpbmRJbmRp
Y2F0b3IgPSAxIDw8IDYsCi0gICAgX1dLRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0ID0gMSA8PCA3
LAotICAgIF9XS0ZpbmRPcHRpb25zRGV0ZXJtaW5lTWF0Y2hJbmRleCA9IDEgPDwgOCwKLX0gV0tf
RU5VTV9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7Ci0KIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhh
bmRsZTsKIEBjbGFzcyBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeTsKIEBjbGFzcyBfV0tTZXNzaW9u
U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0ZpbmRPcHRpb25zLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Zp
bmRPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQxYzY2ZjRlM2VjMWRhMzU5NDdiOWNmYjU4NGNmODY0
YmJlZjUxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRmluZE9wdGlvbnMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwordHlw
ZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS0ZpbmRPcHRpb25zKSB7CisgICAgX1dLRmlu
ZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUgPSAxIDw8IDAsCisgICAgX1dLRmluZE9wdGlvbnNBdFdv
cmRTdGFydHMgPSAxIDw8IDEsCisgICAgX1dLRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxB
c1dvcmRTdGFydCA9IDEgPDwgMiwKKyAgICBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcyA9IDEgPDwg
MywKKyAgICBfV0tGaW5kT3B0aW9uc1dyYXBBcm91bmQgPSAxIDw8IDQsCisgICAgX1dLRmluZE9w
dGlvbnNTaG93T3ZlcmxheSA9IDEgPDwgNSwKKyAgICBfV0tGaW5kT3B0aW9uc1Nob3dGaW5kSW5k
aWNhdG9yID0gMSA8PCA2LAorICAgIF9XS0ZpbmRPcHRpb25zU2hvd0hpZ2hsaWdodCA9IDEgPDwg
NywKKyAgICBfV0tGaW5kT3B0aW9uc0RldGVybWluZU1hdGNoSW5kZXggPSAxIDw8IDgsCit9IFdL
X0VOVU1fQVZBSUxBQkxFKDEwXzEwLCA4XzApOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaApp
bmRleCBkZWJlYTZiYWEwYWQ1ZWI3YjY3NzUzMjMzMTc4ZmM3ZGY0YTlhMDllLi5jMWEwNTAxZWZj
NmVlOGQyZjNhMDI1YzZjMTFiNzAwYmUwNDM3MDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0IDxXZWJLaXQvV0tQYWdl
TG9hZFR5cGVzLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRmluZE9wdGlvbnMuaD4KIAogQGNsYXNz
IE5TRGF0YTsKIEBjbGFzcyBVSVNjcm9sbFZpZXc7CkBAIC01MCw2ICs1MSw5IEBAIHN0cnVjdCBV
SUVkZ2VJbnNldHM7CiAtICh2b2lkKXdlYl9jb21wdXRlZENvbnRlbnRJbnNldERpZENoYW5nZTsK
IC0gKHZvaWQpd2ViX3NldEZpeGVkT3ZlcmxheVZpZXc6KFVJVmlldyAqKWZpeGVkT3ZlcmxheVZp
ZXc7CiAtICh2b2lkKXdlYl9kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOihXS1NhbWVEb2N1bWVu
dE5hdmlnYXRpb25UeXBlKW5hdmlnYXRpb25UeXBlOworLSAodm9pZCl3ZWJfY291bnRTdHJpbmdN
YXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25z
IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OworLSAodm9pZCl3ZWJfZmluZFN0cmluZzoo
TlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3Vu
dDooTlNVSW50ZWdlciltYXhDb3VudDsKKy0gKHZvaWQpd2ViX2hpZGVGaW5kVUk7CiAKIEBlbmQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBlMjQ5NWU0
YjA4YjgzZTVhYmIxOTcwNmNiOGFiZDNkYjczNjA4YmMwLi40ODhhYzQ0NDQyMzI5ZjZkMmE1M2Rj
MmEyMGM3Zjk0NTQ4Yjk0Y2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERG
Vmlldy5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogCisjaW1wb3J0
ICJBUElGaW5kQ2xpZW50LmgiCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgogI2ltcG9ydCAiQ29y
ZVBERlNQSS5oIgogI2ltcG9ydCAiU2Vzc2lvblN0YXRlLmgiCkBAIC0zNSw2ICszNiw3IEBACiAj
aW1wb3J0ICJXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCIKICNpbXBvcnQgIldLV2ViVmlld0lu
dGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIl9XS0ZpbmREZWxl
Z2F0ZS5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL1VUQ29yZVR5cGVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAt
NTQsNiArNTYsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgICAgQ0dSZWN0IGZyYW1lOwogICAgIFJl
dGFpblB0cjxVSVBERlBhZ2VWaWV3PiB2aWV3OwogICAgIFJldGFpblB0cjxVSVBERlBhZ2U+IHBh
Z2U7CisgICAgdW5zaWduZWQgaW5kZXg7CiB9IFBERlBhZ2VJbmZvOwogCiBAaW50ZXJmYWNlIFdL
UERGVmlldyAoKQpAQCAtNzksNiArODIsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgewogCiAgICAgUmV0
YWluUHRyPFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQ+IF9hY3Rpb25TaGVldEFzc2lzdGFudDsKICAg
ICBXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uIF9wb3NpdGlvbkluZm9y
bWF0aW9uOworCisgICAgdW5zaWduZWQgX2N1cnJlbnRGaW5kUGFnZUluZGV4OworICAgIHVuc2ln
bmVkIF9jdXJyZW50RmluZE1hdGNoSW5kZXg7CisgICAgUmV0YWluUHRyPFVJUERGU2VsZWN0aW9u
PiBfY3VycmVudEZpbmRTZWxlY3Rpb247CisKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9jYWNo
ZWRGaW5kU3RyaW5nOworICAgIFZlY3RvcjxSZXRhaW5QdHI8VUlQREZTZWxlY3Rpb24+PiBfY2Fj
aGVkRmluZE1hdGNoZXM7CisgICAgdW5zaWduZWQgX2NhY2hlZEZpbmRNYXhpbXVtQ291bnQ7Cisg
ICAgX1dLRmluZE9wdGlvbnMgX2NhY2hlZEZpbmRPcHRpb25zQWZmZWN0aW5nUmVzdWx0czsKKwor
ICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBfbmV4dENvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQ7
CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbmV4dENhY2hlZEZpbmRTdHJpbmc7CisgICAgdW5z
aWduZWQgX25leHRDYWNoZWRGaW5kTWF4aW11bUNvdW50OworICAgIF9XS0ZpbmRPcHRpb25zIF9u
ZXh0Q2FjaGVkRmluZE9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzOworCisgICAgZGlzcGF0Y2hfcXVl
dWVfdCBfZmluZFF1ZXVlOwogfQogCiAtIChpbnN0YW5jZXR5cGUpd2ViX2luaXRXaXRoRnJhbWU6
KENHUmVjdClmcmFtZSB3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CkBAIC05OCw2ICsxMTcs
OCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgICAgX2FjdGlvblNoZWV0QXNzaXN0YW50ID0gYWRvcHRO
UyhbW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXSk7CiAg
ICAgW19hY3Rpb25TaGVldEFzc2lzdGFudCBzZXREZWxlZ2F0ZTpzZWxmXTsKIAorICAgIF9maW5k
UXVldWUgPSBkaXNwYXRjaF9xdWV1ZV9jcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuV0tQREZWaWV3
Q29tcHV0ZU1hdGNoZXNRdWV1ZSIsIERJU1BBVENIX1FVRVVFX1NFUklBTCk7CisKICAgICByZXR1
cm4gc2VsZjsKIH0KIApAQCAtMTA1LDYgKzEyNiw3IEBAIHR5cGVkZWYgc3RydWN0IHsKIHsKICAg
ICBbc2VsZiBfY2xlYXJQYWdlc107CiAgICAgW19wYWdlTnVtYmVySW5kaWNhdG9yIHJlbW92ZUZy
b21TdXBlcnZpZXddOworICAgIGRpc3BhdGNoX3JlbGVhc2UoX2ZpbmRRdWV1ZSk7CiAgICAgW3N1
cGVyIGRlYWxsb2NdOwogfQogCkBAIC0xMzUsNyArMTU3LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgewog
CiAgICAgW3NlbGYgX2NsZWFyUGFnZXNdOwogCi0gICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVy
PiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgo
Q0ZEYXRhUmVmKWRhdGEpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQ
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRhdGFS
ZWYpZGF0YSkpOwogICAgIFJldGFpblB0cjxDR1BERkRvY3VtZW50UmVmPiBjZ1BERkRvY3VtZW50
ID0gYWRvcHRDRihDR1BERkRvY3VtZW50Q3JlYXRlV2l0aFByb3ZpZGVyKGRhdGFQcm92aWRlci5n
ZXQoKSkpOwogICAgIF9wZGZEb2N1bWVudCA9IGFkb3B0TlMoW1tVSVBERkRvY3VtZW50IGFsbG9j
XSBpbml0V2l0aENHUERGRG9jdW1lbnQ6Y2dQREZEb2N1bWVudC5nZXQoKV0pOwogCkBAIC0xNjUs
NiArMTg3LDIxIEBAIHR5cGVkZWYgc3RydWN0IHsKICAgICAgICAgW19wYWdlTnVtYmVySW5kaWNh
dG9yIHNob3ddOwogfQogCistICh2b2lkKV9lbnN1cmVWaWV3Rm9yUGFnZTooUERGUGFnZUluZm8m
KXBhZ2VJbmZvCit7CisgICAgaWYgKHBhZ2VJbmZvLnZpZXcpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhZ2VJbmZvLnZpZXcgPSBhZG9wdE5TKFtbVUlQREZQYWdlVmlldyBhbGxvY10gaW5pdFdp
dGhQYWdlOnBhZ2VJbmZvLnBhZ2UuZ2V0KCkgdGlsZWRDb250ZW50OllFU10pOworICAgIFtwYWdl
SW5mby52aWV3IHNldFVzZUJhY2tpbmdMYXllcjpZRVNdOworICAgIFtwYWdlSW5mby52aWV3IHNl
dERlbGVnYXRlOnNlbGZdOworICAgIFtbcGFnZUluZm8udmlldyBhbm5vdGF0aW9uQ29udHJvbGxl
cl0gc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW3NlbGYgYWRkU3VidmlldzpwYWdlSW5mby52aWV3
LmdldCgpXTsKKworICAgIFtwYWdlSW5mby52aWV3IHNldEZyYW1lOnBhZ2VJbmZvLmZyYW1lXTsK
KyAgICBbcGFnZUluZm8udmlldyBjb250ZW50TGF5ZXJdLmNvbnRlbnRzU2NhbGUgPSBzZWxmLndp
bmRvdy5zY3JlZW4uc2NhbGU7Cit9CisKIC0gKHZvaWQpX3JldmFsaWRhdGVWaWV3cwogewogICAg
IGlmIChfaXNTdGFydGluZ1pvb20pCkBAIC0xNzgsMzEgKzIxNSwxOCBAQCB0eXBlZGVmIHN0cnVj
dCB7CiAgICAgQ0dSZWN0IHRhcmdldFJlY3RGb3JDZW50ZXJQYWdlID0gQ0dSZWN0SW5zZXQodGFy
Z2V0UmVjdCwgMCwgdGFyZ2V0UmVjdC5zaXplLmhlaWdodCAvIDIgLSBwZGZQYWdlTWFyZ2luICog
Mik7CiAKICAgICBfY2VudGVyUGFnZU51bWJlciA9IDA7Ci0gICAgdW5zaWduZWQgY3VycmVudFBh
Z2UgPSAwOwogCiAgICAgZm9yIChhdXRvJiBwYWdlSW5mbyA6IF9wYWdlcykgewotICAgICAgICAr
K2N1cnJlbnRQYWdlOwotCi0gICAgICAgIGlmICghQ0dSZWN0SW50ZXJzZWN0c1JlY3QocGFnZUlu
Zm8uZnJhbWUsIHRhcmdldFJlY3RXaXRoT3ZlcmRyYXcpKSB7CisgICAgICAgIGlmICghQ0dSZWN0
SW50ZXJzZWN0c1JlY3QocGFnZUluZm8uZnJhbWUsIHRhcmdldFJlY3RXaXRoT3ZlcmRyYXcpICYm
IHBhZ2VJbmZvLmluZGV4ICE9IF9jdXJyZW50RmluZFBhZ2VJbmRleCkgewogICAgICAgICAgICAg
W3BhZ2VJbmZvLnZpZXcgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgICAgICAgICBwYWdlSW5m
by52aWV3ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCFfY2VudGVyUGFnZU51bWJlciAmJiBDR1JlY3RJbnRlcnNlY3RzUmVjdChwYWdl
SW5mby5mcmFtZSwgdGFyZ2V0UmVjdEZvckNlbnRlclBhZ2UpKQotICAgICAgICAgICAgX2NlbnRl
clBhZ2VOdW1iZXIgPSBjdXJyZW50UGFnZTsKLQotICAgICAgICBpZiAocGFnZUluZm8udmlldykK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHBhZ2VJbmZvLnZpZXcgPSBhZG9wdE5T
KFtbVUlQREZQYWdlVmlldyBhbGxvY10gaW5pdFdpdGhQYWdlOnBhZ2VJbmZvLnBhZ2UuZ2V0KCkg
dGlsZWRDb250ZW50OllFU10pOwotICAgICAgICBbcGFnZUluZm8udmlldyBzZXRVc2VCYWNraW5n
TGF5ZXI6WUVTXTsKLSAgICAgICAgW3BhZ2VJbmZvLnZpZXcgc2V0RGVsZWdhdGU6c2VsZl07Ci0g
ICAgICAgIFtbcGFnZUluZm8udmlldyBhbm5vdGF0aW9uQ29udHJvbGxlcl0gc2V0RGVsZWdhdGU6
c2VsZl07Ci0gICAgICAgIFtzZWxmIGFkZFN1YnZpZXc6cGFnZUluZm8udmlldy5nZXQoKV07Cisg
ICAgICAgICAgICBfY2VudGVyUGFnZU51bWJlciA9IHBhZ2VJbmZvLmluZGV4ICsgMTsKIAotICAg
ICAgICBbcGFnZUluZm8udmlldyBzZXRGcmFtZTpwYWdlSW5mby5mcmFtZV07Ci0gICAgICAgIFtw
YWdlSW5mby52aWV3IGNvbnRlbnRMYXllcl0uY29udGVudHNTY2FsZSA9IHNlbGYud2luZG93LnNj
cmVlbi5zY2FsZTsKKyAgICAgICAgW3NlbGYgX2Vuc3VyZVZpZXdGb3JQYWdlOnBhZ2VJbmZvXTsK
ICAgICB9CiAKICAgICBbc2VsZiBfdXBkYXRlUGFnZU51bWJlckluZGljYXRvcl07CkBAIC0yOTEs
OCArMzE1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIF9wYWdlcy5yZXNlcnZlQ2FwYWNpdHko
cGFnZUNvdW50KTsKIAogICAgIENHUmVjdCBwYWdlRnJhbWUgPSBDR1JlY3RNYWtlKDAsIDAsIF9t
aW5pbXVtU2l6ZS53aWR0aCwgX21pbmltdW1TaXplLmhlaWdodCk7Ci0gICAgZm9yIChOU1VJbnRl
Z2VyIHBhZ2VOdW1iZXIgPSAwOyBwYWdlTnVtYmVyIDwgcGFnZUNvdW50OyArK3BhZ2VOdW1iZXIp
IHsKLSAgICAgICAgVUlQREZQYWdlICpwYWdlID0gW19wZGZEb2N1bWVudCBwYWdlQXRJbmRleDpw
YWdlTnVtYmVyXTsKKyAgICBmb3IgKE5TVUludGVnZXIgcGFnZUluZGV4ID0gMDsgcGFnZUluZGV4
IDwgcGFnZUNvdW50OyArK3BhZ2VJbmRleCkgeworICAgICAgICBVSVBERlBhZ2UgKnBhZ2UgPSBb
X3BkZkRvY3VtZW50IHBhZ2VBdEluZGV4OnBhZ2VJbmRleF07CiAgICAgICAgIGlmICghcGFnZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCkBAIC0zMDMsNiArMzI3LDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgewogICAgICAgICBQREZQYWdlSW5mbyBwYWdlSW5mbzsKICAgICAgICAgcGFnZUluZm8ucGFn
ZSA9IHBhZ2U7CiAgICAgICAgIHBhZ2VJbmZvLmZyYW1lID0gcGFnZUZyYW1lV2l0aE1hcmdpbkFw
cGxpZWQ7CisgICAgICAgIHBhZ2VJbmZvLmluZGV4ID0gcGFnZUluZGV4OwogICAgICAgICBfcGFn
ZXMuYXBwZW5kKHBhZ2VJbmZvKTsKICAgICAgICAgcGFnZUZyYW1lLm9yaWdpbi55ICs9IHBhZ2VG
cmFtZS5zaXplLmhlaWdodCAtIHBkZlBhZ2VNYXJnaW47CiAgICAgfQpAQCAtMzY0LDYgKzM4OSwx
ODggQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIHJldHVybiBuaWw7CiB9CiAKKyNwcmFnbWEgbWFy
ayBGaW5kLWluLVBhZ2UKKworLSAoTlNTdHJpbmdDb21wYXJlT3B0aW9ucylfc3RyaW5nQ29tcGFy
ZU9wdGlvbnNGcm9tV0tGaW5kT3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucworeworICAg
IE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMgZmluZE9wdGlvbnMgPSAwOworICAgIGlmIChvcHRpb25z
ICYgX1dLRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCisgICAgICAgIGZpbmRPcHRpb25zIHw9
IE5TQ2FzZUluc2Vuc2l0aXZlU2VhcmNoOworICAgIGlmIChvcHRpb25zICYgX1dLRmluZE9wdGlv
bnNCYWNrd2FyZHMpCisgICAgICAgIGZpbmRPcHRpb25zIHw9IE5TQmFja3dhcmRzU2VhcmNoOwor
ICAgIHJldHVybiBmaW5kT3B0aW9uczsKK30KKworLSAodm9pZClfY29tcHV0ZU1hdGNoZXNGb3JT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMg
bWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KGJvb2wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIV9wZGZEb2N1bWVu
dCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBfV0tGaW5kT3B0aW9ucyBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cyA9IG9w
dGlvbnMgJiB+KF9XS0ZpbmRPcHRpb25zQmFja3dhcmRzIHwgX1dLRmluZE9wdGlvbnNTaG93T3Zl
cmxheSB8IF9XS0ZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgfCBfV0tGaW5kT3B0aW9uc1No
b3dIaWdobGlnaHQgfCBfV0tGaW5kT3B0aW9uc1dyYXBBcm91bmQgfCBfV0tGaW5kT3B0aW9uc0Rl
dGVybWluZU1hdGNoSW5kZXgpOworCisgICAgLy8gSWYgdGhpcyBzZWFyY2ggaXMgZXF1aXZhbGVu
dCB0byB0aGUgY3VycmVudGx5IGNhY2hlZCBzZWFyY2gsIGJhaWwgYW5kIGNhbGwgdGhlIGNvbXBs
ZXRpb24gaGFuZGxlciwgYmVjYXVzZSB0aGUgZXhpc3RpbmcgY2FjaGVkIHJlc3VsdHMgYXJlIHZh
bGlkLgorICAgIGlmICghX2NhY2hlZEZpbmRNYXRjaGVzLmlzRW1wdHkoKSAmJiBbX2NhY2hlZEZp
bmRTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnN0cmluZ10gJiYgX2NhY2hlZEZpbmRPcHRpb25zQWZm
ZWN0aW5nUmVzdWx0cyA9PSBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cyAmJiBfY2FjaGVkRmluZE1h
eGltdW1Db3VudCA9PSBtYXhDb3VudCkgeworICAgICAgICAvLyBBbHNvLCBjYW5jZWwgYW55IHJ1
bm5pbmcgc2VhcmNoLCBiZWNhdXNlIGl0IHdpbGwgZXZlbnR1YWxseSByZXBsYWNlIHRoZSBub3ct
dmFsaWQgcmVzdWx0cy4KKyAgICAgICAgX25leHRDb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEKys7
CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICAvLyBJZiB0aGlzIHNlYXJjaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBjdXJyZW50
bHkgcnVubmluZyBhc3luY2hyb25vdXMgc2VhcmNoLCBiYWlsIGFzIGlmIHRoaXMgc2VhcmNoIHdl
cmUgY2FuY2VsbGVkOyB0aGUgb3JpZ2luYWwgc2VhcmNoJ3MgY29tcGxldGlvbiBoYW5kbGVyIHdp
bGwgZXZlbnR1YWxseSBmaXJlLgorICAgIGlmIChbX25leHRDYWNoZWRGaW5kU3RyaW5nIGlzRXF1
YWxUb1N0cmluZzpzdHJpbmddICYmIF9uZXh0Q2FjaGVkRmluZE9wdGlvbnNBZmZlY3RpbmdSZXN1
bHRzID09IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzICYmIF9uZXh0Q2FjaGVkRmluZE1heGltdW1D
b3VudCA9PSBtYXhDb3VudCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBOU1N0cmluZ0NvbXBhcmVPcHRpb25zIGZpbmRP
cHRpb25zID0gW3NlbGYgX3N0cmluZ0NvbXBhcmVPcHRpb25zRnJvbVdLRmluZE9wdGlvbnM6b3B0
aW9uc0FmZmVjdGluZ1Jlc3VsdHNdOworCisgICAgVmVjdG9yPFBERlBhZ2VJbmZvPiBwYWdlcyA9
IF9wYWdlczsKKworICAgIHVuc2lnbmVkIGNvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQgPSBfbmV4
dENvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQrKzsKKyAgICBfbmV4dENhY2hlZEZpbmRTdHJpbmcg
PSBzdHJpbmc7CisgICAgX25leHRDYWNoZWRGaW5kT3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHMgPSBv
cHRpb25zQWZmZWN0aW5nUmVzdWx0czsKKyAgICBfbmV4dENhY2hlZEZpbmRNYXhpbXVtQ291bnQg
PSBtYXhDb3VudDsKKworICAgIGRpc3BhdGNoX2FzeW5jKF9maW5kUXVldWUsIF57CisgICAgICAg
IFZlY3RvcjxSZXRhaW5QdHI8VUlQREZTZWxlY3Rpb24+PiBtYXRjaGVzOworCisgICAgICAgIGZv
ciAodW5zaWduZWQgcGFnZUluZGV4ID0gMDsgcGFnZUluZGV4IDwgcGFnZXMuc2l6ZSgpOyBwYWdl
SW5kZXgrKykgeworICAgICAgICAgICAgVUlQREZTZWxlY3Rpb24gKm1hdGNoID0gbnVsbHB0cjsK
KyAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBbcGFnZXNbcGFnZUluZGV4XS5wYWdlIGZpbmRT
dHJpbmc6c3RyaW5nIGZyb21TZWxlY3Rpb246bWF0Y2ggb3B0aW9uczpmaW5kT3B0aW9uc10pKSB7
CisgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpOworICAgICAgICAgICAgICAg
IGlmIChtYXRjaGVzLnNpemUoKSA+IG1heENvdW50KQorICAgICAgICAgICAgICAgICAgICBnb3Rv
IG1heENvdW50RXhjZWVkZWQ7CisKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBlbnF1ZXVl
ZCBhbm90aGVyIHNlYXJjaCwgY2FuY2VsIHRoaXMgb25lLgorICAgICAgICAgICAgICAgIGlmIChf
bmV4dENvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQgPiBjb21wdXRlTWF0Y2hlc09wZXJhdGlvbklE
ICsgMSkgeworICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeeworICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKwor
ICAgIG1heENvdW50RXhjZWVkZWQ6CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICAvLyBJZiBhbm90aGVyIHNlYXJjaCBoYXMg
YmVlbiBlbnF1ZXVlZCBpbiB0aGUgbWVhbnRpbWUsIGlnbm9yZSB0aGlzIHJlc3VsdC4KKyAgICAg
ICAgICAgIGlmIChfbmV4dENvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQgPiBjb21wdXRlTWF0Y2hl
c09wZXJhdGlvbklEICsgMSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IF9jYWNoZWRGaW5kU3RyaW5nID0gc3RyaW5nOworICAgICAgICAgICAgX2NhY2hlZEZpbmRPcHRp
b25zQWZmZWN0aW5nUmVzdWx0cyA9IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzOworICAgICAgICAg
ICAgX2NhY2hlZEZpbmRNYXhpbXVtQ291bnQgPSBtYXhDb3VudDsKKyAgICAgICAgICAgIF9jYWNo
ZWRGaW5kTWF0Y2hlcyA9IG1hdGNoZXM7CisKKyAgICAgICAgICAgIF9uZXh0Q2FjaGVkRmluZFN0
cmluZyA9IG5pbDsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAg
ICAgIH0pOworICAgIH0pOworfQorCistICh2b2lkKXdlYl9jb3VudFN0cmluZ01hdGNoZXM6KE5T
U3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6
KE5TVUludGVnZXIpbWF4Q291bnQKK3sKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+
IHBhZ2UgPSBfd2ViVmlldy0+X3BhZ2U7CisgICAgW3NlbGYgX2NvbXB1dGVNYXRjaGVzRm9yU3Ry
aW5nOnN0cmluZyBvcHRpb25zOm9wdGlvbnMgbWF4Q291bnQ6bWF4Q291bnQgY29tcGxldGlvbkhh
bmRsZXI6Xihib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBwYWdlLT5maW5kQ2xpZW50KCkuZGlkQ291bnRTdHJpbmdNYXRj
aGVzKHBhZ2UuZ2V0KCksIHN0cmluZywgX2NhY2hlZEZpbmRNYXRjaGVzLnNpemUoKSk7CisgICAg
fV07Cit9CisKKy0gKHZvaWQpX2RpZEZpbmRNYXRjaDooVUlQREZTZWxlY3Rpb24gKiltYXRjaAor
eworICAgIGZvciAoYXV0byYgcGFnZUluZm8gOiBfcGFnZXMpIHsKKyAgICAgICAgaWYgKHBhZ2VJ
bmZvLnBhZ2UgPT0gbWF0Y2gucGFnZSkgeworICAgICAgICAgICAgW3NlbGYgX2Vuc3VyZVZpZXdG
b3JQYWdlOnBhZ2VJbmZvXTsKKworICAgICAgICAgICAgW3BhZ2VJbmZvLnZpZXcgaGlnaGxpZ2h0
U2VhcmNoU2VsZWN0aW9uOm1hdGNoIGFuaW1hdGVkOk5PXTsKKworICAgICAgICAgICAgX2N1cnJl
bnRGaW5kUGFnZUluZGV4ID0gcGFnZUluZm8uaW5kZXg7CisgICAgICAgICAgICBfY3VycmVudEZp
bmRTZWxlY3Rpb24gPSBtYXRjaDsKKworICAgICAgICAgICAgQ0dSZWN0IHpvb21SZWN0ID0gW3Bh
Z2VJbmZvLnZpZXcgY29udmVydFJlY3RGcm9tUERGUGFnZVNwYWNlOlttYXRjaCBib3VuZHNdXTsK
KyAgICAgICAgICAgIFtzZWxmIHpvb206cGFnZUluZm8udmlldy5nZXQoKSB0bzp6b29tUmVjdCBh
dFBvaW50OkNHUG9pbnRaZXJvIGtpbmQ6a1VJUERGT2JqZWN0S2luZFRleHRdOworCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKKy0gKHZvaWQpd2ViX2ZpbmRTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4
Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKK3sKKyAgICBpZiAoX2N1cnJlbnRGaW5kU2VsZWN0
aW9uKQorICAgICAgICBbX3BhZ2VzW19jdXJyZW50RmluZFBhZ2VJbmRleF0udmlldyBjbGVhclNl
YXJjaEhpZ2hsaWdodHNdOworCisgICAgUmV0YWluUHRyPFVJUERGU2VsZWN0aW9uPiBwcmV2aW91
c0ZpbmRTZWxlY3Rpb247CisgICAgdW5zaWduZWQgcHJldmlvdXNGaW5kUGFnZUluZGV4ID0gMDsK
KworICAgIGlmIChbX2NhY2hlZEZpbmRTdHJpbmcgaGFzUHJlZml4OnN0cmluZ10pIHsKKyAgICAg
ICAgcHJldmlvdXNGaW5kU2VsZWN0aW9uID0gX2N1cnJlbnRGaW5kU2VsZWN0aW9uOworICAgICAg
ICBwcmV2aW91c0ZpbmRQYWdlSW5kZXggPSBfY3VycmVudEZpbmRQYWdlSW5kZXg7CisKKyAgICAg
ICAgaWYgKCFbX2NhY2hlZEZpbmRTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnN0cmluZ10pIHsKKyAg
ICAgICAgICAgIE5TVUludGVnZXIgbG9jYXRpb24gPSBbX2N1cnJlbnRGaW5kU2VsZWN0aW9uIHN0
YXJ0SW5kZXhdOworICAgICAgICAgICAgcHJldmlvdXNGaW5kU2VsZWN0aW9uID0gYWRvcHROUyhb
W1VJUERGU2VsZWN0aW9uIGFsbG9jXSBpbml0V2l0aFBhZ2U6W19jdXJyZW50RmluZFNlbGVjdGlv
biBwYWdlXSBmcm9tSW5kZXg6bG9jYXRpb24gLSAxIHRvSW5kZXg6bG9jYXRpb25dKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMgZmluZE9wdGlvbnMgPSBb
c2VsZiBfc3RyaW5nQ29tcGFyZU9wdGlvbnNGcm9tV0tGaW5kT3B0aW9uczpvcHRpb25zXTsKKyAg
ICBib29sIGJhY2t3YXJkcyA9IChvcHRpb25zICYgX1dLRmluZE9wdGlvbnNCYWNrd2FyZHMpOwor
ICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsK
KworICAgIFtzZWxmIF9jb21wdXRlTWF0Y2hlc0ZvclN0cmluZzpzdHJpbmcgb3B0aW9uczpvcHRp
b25zIG1heENvdW50Om1heENvdW50IGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCBzdWNjZXNzKSB7
CisgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1
bnNpZ25lZCBwYWdlSW5kZXggPSBwcmV2aW91c0ZpbmRQYWdlSW5kZXg7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBfcGFnZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIFVJ
UERGU2VsZWN0aW9uICptYXRjaCA9IFtfcGFnZXNbcGFnZUluZGV4XS5wYWdlIGZpbmRTdHJpbmc6
c3RyaW5nIGZyb21TZWxlY3Rpb246KHBhZ2VJbmRleCA9PSBwcmV2aW91c0ZpbmRQYWdlSW5kZXgg
PyBwcmV2aW91c0ZpbmRTZWxlY3Rpb24uZ2V0KCkgOiBudWxscHRyKSBvcHRpb25zOmZpbmRPcHRp
b25zXTsKKworICAgICAgICAgICAgaWYgKCFtYXRjaCkgeworICAgICAgICAgICAgICAgIGlmICgh
cGFnZUluZGV4ICYmIGJhY2t3YXJkcykKKyAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4ID0g
X3BhZ2VzLnNpemUoKSAtIDE7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocGFnZUluZGV4ID09
IF9wYWdlcy5zaXplKCkgLSAxICYmICFiYWNrd2FyZHMpCisgICAgICAgICAgICAgICAgICAgIHBh
Z2VJbmRleCA9IDA7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBw
YWdlSW5kZXggKz0gYmFja3dhcmRzID8gLTEgOiAxOworICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBbc2VsZiBfZGlkRmluZE1hdGNoOm1hdGNo
XTsKKworICAgICAgICAgICAgaWYgKF9jYWNoZWRGaW5kTWF0Y2hlcy5zaXplKCkgPD0gbWF4Q291
bnQpIHsKKyAgICAgICAgICAgICAgICBfY3VycmVudEZpbmRNYXRjaEluZGV4ID0gMDsKKyAgICAg
ICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGtub3duTWF0Y2ggOiBfY2FjaGVkRmluZE1hdGNo
ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoLnN0cmluZ1JhbmdlLmxvY2F0aW9u
ID09IFtrbm93bk1hdGNoIHN0cmluZ1JhbmdlXS5sb2NhdGlvbiAmJiBtYXRjaC5zdHJpbmdSYW5n
ZS5sZW5ndGggPT0gW2tub3duTWF0Y2ggc3RyaW5nUmFuZ2VdLmxlbmd0aCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcGFnZS0+ZmluZENsaWVudCgpLmRpZEZpbmRTdHJpbmcocGFnZS5nZXQo
KSwgc3RyaW5nLCBfY2FjaGVkRmluZE1hdGNoZXMuc2l6ZSgpLCBfY3VycmVudEZpbmRNYXRjaElu
ZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIF9jdXJyZW50RmluZE1hdGNoSW5kZXgrKzsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgcGFnZS0+ZmluZENsaWVudCgpLmRpZEZhaWxUb0ZpbmRT
dHJpbmcocGFnZS5nZXQoKSwgc3RyaW5nKTsKKyAgICB9XTsKK30KKworLSAodm9pZCl3ZWJfaGlk
ZUZpbmRVSQoreworICAgIGlmIChfY3VycmVudEZpbmRTZWxlY3Rpb24pCisgICAgICAgIFtfcGFn
ZXNbX2N1cnJlbnRGaW5kUGFnZUluZGV4XS52aWV3IGNsZWFyU2VhcmNoSGlnaGxpZ2h0c107CisK
KyAgICBfY3VycmVudEZpbmRTZWxlY3Rpb24gPSBudWxscHRyOworICAgIF9jYWNoZWRGaW5kU3Ry
aW5nID0gbnVsbHB0cjsKKyAgICBfY2FjaGVkRmluZE1hdGNoZXMuY2xlYXIoKTsKK30KKwogI3By
YWdtYSBtYXJrIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZQogCiAtICh2b2lkKXpvb206KFVJUERGUGFn
ZVZpZXcgKilwYWdlVmlldyB0bzooQ0dSZWN0KXRhcmdldFJlY3QgYXRQb2ludDooQ0dQb2ludClv
cmlnaW4ga2luZDooVUlQREZPYmplY3RLaW5kKWtpbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzOTZhZTIzMmI2MDUwMjUxODMy
MzljNTNiNzkzOGY1N2IwOWFkNWY2Li4wNzM3N2IxZWNjMjczMzFlZmVkOGE2MWRlZWYxZDBjZWZh
ZWIwN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC02NzYsNiArNjc2LDcgQEAKIAkJMkRERjczMTYxOEU5NTA2MDAwNEY1QTY2
IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREY3MzE0MThFOTUwNjAwMDRGNUE2NiAv
KiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0gKi87IH07CiAJCTJERTY5NDNE
MThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVy
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovOyB9OworCQkyREVBQzVD
RjFBQzM2OEJCMDBBMTk1RDggLyogX1dLRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERUFDNUNFMUFDMzY4QkIwMEExOTVEOCAvKiBf
V0tGaW5kT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTJERjk1OTNCMThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXJJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REY5NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICov
OyB9OwogCQkyREY5RUVFNTFBNzgxRkI0MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUUzMUE3ODFG
QjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwICovOyB9OwogCQkyREY5RUVFNjFBNzgxRkI0
MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyREY5RUVFNDFBNzgxRkI0MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZv
LmggKi87IH07CkBAIC0yODMxLDYgKzI4MzIsNyBAQAogCQkyRERGNzMxNDE4RTk1MDYwMDA0RjVB
NjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREU2OTQzQjE4QkQyQTY4MDA1
QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXJNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFydE1hZ25p
ZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkRFQUM1Q0UxQUMzNjhCQjAwQTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0ZpbmRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNv
bnRyb2xsZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBW
aWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW07IHBhdGggPSBpb3MvVmlld0dlc3R1cmVDb250cm9s
bGVySU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5RUVFMzFBNzgxRkI0
MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFQSUZyYW1lSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJERjlFRUU0MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJRnJhbWVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01MzE5LDYgKzUzMjEsNyBAQAogCQkJCTFBRDAxQkM3MTkwNUQzN0UwMEM5QzQ1
RiAvKiBfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5oICovLAogCQkJCTFBRDAxQkM2MTkwNUQz
N0UwMEM5QzQ1RiAvKiBfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbSAqLywKIAkJCQkwMDVE
MTU4RTE4RTRDNEVCMDA3MzQ2MTkgLyogX1dLRmluZERlbGVnYXRlLmggKi8sCisJCQkJMkRFQUM1
Q0UxQUMzNjhCQjAwQTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggKi8sCiAJCQkJMzdBNjRFNTQx
OEYzOEUzQzAwRUIzMEYxIC8qIF9XS0Zvcm1EZWxlZ2F0ZS5oICovLAogCQkJCTM3QTY0RTU2MThG
MzhGNDYwMEVCMzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggKi8sCiAJCQkJMUE0M0U4Mjgx
ODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovLApAQCAt
Nzc0OCw2ICs3NzUxLDcgQEAKIAkJCQkxQTZGQkQyODExRTY5QkMyMDBEQjEzNzEgLyogTmV0c2Nh
cGVQbHVnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNEE5QzU2MTJCODE2Q0YwMDhGRTk4NCAv
KiBOZXRzY2FwZVBsdWdpbk1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTg4OTIxMUVF
NzA0MDAwNjFCODgyIC8qIE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkyREVBQzVDRjFBQzM2OEJCMDBBMTk1RDggLyogX1dLRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUxNzk4QzdBMTZFNjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDQzNkVDQzFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29y
a0NhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDg5RDI4QTFBMEEyREI4MDA3OEMwNkEgLyog
TmV0d29ya0NhY2hlQ29kZXIuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249546</attachid>
            <date>2015-03-26 17:45:10 -0700</date>
            <delta_ts>2015-03-27 14:47:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143065-20150326174432.patch</filename>
            <type>text/plain</type>
            <size>28792</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmM3MzAwZGNlOWY3ZGFi
YWJhMDg0M2FiNGQ3NGJiNGNlOGFmZDgwYS4uNDlhMmQ5NmQzYjYxOWQ3ZTJiMTM5ZTg5MjNhNGY2
Y2I2MWVmYmZhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE1LTAzLTI2ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBp
T1MgV2ViS2l0MiBQREYgRmluZC1pbi1QYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2Nzkz
MzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
UGxhdGZvcm0vc3BpL2lvcy9Db3JlUERGU1BJLmg6CisgICAgICAgIEFkZCBzb21lIFNQSS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvdW50U3RyaW5nTWF0Y2hlczpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2ZpbmRTdHJpbmc6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9oaWRlRmluZFVJXSk6CisgICAgICAgIElmIHdlIGhhdmUgYSBjdXN0b20g
Y29udGVudCB2aWV3LCBmb3J3YXJkIGZpbmQtaW4tcGFnZSBtZXRob2RzIHRvIGl0LgorICAgICAg
ICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZpbmRPcHRpb25zLmg6CisgICAgICAgIE1v
dmUgX1dLRmluZE9wdGlvbnMgaW50byBpdHMgb3duIGZpbGUuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmg6CisgICAgICAgIEFkZCBmaW5kLXJl
bGF0ZWQgbWV0aG9kcyB0byB0aGUgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyIHByb3RvY29sLgor
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERG
VmlldyB3ZWJfaW5pdFdpdGhGcmFtZTp3ZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1BERlZpZXcg
ZGVhbGxvY10pOgorICAgICAgICBNYWludGFpbiBhIGRpc3BhdGNoIHF1ZXVlIGZvciBzZWFyY2hp
bmcgdGhlIFBERi4KKworICAgICAgICAoLVtXS1BERlZpZXcgd2ViX3NldENvbnRlbnRQcm92aWRl
ckRhdGE6c3VnZ2VzdGVkRmlsZW5hbWU6XSk6CisgICAgICAgIEZpeCBhIHR5cGUuCisKKyAgICAg
ICAgKC1bV0tQREZWaWV3IF9lbnN1cmVWaWV3Rm9yUGFnZTpdKToKKyAgICAgICAgU3BsaXQgdGhl
IGNvZGUgdG8gY3JlYXRlL3BhcmVudCBhIHBhZ2UgdmlldyBvdXQgZnJvbSBfcmV2YWxpZGF0ZVZp
ZXdzLAorICAgICAgICBzbyB0aGF0IHRoZSBmaW5kIGNvZGUgY2FuIGNyZWF0ZS9wYXJlbnQgdGhl
IHRhcmdldHRlZCBVSVBERlBhZ2VWaWV3CisgICAgICAgIGluIG9yZGVyIHRvIGluc3RhbGwgdGhl
IGZpbmQgaGlnaGxpZ2h0IGluIGl0LCBidXQgYmVmb3JlIGl0IGlzIHNjcm9sbGVkIGludG8gdmll
dy4KKworICAgICAgICAoLVtXS1BERlZpZXcgX3JldmFsaWRhdGVWaWV3c10pOgorICAgICAgICBV
c2UgdGhlIHN0b3JlZCBwYWdlIGluZGV4IGluc3RlYWQgb2YgY291bnRpbmcgYWdhaW4uCisgICAg
ICAgIERvbid0IHVucGFyZW50IHBhZ2Ugdmlld3MgdGhhdCBoYXZlIGZpbmQtaW4tcGFnZSBoaWdo
bGlnaHRzIGluIHRoZW0sIGJlY2F1c2UKKyAgICAgICAgd2Ugd29uJ3Qga25vdyBlbm91Z2ggdG8g
cmVjcmVhdGUgdGhlbSBsYXRlci4KKworICAgICAgICAoLVtXS1BERlZpZXcgX2NvbXB1dGVQYWdl
QW5kRG9jdW1lbnRGcmFtZXNdKToKKyAgICAgICAgUHV0IHRoZSBwYWdlIGluZGV4IGluIFBERlBh
Z2VJbmZvLCBmb3IgcmVmZXJlbmNlIGVsc2V3aGVyZS4KKworICAgICAgICAoLVtXS1BERlZpZXcg
X3N0cmluZ0NvbXBhcmVPcHRpb25zRnJvbVdLRmluZE9wdGlvbnM6XSk6CisgICAgICAgICgtW1dL
UERGVmlldyBfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6b3B0aW9uczptYXhDb3VudDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgQXN5bmNocm9ub3VzbHkgKGFuZCBvbiBvdXIgc2VyaWFs
IHF1ZXVlKSBzZWFyY2ggdGhlIFBERiBmb3IgdGhlIGdpdmVuIHN0cmluZy4KKyAgICAgICAgV2Un
bGwgY2FjaGUgdGhlIG1vc3QgcmVjZW50IHJlc3VsdHMgdG8gYXZvaWQgc2VhcmNoaW5nIG1vcmUg
dGhhbiBvbmNlLAorICAgICAgICBjYW5jZWwgZXhpc3Rpbmcgc2VhcmNoZXMgd2hlbiBhbm90aGVy
IGJlZ2lucyAoc2luY2UgaXQncyBhIHNlcmlhbCBxdWV1ZSwKKyAgICAgICAgdGhpcyBlbnN1cmVz
IHdlJ2xsIG9ubHkgaGF2ZSBvbmUgc2VhcmNoIGFjdGl2ZSBhdCBhIHRpbWUpLgorCisgICAgICAg
ICgtW1dLUERGVmlldyB3ZWJfY291bnRTdHJpbmdNYXRjaGVzOm9wdGlvbnM6bWF4Q291bnQ6XSk6
CisgICAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBmb3IgdGhlIGdpdmVuIHN0cmlu
ZywgYW5kIGluZm9ybSB0aGUgRmluZENsaWVudAorICAgICAgICBvZiB0aGUgcmVzdWx0LgorCisg
ICAgICAgICgtW1dLUERGVmlldyBfZGlkRmluZE1hdGNoOl0pOgorICAgICAgICBXaGVuIHdlIGZp
bmQgYSBtYXRjaCwgY3JlYXRlIGEgdmlldyBmb3IgaXQsIGhpZ2hsaWdodCB0aGUgbWF0Y2gsIGFu
ZAorICAgICAgICB6b29tIHNvIHRoYXQgaXQncyBpbi12aWV3LgorCisgICAgICAgICgtW1dLUERG
VmlldyB3ZWJfZmluZFN0cmluZzpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAgICBJbmNyZW1l
bnRhbGx5IHNlYXJjaCB0aGUgZG9jdW1lbnQgZm9yIHRoZSBnaXZlbiBzdHJpbmcuIFdlIGRvIGFu
IGluY3JlbWVudGFsCisgICAgICAgIHNlYXJjaCBldmVuIGlmIHdlIGhhdmUgYWxsIG9mIHRoZSBy
ZXN1bHRzIHNvIHRoYXQgd2UgY2FuIGFuY2hvciB0aGUgc2VhcmNoCisgICAgICAgIGluIHRoZSBy
aWdodCBwbGFjZSBpZiB0aGUgbmV3IHN0cmluZyBpcyBhIHByZWZpeCBvZiB0aGUgb2xkIHN0cmlu
ZywgZXRjLgorICAgICAgICBXcmFwIGFyb3VuZCBhcHByb3ByaWF0ZWx5IHdoZW4gc2VhcmNoaW5n
IHBhc3QgdGhlIGJlZ2lubmluZyBvciBlbmQgb2YgdGhlCisgICAgICAgIGRvY3VtZW50LiBJZiB3
ZSBoYXZlIGFsbCBvZiB0aGUgcmVzdWx0cyAodGhlcmUgd2VyZSBsZXNzIHRoYW4gbWF4Q291bnQg
cmVzdWx0cyksCisgICAgICAgIGxvb2sgdGhyb3VnaCB0aGUgY2FjaGVkIG1hdGNoZXMgZm9yIHRo
ZSBpbmNyZW1lbnRhbGx5LWZvdW5kIHJlc3VsdCBhbmQKKyAgICAgICAgcmVwb3J0IGl0cyBpbmRl
eCB0byB0aGUgY2xpZW50LgorCisgICAgICAgICgtW1dLUERGVmlldyB3ZWJfaGlkZUZpbmRVSV0p
OgorICAgICAgICBEaXNtaXNzIHRoZSBzZWxlY3Rpb24gYW5kIGNsZWFyIHNvbWUgc3RhdGUgc28g
d2Ugc3RhcnQgdGhlIG5leHQgc2VhcmNoIGFmcmVzaC4KKworICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wMy0yNiAgRW5yaWNhIENhc3VjY2kgIDxl
bnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIE9TIFggYnVpbGQgZml4IGFmdGVyIHIxODIwMzcu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEku
aCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvQ29yZVBERlNQSS5oCmluZGV4IDYz
OTU4MTM1MzE2NmFmNzNjN2Q4NjU5MDJkMzc5MzBlNzE4YjRjYWMuLjFjYjk5ZGQxZWRkNjM1ODBl
OTFiZWIyYWFlMWExNjc2ZDkwNzdlMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL3NwaS9pb3MvQ29yZVBERlNQSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3Nw
aS9pb3MvQ29yZVBERlNQSS5oCkBAIC0zMywxNCArMzMsMTggQEAKICNpbXBvcnQgPENvcmVQREYv
VUlQREZMaW5rQW5ub3RhdGlvbi5oPgogI2ltcG9ydCA8Q29yZVBERi9VSVBERlBhZ2UuaD4KICNp
bXBvcnQgPENvcmVQREYvVUlQREZQYWdlVmlldy5oPgorI2ltcG9ydCA8Q29yZVBERi9VSVBERlNl
bGVjdGlvbi5oPgogCiAjZWxzZQogCitAY2xhc3MgVUlQREZTZWxlY3Rpb247CisKIEBpbnRlcmZh
Y2UgVUlQREZQYWdlIDogTlNPYmplY3QKIEBlbmQKIAogQGludGVyZmFjZSBVSVBERlBhZ2UgKERl
dGFpbHMpCiAtIChDR1JlY3QpY3JvcEJveEFjY291bnRGb3JSb3RhdGlvbjsKKy0gKFVJUERGU2Vs
ZWN0aW9uICopZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgZnJvbVNlbGVjdGlvbjooVUlQ
REZTZWxlY3Rpb24gKilzZWxlY3Rpb24gb3B0aW9uczooTlNTdHJpbmdDb21wYXJlT3B0aW9ucylv
cHRpb25zOwogQGVuZAogCiBAaW50ZXJmYWNlIFVJUERGRG9jdW1lbnQgOiBOU09iamVjdApAQCAt
NTUsNiArNTksNyBAQAogCiB0eXBlZGVmIGVudW0gewogICAgIGtVSVBERk9iamVjdEtpbmRHcmFw
aGljID0gMSwKKyAgICBrVUlQREZPYmplY3RLaW5kVGV4dCA9IDIKIH0gVUlQREZPYmplY3RLaW5k
OwogCiBAY2xhc3MgVUlQREZQYWdlVmlldzsKQEAgLTc2LDYgKzgxLDggQEAgdHlwZWRlZiBlbnVt
IHsKIEBpbnRlcmZhY2UgVUlQREZQYWdlVmlldyAoRGV0YWlscykKIC0gKGlkKWluaXRXaXRoUGFn
ZTooVUlQREZQYWdlICopIHBhZ2UgdGlsZWRDb250ZW50OihCT09MKXRpbGVkOwogLSAoQ0dSZWN0
KWNvbnZlcnRSZWN0RnJvbVBERlBhZ2VTcGFjZTooQ0dSZWN0KXA7CistICh2b2lkKWhpZ2hsaWdo
dFNlYXJjaFNlbGVjdGlvbjooVUlQREZTZWxlY3Rpb24gKilzZWxlY3Rpb24gYW5pbWF0ZWQ6KEJP
T0wpYW5pbWF0ZWQ7CistICh2b2lkKWNsZWFyU2VhcmNoSGlnaGxpZ2h0czsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBhc3NpZ24pIEJPT0wgdXNlQmFja2luZ0xheWVyOwogQHByb3BlcnR5IChub25h
dG9taWMsIGFzc2lnbikgaWQ8TlNPYmplY3QsIFVJUERGUGFnZVZpZXdEZWxlZ2F0ZT4gZGVsZWdh
dGU7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIENBTGF5ZXIgKmNvbnRlbnRMYXll
cjsKQEAgLTEyMCw0ICsxMjcsMTUgQEAgdHlwZWRlZiBlbnVtIHsKIC0gKHZvaWQpYW5ub3RhdGlv
bjooVUlQREZBbm5vdGF0aW9uICopYW5ub3RhdGlvbiBpc0JlaW5nUHJlc3NlZEF0UG9pbnQ6KENH
UG9pbnQpIHBvaW50IGNvbnRyb2xsZXI6KFVJUERGQW5ub3RhdGlvbkNvbnRyb2xsZXIgKiljb250
cm9sbGVyOwogQGVuZAogCitAaW50ZXJmYWNlIFVJUERGU2VsZWN0aW9uIDogTlNPYmplY3QKK0Bl
bmQKKworQGludGVyZmFjZSBVSVBERlNlbGVjdGlvbiAoRGV0YWlscykKKy0gKGlkKWluaXRXaXRo
UGFnZTooVUlQREZQYWdlICopcGFnZSBmcm9tSW5kZXg6KE5TVUludGVnZXIpc3RhcnRJbmRleCB0
b0luZGV4OihOU1VJbnRlZ2VyKWVuZEluZGV4OworLSAoQ0dSZWN0KWJvdW5kczsKKy0gKFVJUERG
UGFnZSAqKXBhZ2U7CistIChOU1VJbnRlZ2VyKXN0YXJ0SW5kZXg7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgYXNzaWduKSBDRlJhbmdlIHN0cmluZ1JhbmdlOworQGVuZAorCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggNjhm
ODE5N2QwMjM4YzE2NTBjNWRkODkyYWIyZDExZjYwNDkzOTQyOS4uMzY0ZjIyMDdiODcxN2U3YmRj
MGMyMDQzOTYxMzNjNjMyNzA0NDBiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTIwOTQsMTYgKzIwOTQsMzQgQEAgc3RhdGljIGlu
bGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tG
aW5kT3B0aW9ucykKIAogLSAodm9pZClfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0
cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2Vy
KW1heENvdW50CiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChfY3VzdG9tQ29udGVudFZp
ZXcpIHsKKyAgICAgICAgW19jdXN0b21Db250ZW50VmlldyB3ZWJfY291bnRTdHJpbmdNYXRjaGVz
OnN0cmluZyBvcHRpb25zOm9wdGlvbnMgbWF4Q291bnQ6bWF4Q291bnRdOworICAgICAgICByZXR1
cm47CisgICAgfQorI2VuZGlmCiAgICAgX3BhZ2UtPmNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcs
IHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heENvdW50KTsKIH0KIAogLSAodm9pZClfZmluZFN0
cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBt
YXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBp
ZiAoX2N1c3RvbUNvbnRlbnRWaWV3KSB7CisgICAgICAgIFtfY3VzdG9tQ29udGVudFZpZXcgd2Vi
X2ZpbmRTdHJpbmc6c3RyaW5nIG9wdGlvbnM6b3B0aW9ucyBtYXhDb3VudDptYXhDb3VudF07Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBfcGFnZS0+ZmluZFN0cmluZyhzdHJp
bmcsIHRvRmluZE9wdGlvbnMob3B0aW9ucyksIG1heENvdW50KTsKIH0KIAogLSAodm9pZClfaGlk
ZUZpbmRVSQogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoX2N1c3RvbUNvbnRlbnRWaWV3
KSB7CisgICAgICAgIFtfY3VzdG9tQ29udGVudFZpZXcgd2ViX2hpZGVGaW5kVUldOworICAgICAg
ICByZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAgX3BhZ2UtPmhpZGVGaW5kVUkoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAppbmRleCAxZTJmNDQ1NmVkZTdlMTgwNTdlMTU5YjMwMmRjMDExMjQ4ZjA2NzNjLi4z
MDBkMWVlZWRmNjY4NWM1NzkzNmU4ZTFmMzgzMTIxMzUzZmRiM2UxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAorI2ltcG9ydCA8V2ViS2l0L19X
S0ZpbmRPcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMuaD4KIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGFnaW5hdGlvbk1vZGUpIHsK
QEAgLTM3LDE4ICszOCw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BhZ2luYXRp
b25Nb2RlKSB7CiAgICAgX1dLUGFnaW5hdGlvbk1vZGVCb3R0b21Ub1RvcCwKIH0gV0tfRU5VTV9B
VkFJTEFCTEUoMTBfMTAsIDhfMCk7CiAKLXR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBf
V0tGaW5kT3B0aW9ucykgewotICAgIF9XS0ZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlID0gMSA8
PCAwLAotICAgIF9XS0ZpbmRPcHRpb25zQXRXb3JkU3RhcnRzID0gMSA8PCAxLAotICAgIF9XS0Zp
bmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQgPSAxIDw8IDIsCi0gICAgX1dL
RmluZE9wdGlvbnNCYWNrd2FyZHMgPSAxIDw8IDMsCi0gICAgX1dLRmluZE9wdGlvbnNXcmFwQXJv
dW5kID0gMSA8PCA0LAotICAgIF9XS0ZpbmRPcHRpb25zU2hvd092ZXJsYXkgPSAxIDw8IDUsCi0g
ICAgX1dLRmluZE9wdGlvbnNTaG93RmluZEluZGljYXRvciA9IDEgPDwgNiwKLSAgICBfV0tGaW5k
T3B0aW9uc1Nob3dIaWdobGlnaHQgPSAxIDw8IDcsCi0gICAgX1dLRmluZE9wdGlvbnNEZXRlcm1p
bmVNYXRjaEluZGV4ID0gMSA8PCA4LAotfSBXS19FTlVNX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsK
LQogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlOwogQGNsYXNzIF9XS1JlbW90ZU9iamVj
dFJlZ2lzdHJ5OwogQGNsYXNzIF9XS1Nlc3Npb25TdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRmluZE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRmluZE9wdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZDFj
NjZmNGUzZWMxZGEzNTk0N2I5Y2ZiNTg0Y2Y4NjRiYmVmNTFkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGaW5kT3B0aW9ucy5oCkBAIC0w
LDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+
CisKKyNpZiBXS19BUElfRU5BQkxFRAorCit0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwg
X1dLRmluZE9wdGlvbnMpIHsKKyAgICBfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSA9IDEg
PDwgMCwKKyAgICBfV0tGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA9IDEgPDwgMSwKKyAgICBfV0tG
aW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0ID0gMSA8PCAyLAorICAgIF9X
S0ZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAzLAorICAgIF9XS0ZpbmRPcHRpb25zV3JhcEFy
b3VuZCA9IDEgPDwgNCwKKyAgICBfV0tGaW5kT3B0aW9uc1Nob3dPdmVybGF5ID0gMSA8PCA1LAor
ICAgIF9XS0ZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgPSAxIDw8IDYsCisgICAgX1dLRmlu
ZE9wdGlvbnNTaG93SGlnaGxpZ2h0ID0gMSA8PCA3LAorICAgIF9XS0ZpbmRPcHRpb25zRGV0ZXJt
aW5lTWF0Y2hJbmRleCA9IDEgPDwgOCwKK30gV0tfRU5VTV9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dL
V2ViVmlld0NvbnRlbnRQcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L1dLV2ViVmlld0NvbnRlbnRQcm92aWRlci5oCmluZGV4IGRlYmVhNmJhYTBhZDVlYjdiNjc3NTMy
MzMxNzhmYzdkZjRhOWEwOWUuLmMxYTA1MDFlZmM2ZWU4ZDJmM2EwMjVjNmMxMWI3MDBiZTA0Mzcw
NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdD
b250ZW50UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tX
ZWJWaWV3Q29udGVudFByb3ZpZGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBQTEFURk9STShJ
T1MpCiAKICNpbXBvcnQgPFdlYktpdC9XS1BhZ2VMb2FkVHlwZXMuaD4KKyNpbXBvcnQgPFdlYktp
dC9fV0tGaW5kT3B0aW9ucy5oPgogCiBAY2xhc3MgTlNEYXRhOwogQGNsYXNzIFVJU2Nyb2xsVmll
dzsKQEAgLTUwLDYgKzUxLDkgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKHZvaWQpd2ViX2Nv
bXB1dGVkQ29udGVudEluc2V0RGlkQ2hhbmdlOwogLSAodm9pZCl3ZWJfc2V0Rml4ZWRPdmVybGF5
VmlldzooVUlWaWV3ICopZml4ZWRPdmVybGF5VmlldzsKIC0gKHZvaWQpd2ViX2RpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb246KFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpbmF2aWdhdGlvblR5
cGU7CistICh2b2lkKXdlYl9jb3VudFN0cmluZ01hdGNoZXM6KE5TU3RyaW5nICopc3RyaW5nIG9w
dGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291
bnQ7CistICh2b2lkKXdlYl9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihf
V0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OworLSAo
dm9pZCl3ZWJfaGlkZUZpbmRVSTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tQREZWaWV3Lm1tCmluZGV4IGUyNDk1ZTRiMDhiODNlNWFiYjE5NzA2Y2I4YWJkM2RiNzM2
MDhiYzAuLjQ4OGFjNDQ0NDIzMjlmNmQyYTUzZGMyYTIwYzdmOTQ1NDhiOTRjZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpZiBQTEFURk9STShJT1MpCiAKKyNpbXBvcnQgIkFQSUZpbmRDbGllbnQuaCIKICNpbXBvcnQg
IkFQSVVJQ2xpZW50LmgiCiAjaW1wb3J0ICJDb3JlUERGU1BJLmgiCiAjaW1wb3J0ICJTZXNzaW9u
U3RhdGUuaCIKQEAgLTM1LDYgKzM2LDcgQEAKICNpbXBvcnQgIldLUERGUGFnZU51bWJlckluZGlj
YXRvci5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgorI2ltcG9ydCAiX1dLRmluZERlbGVnYXRlLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3Jl
U2VydmljZXMvVVRDb3JlVHlwZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC01NCw2ICs1Niw3IEBAIHR5cGVkZWYgc3RydWN0
IHsKICAgICBDR1JlY3QgZnJhbWU7CiAgICAgUmV0YWluUHRyPFVJUERGUGFnZVZpZXc+IHZpZXc7
CiAgICAgUmV0YWluUHRyPFVJUERGUGFnZT4gcGFnZTsKKyAgICB1bnNpZ25lZCBpbmRleDsKIH0g
UERGUGFnZUluZm87CiAKIEBpbnRlcmZhY2UgV0tQREZWaWV3ICgpCkBAIC03OSw2ICs4MiwyMiBA
QCB0eXBlZGVmIHN0cnVjdCB7CiAKICAgICBSZXRhaW5QdHI8V0tBY3Rpb25TaGVldEFzc2lzdGFu
dD4gX2FjdGlvblNoZWV0QXNzaXN0YW50OwogICAgIFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb24gX3Bvc2l0aW9uSW5mb3JtYXRpb247CisKKyAgICB1bnNpZ25lZCBfY3Vy
cmVudEZpbmRQYWdlSW5kZXg7CisgICAgdW5zaWduZWQgX2N1cnJlbnRGaW5kTWF0Y2hJbmRleDsK
KyAgICBSZXRhaW5QdHI8VUlQREZTZWxlY3Rpb24+IF9jdXJyZW50RmluZFNlbGVjdGlvbjsKKwor
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2NhY2hlZEZpbmRTdHJpbmc7CisgICAgVmVjdG9yPFJl
dGFpblB0cjxVSVBERlNlbGVjdGlvbj4+IF9jYWNoZWRGaW5kTWF0Y2hlczsKKyAgICB1bnNpZ25l
ZCBfY2FjaGVkRmluZE1heGltdW1Db3VudDsKKyAgICBfV0tGaW5kT3B0aW9ucyBfY2FjaGVkRmlu
ZE9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzOworCisgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IF9u
ZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRDsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9u
ZXh0Q2FjaGVkRmluZFN0cmluZzsKKyAgICB1bnNpZ25lZCBfbmV4dENhY2hlZEZpbmRNYXhpbXVt
Q291bnQ7CisgICAgX1dLRmluZE9wdGlvbnMgX25leHRDYWNoZWRGaW5kT3B0aW9uc0FmZmVjdGlu
Z1Jlc3VsdHM7CisKKyAgICBkaXNwYXRjaF9xdWV1ZV90IF9maW5kUXVldWU7CiB9CiAKIC0gKGlu
c3RhbmNldHlwZSl3ZWJfaW5pdFdpdGhGcmFtZTooQ0dSZWN0KWZyYW1lIHdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcKQEAgLTk4LDYgKzExNyw4IEBAIHR5cGVkZWYgc3RydWN0IHsKICAgICBf
YWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtbV0tBY3Rpb25TaGVldEFzc2lzdGFudCBh
bGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICBbX2FjdGlvblNoZWV0QXNzaXN0YW50IHNl
dERlbGVnYXRlOnNlbGZdOwogCisgICAgX2ZpbmRRdWV1ZSA9IGRpc3BhdGNoX3F1ZXVlX2NyZWF0
ZSgiY29tLmFwcGxlLldlYktpdC5XS1BERlZpZXdDb21wdXRlTWF0Y2hlc1F1ZXVlIiwgRElTUEFU
Q0hfUVVFVUVfU0VSSUFMKTsKKwogICAgIHJldHVybiBzZWxmOwogfQogCkBAIC0xMDUsNiArMTI2
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogewogICAgIFtzZWxmIF9jbGVhclBhZ2VzXTsKICAgICBb
X3BhZ2VOdW1iZXJJbmRpY2F0b3IgcmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgZGlzcGF0Y2hf
cmVsZWFzZShfZmluZFF1ZXVlKTsKICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKQEAgLTEzNSw3
ICsxNTcsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiAKICAgICBbc2VsZiBfY2xlYXJQYWdlc107CiAK
LSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXI+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dE
YXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRhdGFSZWYpZGF0YSkpOworICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92
aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilkYXRhKSk7CiAgICAgUmV0YWluUHRyPENH
UERGRG9jdW1lbnRSZWY+IGNnUERGRG9jdW1lbnQgPSBhZG9wdENGKENHUERGRG9jdW1lbnRDcmVh
dGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7CiAgICAgX3BkZkRvY3VtZW50ID0g
YWRvcHROUyhbW1VJUERGRG9jdW1lbnQgYWxsb2NdIGluaXRXaXRoQ0dQREZEb2N1bWVudDpjZ1BE
RkRvY3VtZW50LmdldCgpXSk7CiAKQEAgLTE2NSw2ICsxODcsMjEgQEAgdHlwZWRlZiBzdHJ1Y3Qg
ewogICAgICAgICBbX3BhZ2VOdW1iZXJJbmRpY2F0b3Igc2hvd107CiB9CiAKKy0gKHZvaWQpX2Vu
c3VyZVZpZXdGb3JQYWdlOihQREZQYWdlSW5mbyYpcGFnZUluZm8KK3sKKyAgICBpZiAocGFnZUlu
Zm8udmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFnZUluZm8udmlldyA9IGFkb3B0TlMo
W1tVSVBERlBhZ2VWaWV3IGFsbG9jXSBpbml0V2l0aFBhZ2U6cGFnZUluZm8ucGFnZS5nZXQoKSB0
aWxlZENvbnRlbnQ6WUVTXSk7CisgICAgW3BhZ2VJbmZvLnZpZXcgc2V0VXNlQmFja2luZ0xheWVy
OllFU107CisgICAgW3BhZ2VJbmZvLnZpZXcgc2V0RGVsZWdhdGU6c2VsZl07CisgICAgW1twYWdl
SW5mby52aWV3IGFubm90YXRpb25Db250cm9sbGVyXSBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBb
c2VsZiBhZGRTdWJ2aWV3OnBhZ2VJbmZvLnZpZXcuZ2V0KCldOworCisgICAgW3BhZ2VJbmZvLnZp
ZXcgc2V0RnJhbWU6cGFnZUluZm8uZnJhbWVdOworICAgIFtwYWdlSW5mby52aWV3IGNvbnRlbnRM
YXllcl0uY29udGVudHNTY2FsZSA9IHNlbGYud2luZG93LnNjcmVlbi5zY2FsZTsKK30KKwogLSAo
dm9pZClfcmV2YWxpZGF0ZVZpZXdzCiB7CiAgICAgaWYgKF9pc1N0YXJ0aW5nWm9vbSkKQEAgLTE3
OCwzMSArMjE1LDE4IEBAIHR5cGVkZWYgc3RydWN0IHsKICAgICBDR1JlY3QgdGFyZ2V0UmVjdEZv
ckNlbnRlclBhZ2UgPSBDR1JlY3RJbnNldCh0YXJnZXRSZWN0LCAwLCB0YXJnZXRSZWN0LnNpemUu
aGVpZ2h0IC8gMiAtIHBkZlBhZ2VNYXJnaW4gKiAyKTsKIAogICAgIF9jZW50ZXJQYWdlTnVtYmVy
ID0gMDsKLSAgICB1bnNpZ25lZCBjdXJyZW50UGFnZSA9IDA7CiAKICAgICBmb3IgKGF1dG8mIHBh
Z2VJbmZvIDogX3BhZ2VzKSB7Ci0gICAgICAgICsrY3VycmVudFBhZ2U7Ci0KLSAgICAgICAgaWYg
KCFDR1JlY3RJbnRlcnNlY3RzUmVjdChwYWdlSW5mby5mcmFtZSwgdGFyZ2V0UmVjdFdpdGhPdmVy
ZHJhdykpIHsKKyAgICAgICAgaWYgKCFDR1JlY3RJbnRlcnNlY3RzUmVjdChwYWdlSW5mby5mcmFt
ZSwgdGFyZ2V0UmVjdFdpdGhPdmVyZHJhdykgJiYgcGFnZUluZm8uaW5kZXggIT0gX2N1cnJlbnRG
aW5kUGFnZUluZGV4KSB7CiAgICAgICAgICAgICBbcGFnZUluZm8udmlldyByZW1vdmVGcm9tU3Vw
ZXJ2aWV3XTsKICAgICAgICAgICAgIHBhZ2VJbmZvLnZpZXcgPSBudWxscHRyOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIV9jZW50ZXJQYWdlTnVtYmVy
ICYmIENHUmVjdEludGVyc2VjdHNSZWN0KHBhZ2VJbmZvLmZyYW1lLCB0YXJnZXRSZWN0Rm9yQ2Vu
dGVyUGFnZSkpCi0gICAgICAgICAgICBfY2VudGVyUGFnZU51bWJlciA9IGN1cnJlbnRQYWdlOwot
Ci0gICAgICAgIGlmIChwYWdlSW5mby52aWV3KQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgcGFnZUluZm8udmlldyA9IGFkb3B0TlMoW1tVSVBERlBhZ2VWaWV3IGFsbG9jXSBpbml0
V2l0aFBhZ2U6cGFnZUluZm8ucGFnZS5nZXQoKSB0aWxlZENvbnRlbnQ6WUVTXSk7Ci0gICAgICAg
IFtwYWdlSW5mby52aWV3IHNldFVzZUJhY2tpbmdMYXllcjpZRVNdOwotICAgICAgICBbcGFnZUlu
Zm8udmlldyBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICAgICAgW1twYWdlSW5mby52aWV3IGFubm90
YXRpb25Db250cm9sbGVyXSBzZXREZWxlZ2F0ZTpzZWxmXTsKLSAgICAgICAgW3NlbGYgYWRkU3Vi
dmlldzpwYWdlSW5mby52aWV3LmdldCgpXTsKKyAgICAgICAgICAgIF9jZW50ZXJQYWdlTnVtYmVy
ID0gcGFnZUluZm8uaW5kZXggKyAxOwogCi0gICAgICAgIFtwYWdlSW5mby52aWV3IHNldEZyYW1l
OnBhZ2VJbmZvLmZyYW1lXTsKLSAgICAgICAgW3BhZ2VJbmZvLnZpZXcgY29udGVudExheWVyXS5j
b250ZW50c1NjYWxlID0gc2VsZi53aW5kb3cuc2NyZWVuLnNjYWxlOworICAgICAgICBbc2VsZiBf
ZW5zdXJlVmlld0ZvclBhZ2U6cGFnZUluZm9dOwogICAgIH0KIAogICAgIFtzZWxmIF91cGRhdGVQ
YWdlTnVtYmVySW5kaWNhdG9yXTsKQEAgLTI5MSw4ICszMTUsOCBAQCB0eXBlZGVmIHN0cnVjdCB7
CiAgICAgX3BhZ2VzLnJlc2VydmVDYXBhY2l0eShwYWdlQ291bnQpOwogCiAgICAgQ0dSZWN0IHBh
Z2VGcmFtZSA9IENHUmVjdE1ha2UoMCwgMCwgX21pbmltdW1TaXplLndpZHRoLCBfbWluaW11bVNp
emUuaGVpZ2h0KTsKLSAgICBmb3IgKE5TVUludGVnZXIgcGFnZU51bWJlciA9IDA7IHBhZ2VOdW1i
ZXIgPCBwYWdlQ291bnQ7ICsrcGFnZU51bWJlcikgewotICAgICAgICBVSVBERlBhZ2UgKnBhZ2Ug
PSBbX3BkZkRvY3VtZW50IHBhZ2VBdEluZGV4OnBhZ2VOdW1iZXJdOworICAgIGZvciAoTlNVSW50
ZWdlciBwYWdlSW5kZXggPSAwOyBwYWdlSW5kZXggPCBwYWdlQ291bnQ7ICsrcGFnZUluZGV4KSB7
CisgICAgICAgIFVJUERGUGFnZSAqcGFnZSA9IFtfcGRmRG9jdW1lbnQgcGFnZUF0SW5kZXg6cGFn
ZUluZGV4XTsKICAgICAgICAgaWYgKCFwYWdlKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAg
LTMwMyw2ICszMjcsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgIFBERlBhZ2VJbmZvIHBh
Z2VJbmZvOwogICAgICAgICBwYWdlSW5mby5wYWdlID0gcGFnZTsKICAgICAgICAgcGFnZUluZm8u
ZnJhbWUgPSBwYWdlRnJhbWVXaXRoTWFyZ2luQXBwbGllZDsKKyAgICAgICAgcGFnZUluZm8uaW5k
ZXggPSBwYWdlSW5kZXg7CiAgICAgICAgIF9wYWdlcy5hcHBlbmQocGFnZUluZm8pOwogICAgICAg
ICBwYWdlRnJhbWUub3JpZ2luLnkgKz0gcGFnZUZyYW1lLnNpemUuaGVpZ2h0IC0gcGRmUGFnZU1h
cmdpbjsKICAgICB9CkBAIC0zNjQsNiArMzg5LDE4OCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgICAg
cmV0dXJuIG5pbDsKIH0KIAorI3ByYWdtYSBtYXJrIEZpbmQtaW4tUGFnZQorCistIChOU1N0cmlu
Z0NvbXBhcmVPcHRpb25zKV9zdHJpbmdDb21wYXJlT3B0aW9uc0Zyb21XS0ZpbmRPcHRpb25zOihf
V0tGaW5kT3B0aW9ucylvcHRpb25zCit7CisgICAgTlNTdHJpbmdDb21wYXJlT3B0aW9ucyBmaW5k
T3B0aW9ucyA9IDA7CisgICAgaWYgKG9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNp
dGl2ZSkKKyAgICAgICAgZmluZE9wdGlvbnMgfD0gTlNDYXNlSW5zZW5zaXRpdmVTZWFyY2g7Cisg
ICAgaWYgKG9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKKyAgICAgICAgZmluZE9w
dGlvbnMgfD0gTlNCYWNrd2FyZHNTZWFyY2g7CisgICAgcmV0dXJuIGZpbmRPcHRpb25zOworfQor
CistICh2b2lkKV9jb21wdXRlTWF0Y2hlc0ZvclN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0
aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3Vu
dCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoYm9vbCBzdWNjZXNzKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIGlmICghX3BkZkRvY3VtZW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9XS0ZpbmRPcHRpb25z
IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzID0gb3B0aW9ucyAmIH4oX1dLRmluZE9wdGlvbnNCYWNr
d2FyZHMgfCBfV0tGaW5kT3B0aW9uc1Nob3dPdmVybGF5IHwgX1dLRmluZE9wdGlvbnNTaG93Rmlu
ZEluZGljYXRvciB8IF9XS0ZpbmRPcHRpb25zU2hvd0hpZ2hsaWdodCB8IF9XS0ZpbmRPcHRpb25z
V3JhcEFyb3VuZCB8IF9XS0ZpbmRPcHRpb25zRGV0ZXJtaW5lTWF0Y2hJbmRleCk7CisKKyAgICAv
LyBJZiB0aGlzIHNlYXJjaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBjdXJyZW50bHkgY2FjaGVkIHNl
YXJjaCwgYmFpbCBhbmQgY2FsbCB0aGUgY29tcGxldGlvbiBoYW5kbGVyLCBiZWNhdXNlIHRoZSBl
eGlzdGluZyBjYWNoZWQgcmVzdWx0cyBhcmUgdmFsaWQuCisgICAgaWYgKCFfY2FjaGVkRmluZE1h
dGNoZXMuaXNFbXB0eSgpICYmIFtfY2FjaGVkRmluZFN0cmluZyBpc0VxdWFsVG9TdHJpbmc6c3Ry
aW5nXSAmJiBfY2FjaGVkRmluZE9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzID09IG9wdGlvbnNBZmZl
Y3RpbmdSZXN1bHRzICYmIF9jYWNoZWRGaW5kTWF4aW11bUNvdW50ID09IG1heENvdW50KSB7Cisg
ICAgICAgIC8vIEFsc28sIGNhbmNlbCBhbnkgcnVubmluZyBzZWFyY2gsIGJlY2F1c2UgaXQgd2ls
bCBldmVudHVhbGx5IHJlcGxhY2UgdGhlIG5vdy12YWxpZCByZXN1bHRzLgorICAgICAgICBfbmV4
dENvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQrKzsKKworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih0cnVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIElmIHRoaXMgc2VhcmNo
IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGN1cnJlbnRseSBydW5uaW5nIGFzeW5jaHJvbm91cyBzZWFy
Y2gsIGJhaWwgYXMgaWYgdGhpcyBzZWFyY2ggd2VyZSBjYW5jZWxsZWQ7IHRoZSBvcmlnaW5hbCBz
ZWFyY2gncyBjb21wbGV0aW9uIGhhbmRsZXIgd2lsbCBldmVudHVhbGx5IGZpcmUuCisgICAgaWYg
KFtfbmV4dENhY2hlZEZpbmRTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnN0cmluZ10gJiYgX25leHRD
YWNoZWRGaW5kT3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHMgPT0gb3B0aW9uc0FmZmVjdGluZ1Jlc3Vs
dHMgJiYgX25leHRDYWNoZWRGaW5kTWF4aW11bUNvdW50ID09IG1heENvdW50KSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMgZmluZE9wdGlvbnMgPSBbc2VsZiBfc3RyaW5nQ29tcGFy
ZU9wdGlvbnNGcm9tV0tGaW5kT3B0aW9uczpvcHRpb25zQWZmZWN0aW5nUmVzdWx0c107CisKKyAg
ICBWZWN0b3I8UERGUGFnZUluZm8+IHBhZ2VzID0gX3BhZ2VzOworCisgICAgdW5zaWduZWQgY29t
cHV0ZU1hdGNoZXNPcGVyYXRpb25JRCA9IF9uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRCsr
OworICAgIF9uZXh0Q2FjaGVkRmluZFN0cmluZyA9IHN0cmluZzsKKyAgICBfbmV4dENhY2hlZEZp
bmRPcHRpb25zQWZmZWN0aW5nUmVzdWx0cyA9IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzOworICAg
IF9uZXh0Q2FjaGVkRmluZE1heGltdW1Db3VudCA9IG1heENvdW50OworCisgICAgZGlzcGF0Y2hf
YXN5bmMoX2ZpbmRRdWV1ZSwgXnsKKyAgICAgICAgVmVjdG9yPFJldGFpblB0cjxVSVBERlNlbGVj
dGlvbj4+IG1hdGNoZXM7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBwYWdlSW5kZXggPSAwOyBw
YWdlSW5kZXggPCBwYWdlcy5zaXplKCk7IHBhZ2VJbmRleCsrKSB7CisgICAgICAgICAgICBVSVBE
RlNlbGVjdGlvbiAqbWF0Y2ggPSBudWxscHRyOworICAgICAgICAgICAgd2hpbGUgKChtYXRjaCA9
IFtwYWdlc1twYWdlSW5kZXhdLnBhZ2UgZmluZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVjdGlvbjpt
YXRjaCBvcHRpb25zOmZpbmRPcHRpb25zXSkpIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVzLmFw
cGVuZChtYXRjaCk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoZXMuc2l6ZSgpID4gbWF4Q291
bnQpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gbWF4Q291bnRFeGNlZWRlZDsKKworICAgICAg
ICAgICAgICAgIC8vIElmIHdlJ3ZlIGVucXVldWVkIGFub3RoZXIgc2VhcmNoLCBjYW5jZWwgdGhp
cyBvbmUuCisgICAgICAgICAgICAgICAgaWYgKF9uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25J
RCA+IGNvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQgKyAxKSB7CisgICAgICAgICAgICAgICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisgICAgICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgbWF4Q291bnRFeGNlZWRlZDoKKyAgICAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAg
ICAgIC8vIElmIGFub3RoZXIgc2VhcmNoIGhhcyBiZWVuIGVucXVldWVkIGluIHRoZSBtZWFudGlt
ZSwgaWdub3JlIHRoaXMgcmVzdWx0LgorICAgICAgICAgICAgaWYgKF9uZXh0Q29tcHV0ZU1hdGNo
ZXNPcGVyYXRpb25JRCA+IGNvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQgKyAxKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgX2NhY2hlZEZpbmRTdHJpbmcgPSBzdHJpbmc7
CisgICAgICAgICAgICBfY2FjaGVkRmluZE9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzID0gb3B0aW9u
c0FmZmVjdGluZ1Jlc3VsdHM7CisgICAgICAgICAgICBfY2FjaGVkRmluZE1heGltdW1Db3VudCA9
IG1heENvdW50OworICAgICAgICAgICAgX2NhY2hlZEZpbmRNYXRjaGVzID0gbWF0Y2hlczsKKwor
ICAgICAgICAgICAgX25leHRDYWNoZWRGaW5kU3RyaW5nID0gbmlsOworCisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKKy0gKHZv
aWQpd2ViX2NvdW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dL
RmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAoreworICAg
IFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFnZTsKKyAg
ICBbc2VsZiBfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6c3RyaW5nIG9wdGlvbnM6b3B0aW9ucyBt
YXhDb3VudDptYXhDb3VudCBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgc3VjY2VzcykgeworICAg
ICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHBhZ2UtPmZp
bmRDbGllbnQoKS5kaWRDb3VudFN0cmluZ01hdGNoZXMocGFnZS5nZXQoKSwgc3RyaW5nLCBfY2Fj
aGVkRmluZE1hdGNoZXMuc2l6ZSgpKTsKKyAgICB9XTsKK30KKworLSAodm9pZClfZGlkRmluZE1h
dGNoOihVSVBERlNlbGVjdGlvbiAqKW1hdGNoCit7CisgICAgZm9yIChhdXRvJiBwYWdlSW5mbyA6
IF9wYWdlcykgeworICAgICAgICBpZiAocGFnZUluZm8ucGFnZSA9PSBtYXRjaC5wYWdlKSB7Cisg
ICAgICAgICAgICBbc2VsZiBfZW5zdXJlVmlld0ZvclBhZ2U6cGFnZUluZm9dOworCisgICAgICAg
ICAgICBbcGFnZUluZm8udmlldyBoaWdobGlnaHRTZWFyY2hTZWxlY3Rpb246bWF0Y2ggYW5pbWF0
ZWQ6Tk9dOworCisgICAgICAgICAgICBfY3VycmVudEZpbmRQYWdlSW5kZXggPSBwYWdlSW5mby5p
bmRleDsKKyAgICAgICAgICAgIF9jdXJyZW50RmluZFNlbGVjdGlvbiA9IG1hdGNoOworCisgICAg
ICAgICAgICBDR1JlY3Qgem9vbVJlY3QgPSBbcGFnZUluZm8udmlldyBjb252ZXJ0UmVjdEZyb21Q
REZQYWdlU3BhY2U6W21hdGNoIGJvdW5kc11dOworICAgICAgICAgICAgW3NlbGYgem9vbTpwYWdl
SW5mby52aWV3LmdldCgpIHRvOnpvb21SZWN0IGF0UG9pbnQ6Q0dQb2ludFplcm8ga2luZDprVUlQ
REZPYmplY3RLaW5kVGV4dF07CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KK30KKworLSAodm9pZCl3ZWJfZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9u
czooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAor
eworICAgIGlmIChfY3VycmVudEZpbmRTZWxlY3Rpb24pCisgICAgICAgIFtfcGFnZXNbX2N1cnJl
bnRGaW5kUGFnZUluZGV4XS52aWV3IGNsZWFyU2VhcmNoSGlnaGxpZ2h0c107CisKKyAgICBSZXRh
aW5QdHI8VUlQREZTZWxlY3Rpb24+IHByZXZpb3VzRmluZFNlbGVjdGlvbjsKKyAgICB1bnNpZ25l
ZCBwcmV2aW91c0ZpbmRQYWdlSW5kZXggPSAwOworCisgICAgaWYgKFtfY2FjaGVkRmluZFN0cmlu
ZyBoYXNQcmVmaXg6c3RyaW5nXSkgeworICAgICAgICBwcmV2aW91c0ZpbmRTZWxlY3Rpb24gPSBf
Y3VycmVudEZpbmRTZWxlY3Rpb247CisgICAgICAgIHByZXZpb3VzRmluZFBhZ2VJbmRleCA9IF9j
dXJyZW50RmluZFBhZ2VJbmRleDsKKworICAgICAgICBpZiAoIVtfY2FjaGVkRmluZFN0cmluZyBp
c0VxdWFsVG9TdHJpbmc6c3RyaW5nXSkgeworICAgICAgICAgICAgTlNVSW50ZWdlciBsb2NhdGlv
biA9IFtfY3VycmVudEZpbmRTZWxlY3Rpb24gc3RhcnRJbmRleF07CisgICAgICAgICAgICBwcmV2
aW91c0ZpbmRTZWxlY3Rpb24gPSBhZG9wdE5TKFtbVUlQREZTZWxlY3Rpb24gYWxsb2NdIGluaXRX
aXRoUGFnZTpbX2N1cnJlbnRGaW5kU2VsZWN0aW9uIHBhZ2VdIGZyb21JbmRleDpsb2NhdGlvbiAt
IDEgdG9JbmRleDpsb2NhdGlvbl0pOworICAgICAgICB9CisgICAgfQorCisgICAgTlNTdHJpbmdD
b21wYXJlT3B0aW9ucyBmaW5kT3B0aW9ucyA9IFtzZWxmIF9zdHJpbmdDb21wYXJlT3B0aW9uc0Zy
b21XS0ZpbmRPcHRpb25zOm9wdGlvbnNdOworICAgIGJvb2wgYmFja3dhcmRzID0gKG9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcyk7CisgICAgUmVmUHRyPFdlYktpdDo6V2ViUGFnZVBy
b3h5PiBwYWdlID0gX3dlYlZpZXctPl9wYWdlOworCisgICAgW3NlbGYgX2NvbXB1dGVNYXRjaGVz
Rm9yU3RyaW5nOnN0cmluZyBvcHRpb25zOm9wdGlvbnMgbWF4Q291bnQ6bWF4Q291bnQgY29tcGxl
dGlvbkhhbmRsZXI6Xihib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuc2lnbmVkIHBhZ2VJbmRleCA9IHByZXZpb3Vz
RmluZFBhZ2VJbmRleDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IF9wYWdlcy5z
aXplKCk7IGkrKykgeworICAgICAgICAgICAgVUlQREZTZWxlY3Rpb24gKm1hdGNoID0gW19wYWdl
c1twYWdlSW5kZXhdLnBhZ2UgZmluZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVjdGlvbjoocGFnZUlu
ZGV4ID09IHByZXZpb3VzRmluZFBhZ2VJbmRleCA/IHByZXZpb3VzRmluZFNlbGVjdGlvbi5nZXQo
KSA6IG51bGxwdHIpIG9wdGlvbnM6ZmluZE9wdGlvbnNdOworCisgICAgICAgICAgICBpZiAoIW1h
dGNoKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwYWdlSW5kZXggJiYgYmFja3dhcmRzKQorICAg
ICAgICAgICAgICAgICAgICBwYWdlSW5kZXggPSBfcGFnZXMuc2l6ZSgpIC0gMTsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChwYWdlSW5kZXggPT0gX3BhZ2VzLnNpemUoKSAtIDEgJiYgIWJhY2t3
YXJkcykKKyAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4ID0gMDsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleCArPSBiYWNrd2FyZHMgPyAtMSA6
IDE7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIFtzZWxmIF9kaWRGaW5kTWF0Y2g6bWF0Y2hdOworCisgICAgICAgICAgICBpZiAoX2NhY2hl
ZEZpbmRNYXRjaGVzLnNpemUoKSA8PSBtYXhDb3VudCkgeworICAgICAgICAgICAgICAgIF9jdXJy
ZW50RmluZE1hdGNoSW5kZXggPSAwOworICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYg
a25vd25NYXRjaCA6IF9jYWNoZWRGaW5kTWF0Y2hlcykgeworICAgICAgICAgICAgICAgICAgICBp
ZiAobWF0Y2guc3RyaW5nUmFuZ2UubG9jYXRpb24gPT0gW2tub3duTWF0Y2ggc3RyaW5nUmFuZ2Vd
LmxvY2F0aW9uICYmIG1hdGNoLnN0cmluZ1JhbmdlLmxlbmd0aCA9PSBba25vd25NYXRjaCBzdHJp
bmdSYW5nZV0ubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5maW5kQ2xp
ZW50KCkuZGlkRmluZFN0cmluZyhwYWdlLmdldCgpLCBzdHJpbmcsIF9jYWNoZWRGaW5kTWF0Y2hl
cy5zaXplKCksIF9jdXJyZW50RmluZE1hdGNoSW5kZXgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgX2N1
cnJlbnRGaW5kTWF0Y2hJbmRleCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwYWdl
LT5maW5kQ2xpZW50KCkuZGlkRmFpbFRvRmluZFN0cmluZyhwYWdlLmdldCgpLCBzdHJpbmcpOwor
ICAgIH1dOworfQorCistICh2b2lkKXdlYl9oaWRlRmluZFVJCit7CisgICAgaWYgKF9jdXJyZW50
RmluZFNlbGVjdGlvbikKKyAgICAgICAgW19wYWdlc1tfY3VycmVudEZpbmRQYWdlSW5kZXhdLnZp
ZXcgY2xlYXJTZWFyY2hIaWdobGlnaHRzXTsKKworICAgIF9jdXJyZW50RmluZFNlbGVjdGlvbiA9
IG51bGxwdHI7CisgICAgX2NhY2hlZEZpbmRTdHJpbmcgPSBudWxscHRyOworICAgIF9jYWNoZWRG
aW5kTWF0Y2hlcy5jbGVhcigpOworfQorCiAjcHJhZ21hIG1hcmsgVUlQREZQYWdlVmlld0RlbGVn
YXRlCiAKIC0gKHZvaWQpem9vbTooVUlQREZQYWdlVmlldyAqKXBhZ2VWaWV3IHRvOihDR1JlY3Qp
dGFyZ2V0UmVjdCBhdFBvaW50OihDR1BvaW50KW9yaWdpbiBraW5kOihVSVBERk9iamVjdEtpbmQp
a2luZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDdiMTYwMzc5Mzg0ZWFkMDhhYmNhMWE1ZGQxMzk2ZWJhNzE4YTMxNGMuLjViODIy
ZjIzZDQ4Y2FkYjkxODFjYjhiMzQ1NDYxMTIyMjBlYTA5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3Niw2ICs2NzYsNyBA
QAogCQkyRERGNzMxNjE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVD
b2xsZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRERjczMTQxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29s
bGVjdGlvbi5tbSAqLzsgfTsKIAkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQkyREU2OTQzRTE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxl
ck1lc3NhZ2VzLmggKi87IH07CisJCTJERUFDNUNGMUFDMzY4QkIwMEExOTVEOCAvKiBfV0tGaW5k
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRFQUM1Q0UxQUMzNjhCQjAwQTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkRGOTU5M0IxOEE0MjQxMjAw
OTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gKi87IH07CiAJCTJERjlFRUU1MUE3ODFGQjQwMEI2
Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRGOUVFRTMxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5j
cHAgKi87IH07CiAJCTJERjlFRUU2MUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUU0MUE3
ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uaCAqLzsgfTsKQEAgLTI4MzMsNiArMjgzNCw3
IEBACiAJCTJEREY3MzE0MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZUNvbGxlY3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZUNvbGxlY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJERTY5NDNCMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREU2OTQzQzE4QkQyQTY4MDA1QzE1RTUg
LyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREVBQzVDRTFBQzM2OEJCMDBBMTk1RDgg
LyogX1dLRmluZE9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dL
RmluZE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOTU5MzQxOEE0
MjQxMjAwOTc4NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsg
cGF0aCA9IGlvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJERjlFRUUzMUE3ODFGQjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJRnJhbWVJbmZvLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOUVFRTQxQTc4MUZCNDAwQjZDRkJFIC8q
IEFQSUZyYW1lSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElGcmFt
ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMjMsNiArNTMyNSw3IEBA
CiAJCQkJMUFEMDFCQzcxOTA1RDM3RTAwQzlDNDVGIC8qIF9XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0
aW5nLmggKi8sCiAJCQkJMUFEMDFCQzYxOTA1RDM3RTAwQzlDNDVGIC8qIF9XS0Vycm9yUmVjb3Zl
cnlBdHRlbXB0aW5nLm1tICovLAogCQkJCTAwNUQxNThFMThFNEM0RUIwMDczNDYxOSAvKiBfV0tG
aW5kRGVsZWdhdGUuaCAqLywKKwkJCQkyREVBQzVDRTFBQzM2OEJCMDBBMTk1RDggLyogX1dLRmlu
ZE9wdGlvbnMuaCAqLywKIAkJCQkzN0E2NEU1NDE4RjM4RTNDMDBFQjMwRjEgLyogX1dLRm9ybURl
bGVnYXRlLmggKi8sCiAJCQkJMzdBNjRFNTYxOEYzOEY0NjAwRUIzMEYxIC8qIF9XS0Zvcm1JbnB1
dFNlc3Npb24uaCAqLywKIAkJCQkxQTQzRTgyODE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmggKi8sCkBAIC03NzU0LDYgKzc3NTcsNyBAQAogCQkJCTFBNkZC
RDI4MTFFNjlCQzIwMERCMTM3MSAvKiBOZXRzY2FwZVBsdWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE0QTlDNTYxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUE1ODg5MjExRUU3MDQwMDA2MUI4ODIgLyogTmV0c2NhcGVQbHVn
aW5TdHJlYW0uaCBpbiBIZWFkZXJzICovLAorCQkJCTJERUFDNUNGMUFDMzY4QkIwMEExOTVEOCAv
KiBfV0tGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE3OThDN0ExNkU2ODE4ODAw
MjQwMTM5IC8qIE5ldHdvcmtCbG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0NDM2
RUNDMUEwRDA0MEIwMEVBRDIwNCAvKiBOZXR3b3JrQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0ODlEMjhBMUEwQTJEQjgwMDc4QzA2QSAvKiBOZXR3b3JrQ2FjaGVDb2Rlci5oIGluIEhlYWRl
cnMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249609</attachid>
            <date>2015-03-27 14:47:54 -0700</date>
            <delta_ts>2015-03-27 15:04:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143065-20150327144714.patch</filename>
            <type>text/plain</type>
            <size>29712</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWM4NmQwNWY2NGUyMzE3
ODVmZGMyMWZkOTNjNDY2NGI2MmM0MGUyZi4uNDBhNDExZWFiMzE4ZmEyNzAxMTdlOWQ4NDNiNDNk
ZjUxMDFjNzYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE1LTAzLTI3ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBp
T1MgV2ViS2l0MiBQREYgRmluZC1pbi1QYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2Nzkz
MzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
UGxhdGZvcm0vc3BpL2lvcy9Db3JlUERGU1BJLmg6CisgICAgICAgIEFkZCBzb21lIFNQSS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvdW50U3RyaW5nTWF0Y2hlczpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2ZpbmRTdHJpbmc6b3B0aW9uczptYXhDb3VudDpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IF9oaWRlRmluZFVJXSk6CisgICAgICAgIElmIHdlIGhhdmUgYSBjdXN0b20g
Y29udGVudCB2aWV3LCBmb3J3YXJkIGZpbmQtaW4tcGFnZSBtZXRob2RzIHRvIGl0LgorICAgICAg
ICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZpbmRPcHRpb25zLmg6CisgICAgICAgIE1v
dmUgX1dLRmluZE9wdGlvbnMgaW50byBpdHMgb3duIGZpbGUuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyLmg6CisgICAgICAgIEFkZCBmaW5kLXJl
bGF0ZWQgbWV0aG9kcyB0byB0aGUgV0tXZWJWaWV3Q29udGVudFByb3ZpZGVyIHByb3RvY29sLgor
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dLUERG
VmlldyB3ZWJfaW5pdFdpdGhGcmFtZTp3ZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1BERlZpZXcg
ZGVhbGxvY10pOgorICAgICAgICBNYWludGFpbiBhIGRpc3BhdGNoIHF1ZXVlIGZvciBzZWFyY2hp
bmcgdGhlIFBERi4KKworICAgICAgICAoLVtXS1BERlZpZXcgd2ViX3NldENvbnRlbnRQcm92aWRl
ckRhdGE6c3VnZ2VzdGVkRmlsZW5hbWU6XSk6CisgICAgICAgIEZpeCBhIHR5cGUuCisKKyAgICAg
ICAgKC1bV0tQREZWaWV3IF9lbnN1cmVWaWV3Rm9yUGFnZTpdKToKKyAgICAgICAgU3BsaXQgdGhl
IGNvZGUgdG8gY3JlYXRlL3BhcmVudCBhIHBhZ2UgdmlldyBvdXQgZnJvbSBfcmV2YWxpZGF0ZVZp
ZXdzLAorICAgICAgICBzbyB0aGF0IHRoZSBmaW5kIGNvZGUgY2FuIGNyZWF0ZS9wYXJlbnQgdGhl
IHRhcmdldHRlZCBVSVBERlBhZ2VWaWV3CisgICAgICAgIGluIG9yZGVyIHRvIGluc3RhbGwgdGhl
IGZpbmQgaGlnaGxpZ2h0IGluIGl0LCBidXQgYmVmb3JlIGl0IGlzIHNjcm9sbGVkIGludG8gdmll
dy4KKworICAgICAgICAoLVtXS1BERlZpZXcgX3JldmFsaWRhdGVWaWV3c10pOgorICAgICAgICBV
c2UgdGhlIHN0b3JlZCBwYWdlIGluZGV4IGluc3RlYWQgb2YgY291bnRpbmcgYWdhaW4uCisgICAg
ICAgIERvbid0IHVucGFyZW50IHBhZ2Ugdmlld3MgdGhhdCBoYXZlIGZpbmQtaW4tcGFnZSBoaWdo
bGlnaHRzIGluIHRoZW0sIGJlY2F1c2UKKyAgICAgICAgd2Ugd29uJ3Qga25vdyBlbm91Z2ggdG8g
cmVjcmVhdGUgdGhlbSBsYXRlci4KKworICAgICAgICAoLVtXS1BERlZpZXcgX2NvbXB1dGVQYWdl
QW5kRG9jdW1lbnRGcmFtZXNdKToKKyAgICAgICAgUHV0IHRoZSBwYWdlIGluZGV4IGluIFBERlBh
Z2VJbmZvLCBmb3IgcmVmZXJlbmNlIGVsc2V3aGVyZS4KKworICAgICAgICAoLVtXS1BERlZpZXcg
X3N0cmluZ0NvbXBhcmVPcHRpb25zRnJvbVdLRmluZE9wdGlvbnM6XSk6CisgICAgICAgICgtW1dL
UERGVmlldyBfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6b3B0aW9uczptYXhDb3VudDpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgQXN5bmNocm9ub3VzbHkgKGFuZCBvbiBvdXIgc2VyaWFs
IHF1ZXVlKSBzZWFyY2ggdGhlIFBERiBmb3IgdGhlIGdpdmVuIHN0cmluZy4KKyAgICAgICAgV2Un
bGwgY2FjaGUgdGhlIG1vc3QgcmVjZW50IHJlc3VsdHMgdG8gYXZvaWQgc2VhcmNoaW5nIG1vcmUg
dGhhbiBvbmNlLAorICAgICAgICBjYW5jZWwgZXhpc3Rpbmcgc2VhcmNoZXMgd2hlbiBhbm90aGVy
IGJlZ2lucyAoc2luY2UgaXQncyBhIHNlcmlhbCBxdWV1ZSwKKyAgICAgICAgdGhpcyBlbnN1cmVz
IHdlJ2xsIG9ubHkgaGF2ZSBvbmUgc2VhcmNoIGFjdGl2ZSBhdCBhIHRpbWUpLgorCisgICAgICAg
ICgtW1dLUERGVmlldyB3ZWJfY291bnRTdHJpbmdNYXRjaGVzOm9wdGlvbnM6bWF4Q291bnQ6XSk6
CisgICAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBmb3IgdGhlIGdpdmVuIHN0cmlu
ZywgYW5kIGluZm9ybSB0aGUgRmluZENsaWVudAorICAgICAgICBvZiB0aGUgcmVzdWx0LgorCisg
ICAgICAgICgtW1dLUERGVmlldyBfZGlkRmluZE1hdGNoOl0pOgorICAgICAgICBXaGVuIHdlIGZp
bmQgYSBtYXRjaCwgY3JlYXRlIGEgdmlldyBmb3IgaXQsIGhpZ2hsaWdodCB0aGUgbWF0Y2gsIGFu
ZAorICAgICAgICB6b29tIHNvIHRoYXQgaXQncyBpbi12aWV3LgorCisgICAgICAgICgtW1dLUERG
VmlldyB3ZWJfZmluZFN0cmluZzpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAgICBJbmNyZW1l
bnRhbGx5IHNlYXJjaCB0aGUgZG9jdW1lbnQgZm9yIHRoZSBnaXZlbiBzdHJpbmcuIFdlIGRvIGFu
IGluY3JlbWVudGFsCisgICAgICAgIHNlYXJjaCBldmVuIGlmIHdlIGhhdmUgYWxsIG9mIHRoZSBy
ZXN1bHRzIHNvIHRoYXQgd2UgY2FuIGFuY2hvciB0aGUgc2VhcmNoCisgICAgICAgIGluIHRoZSBy
aWdodCBwbGFjZSBpZiB0aGUgbmV3IHN0cmluZyBpcyBhIHByZWZpeCBvZiB0aGUgb2xkIHN0cmlu
ZywgZXRjLgorICAgICAgICBXcmFwIGFyb3VuZCBhcHByb3ByaWF0ZWx5IHdoZW4gc2VhcmNoaW5n
IHBhc3QgdGhlIGJlZ2lubmluZyBvciBlbmQgb2YgdGhlCisgICAgICAgIGRvY3VtZW50LiBJZiB3
ZSBoYXZlIGFsbCBvZiB0aGUgcmVzdWx0cyAodGhlcmUgd2VyZSBsZXNzIHRoYW4gbWF4Q291bnQg
cmVzdWx0cyksCisgICAgICAgIGxvb2sgdGhyb3VnaCB0aGUgY2FjaGVkIG1hdGNoZXMgZm9yIHRo
ZSBpbmNyZW1lbnRhbGx5LWZvdW5kIHJlc3VsdCBhbmQKKyAgICAgICAgcmVwb3J0IGl0cyBpbmRl
eCB0byB0aGUgY2xpZW50LgorCisgICAgICAgICgtW1dLUERGVmlldyB3ZWJfaGlkZUZpbmRVSV0p
OgorICAgICAgICBEaXNtaXNzIHRoZSBzZWxlY3Rpb24gYW5kIGNsZWFyIHNvbWUgc3RhdGUgc28g
d2Ugc3RhcnQgdGhlIG5leHQgc2VhcmNoIGFmcmVzaC4KKworICAgICAgICAqIFdlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxNS0wMy0yNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW05ldHdvcmtDYWNoZV0gV2Ugb25seSBjYWNo
ZSByZXNwb25zZXMgd2l0aCBzdGF0dXMgY29kZXMgdGhhdCBhcmUgY2FjaGVhYmxlIGJ5IGRlZmF1
bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3NwaS9pb3MvQ29yZVBERlNQ
SS5oIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9Db3JlUERGU1BJLmgKaW5kZXgg
NjM5NTgxMzUzMTY2YWY3M2M3ZDg2NTkwMmQzNzkzMGU3MThiNGNhYy4uMWNiOTlkZDFlZGQ2MzU4
MGU5MWJlYjJhYWUxYTE2NzZkOTA3N2UxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vc3BpL2lvcy9Db3JlUERGU1BJLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm0v
c3BpL2lvcy9Db3JlUERGU1BJLmgKQEAgLTMzLDE0ICszMywxOCBAQAogI2ltcG9ydCA8Q29yZVBE
Ri9VSVBERkxpbmtBbm5vdGF0aW9uLmg+CiAjaW1wb3J0IDxDb3JlUERGL1VJUERGUGFnZS5oPgog
I2ltcG9ydCA8Q29yZVBERi9VSVBERlBhZ2VWaWV3Lmg+CisjaW1wb3J0IDxDb3JlUERGL1VJUERG
U2VsZWN0aW9uLmg+CiAKICNlbHNlCiAKK0BjbGFzcyBVSVBERlNlbGVjdGlvbjsKKwogQGludGVy
ZmFjZSBVSVBERlBhZ2UgOiBOU09iamVjdAogQGVuZAogCiBAaW50ZXJmYWNlIFVJUERGUGFnZSAo
RGV0YWlscykKIC0gKENHUmVjdCljcm9wQm94QWNjb3VudEZvclJvdGF0aW9uOworLSAoVUlQREZT
ZWxlY3Rpb24gKilmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBmcm9tU2VsZWN0aW9uOihV
SVBERlNlbGVjdGlvbiAqKXNlbGVjdGlvbiBvcHRpb25zOihOU1N0cmluZ0NvbXBhcmVPcHRpb25z
KW9wdGlvbnM7CiBAZW5kCiAKIEBpbnRlcmZhY2UgVUlQREZEb2N1bWVudCA6IE5TT2JqZWN0CkBA
IC01NSw2ICs1OSw3IEBACiAKIHR5cGVkZWYgZW51bSB7CiAgICAga1VJUERGT2JqZWN0S2luZEdy
YXBoaWMgPSAxLAorICAgIGtVSVBERk9iamVjdEtpbmRUZXh0ID0gMgogfSBVSVBERk9iamVjdEtp
bmQ7CiAKIEBjbGFzcyBVSVBERlBhZ2VWaWV3OwpAQCAtNzYsNiArODEsOCBAQCB0eXBlZGVmIGVu
dW0gewogQGludGVyZmFjZSBVSVBERlBhZ2VWaWV3IChEZXRhaWxzKQogLSAoaWQpaW5pdFdpdGhQ
YWdlOihVSVBERlBhZ2UgKikgcGFnZSB0aWxlZENvbnRlbnQ6KEJPT0wpdGlsZWQ7CiAtIChDR1Jl
Y3QpY29udmVydFJlY3RGcm9tUERGUGFnZVNwYWNlOihDR1JlY3QpcDsKKy0gKHZvaWQpaGlnaGxp
Z2h0U2VhcmNoU2VsZWN0aW9uOihVSVBERlNlbGVjdGlvbiAqKXNlbGVjdGlvbiBhbmltYXRlZDoo
Qk9PTClhbmltYXRlZDsKKy0gKHZvaWQpY2xlYXJTZWFyY2hIaWdobGlnaHRzOwogQHByb3BlcnR5
IChub25hdG9taWMsIGFzc2lnbikgQk9PTCB1c2VCYWNraW5nTGF5ZXI7CiBAcHJvcGVydHkgKG5v
bmF0b21pYywgYXNzaWduKSBpZDxOU09iamVjdCwgVUlQREZQYWdlVmlld0RlbGVnYXRlPiBkZWxl
Z2F0ZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ0FMYXllciAqY29udGVudExh
eWVyOwpAQCAtMTIwLDQgKzEyNywxNSBAQCB0eXBlZGVmIGVudW0gewogLSAodm9pZClhbm5vdGF0
aW9uOihVSVBERkFubm90YXRpb24gKilhbm5vdGF0aW9uIGlzQmVpbmdQcmVzc2VkQXRQb2ludDoo
Q0dQb2ludCkgcG9pbnQgY29udHJvbGxlcjooVUlQREZBbm5vdGF0aW9uQ29udHJvbGxlciAqKWNv
bnRyb2xsZXI7CiBAZW5kCiAKK0BpbnRlcmZhY2UgVUlQREZTZWxlY3Rpb24gOiBOU09iamVjdAor
QGVuZAorCitAaW50ZXJmYWNlIFVJUERGU2VsZWN0aW9uIChEZXRhaWxzKQorLSAoaWQpaW5pdFdp
dGhQYWdlOihVSVBERlBhZ2UgKilwYWdlIGZyb21JbmRleDooTlNVSW50ZWdlcilzdGFydEluZGV4
IHRvSW5kZXg6KE5TVUludGVnZXIpZW5kSW5kZXg7CistIChDR1JlY3QpYm91bmRzOworLSAoVUlQ
REZQYWdlICopcGFnZTsKKy0gKE5TVUludGVnZXIpc3RhcnRJbmRleDsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBhc3NpZ24pIENGUmFuZ2Ugc3RyaW5nUmFuZ2U7CitAZW5kCisKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA2
OGY4MTk3ZDAyMzhjMTY1MGM1ZGQ4OTJhYjJkMTFmNjA0OTM5NDI5Li4zNjRmMjIwN2I4NzE3ZTdi
ZGMwYzIwNDM5NjEzM2M2MzI3MDQ0MGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjA5NCwxNiArMjA5NCwzNCBAQCBzdGF0aWMg
aW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3
a0ZpbmRPcHRpb25zKQogCiAtICh2b2lkKV9jb3VudFN0cmluZ01hdGNoZXM6KE5TU3RyaW5nICop
c3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVn
ZXIpbWF4Q291bnQKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKF9jdXN0b21Db250ZW50
VmlldykgeworICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9jb3VudFN0cmluZ01hdGNo
ZXM6c3RyaW5nIG9wdGlvbnM6b3B0aW9ucyBtYXhDb3VudDptYXhDb3VudF07CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKICAgICBfcGFnZS0+Y291bnRTdHJpbmdNYXRjaGVzKHN0cmlu
ZywgdG9GaW5kT3B0aW9ucyhvcHRpb25zKSwgbWF4Q291bnQpOwogfQogCiAtICh2b2lkKV9maW5k
U3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25z
IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50CiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAg
IGlmIChfY3VzdG9tQ29udGVudFZpZXcpIHsKKyAgICAgICAgW19jdXN0b21Db250ZW50VmlldyB3
ZWJfZmluZFN0cmluZzpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1heENvdW50Om1heENvdW50XTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAgIF9wYWdlLT5maW5kU3RyaW5nKHN0
cmluZywgdG9GaW5kT3B0aW9ucyhvcHRpb25zKSwgbWF4Q291bnQpOwogfQogCiAtICh2b2lkKV9o
aWRlRmluZFVJCiB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGlmIChfY3VzdG9tQ29udGVudFZp
ZXcpIHsKKyAgICAgICAgW19jdXN0b21Db250ZW50VmlldyB3ZWJfaGlkZUZpbmRVSV07CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBfcGFnZS0+aGlkZUZpbmRVSSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IDFlMmY0NDU2ZWRlN2UxODA1N2UxNTliMzAyZGMwMTEyNDhmMDY3M2Mu
LjMwMGQxZWVlZGY2Njg1YzU3OTM2ZThlMWYzODMxMjEzNTNmZGIzZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBA
IC0yNyw2ICsyNyw3IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCisjaW1wb3J0IDxXZWJLaXQv
X1dLRmluZE9wdGlvbnMuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tSZW5kZXJpbmdQcm9ncmVzc0V2
ZW50cy5oPgogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0aW9uTW9kZSkg
ewpAQCAtMzcsMTggKzM4LDYgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLUGFnaW5h
dGlvbk1vZGUpIHsKICAgICBfV0tQYWdpbmF0aW9uTW9kZUJvdHRvbVRvVG9wLAogfSBXS19FTlVN
X0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKIAotdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS0ZpbmRPcHRpb25zKSB7Ci0gICAgX1dLRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUgPSAx
IDw8IDAsCi0gICAgX1dLRmluZE9wdGlvbnNBdFdvcmRTdGFydHMgPSAxIDw8IDEsCi0gICAgX1dL
RmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCA9IDEgPDwgMiwKLSAgICBf
V0tGaW5kT3B0aW9uc0JhY2t3YXJkcyA9IDEgPDwgMywKLSAgICBfV0tGaW5kT3B0aW9uc1dyYXBB
cm91bmQgPSAxIDw8IDQsCi0gICAgX1dLRmluZE9wdGlvbnNTaG93T3ZlcmxheSA9IDEgPDwgNSwK
LSAgICBfV0tGaW5kT3B0aW9uc1Nob3dGaW5kSW5kaWNhdG9yID0gMSA8PCA2LAotICAgIF9XS0Zp
bmRPcHRpb25zU2hvd0hpZ2hsaWdodCA9IDEgPDwgNywKLSAgICBfV0tGaW5kT3B0aW9uc0RldGVy
bWluZU1hdGNoSW5kZXggPSAxIDw8IDgsCi19IFdLX0VOVU1fQVZBSUxBQkxFKDEwXzEwLCA4XzAp
OwotCiBAY2xhc3MgV0tCcm93c2luZ0NvbnRleHRIYW5kbGU7CiBAY2xhc3MgX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnk7CiBAY2xhc3MgX1dLU2Vzc2lvblN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGaW5kT3B0aW9ucy5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tGaW5kT3B0aW9ucy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMy
NWM1ZDk2M2RkMTE3NGIyZGU3MTlhMTU2NTViMjNmODk3ZWYyYTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZpbmRPcHRpb25zLmgKQEAg
LTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24u
aD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3R5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2Vy
LCBfV0tGaW5kT3B0aW9ucykgeworICAgIF9XS0ZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlID0g
MSA8PCAwLAorICAgIF9XS0ZpbmRPcHRpb25zQXRXb3JkU3RhcnRzID0gMSA8PCAxLAorICAgIF9X
S0ZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQgPSAxIDw8IDIsCisgICAg
X1dLRmluZE9wdGlvbnNCYWNrd2FyZHMgPSAxIDw8IDMsCisgICAgX1dLRmluZE9wdGlvbnNXcmFw
QXJvdW5kID0gMSA8PCA0LAorICAgIF9XS0ZpbmRPcHRpb25zU2hvd092ZXJsYXkgPSAxIDw8IDUs
CisgICAgX1dLRmluZE9wdGlvbnNTaG93RmluZEluZGljYXRvciA9IDEgPDwgNiwKKyAgICBfV0tG
aW5kT3B0aW9uc1Nob3dIaWdobGlnaHQgPSAxIDw8IDcsCisgICAgX1dLRmluZE9wdGlvbnNEZXRl
cm1pbmVNYXRjaEluZGV4ID0gMSA8PCA4LAorCisgICAgX1dLRmluZE9wdGlvbnNJcnJlbGV2YW50
Rm9ySW5jcmVtZW50YWxSZXN1bHRzID0gX1dLRmluZE9wdGlvbnNTaG93T3ZlcmxheSB8IF9XS0Zp
bmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgfCBfV0tGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQg
fCBfV0tGaW5kT3B0aW9uc0RldGVybWluZU1hdGNoSW5kZXgsCisgICAgX1dLRmluZE9wdGlvbnNJ
cnJlbGV2YW50Rm9yQmF0Y2hSZXN1bHRzID0gX1dLRmluZE9wdGlvbnNCYWNrd2FyZHMgfCBfV0tG
aW5kT3B0aW9uc1dyYXBBcm91bmQgfCBfV0tGaW5kT3B0aW9uc0lycmVsZXZhbnRGb3JJbmNyZW1l
bnRhbFJlc3VsdHMKKworfSBXS19FTlVNX0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29u
dGVudFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3
Q29udGVudFByb3ZpZGVyLmgKaW5kZXggZGViZWE2YmFhMGFkNWViN2I2Nzc1MzIzMzE3OGZjN2Rm
NGE5YTA5ZS4uYzFhMDUwMWVmYzZlZThkMmYzYTAyNWM2YzExYjcwMGJlMDQzNzA3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRlbnRQcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250
ZW50UHJvdmlkZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2lmIFBMQVRGT1JNKElPUykKIAogI2lt
cG9ydCA8V2ViS2l0L1dLUGFnZUxvYWRUeXBlcy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0ZpbmRP
cHRpb25zLmg+CiAKIEBjbGFzcyBOU0RhdGE7CiBAY2xhc3MgVUlTY3JvbGxWaWV3OwpAQCAtNTAs
NiArNTEsOSBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZCl3ZWJfY29tcHV0ZWRDb250
ZW50SW5zZXREaWRDaGFuZ2U7CiAtICh2b2lkKXdlYl9zZXRGaXhlZE92ZXJsYXlWaWV3OihVSVZp
ZXcgKilmaXhlZE92ZXJsYXlWaWV3OwogLSAodm9pZCl3ZWJfZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbjooV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSluYXZpZ2F0aW9uVHlwZTsKKy0gKHZv
aWQpd2ViX2NvdW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dL
RmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKKy0gKHZv
aWQpd2ViX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRp
b25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7CistICh2b2lkKXdlYl9o
aWRlRmluZFVJOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvV0tQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZp
ZXcubW0KaW5kZXggZTI0OTVlNGIwOGI4M2U1YWJiMTk3MDZjYjhhYmQzZGI3MzYwOGJjMC4uNGFi
N2E1OWI3ZjllN2MwNDM1MTM1MjI4NzI0YTc2NjFlYjA2M2Y5OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAgLTI4LDEzICsyOCwxNiBAQAogCiAjaWYgUExB
VEZPUk0oSU9TKQogCisjaW1wb3J0ICJBUElGaW5kQ2xpZW50LmgiCiAjaW1wb3J0ICJBUElVSUNs
aWVudC5oIgogI2ltcG9ydCAiQ29yZVBERlNQSS5oIgogI2ltcG9ydCAiU2Vzc2lvblN0YXRlLmgi
CiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tQREZQYWdlTnVtYmVySW5kaWNhdG9y
LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2Vha09iakNQdHIu
aCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiX1dLRmluZERlbGVnYXRlLmgi
CiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvVVRDb3JlVHlwZXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC01NCw2ICs1
Nyw3IEBAIHR5cGVkZWYgc3RydWN0IHsKICAgICBDR1JlY3QgZnJhbWU7CiAgICAgUmV0YWluUHRy
PFVJUERGUGFnZVZpZXc+IHZpZXc7CiAgICAgUmV0YWluUHRyPFVJUERGUGFnZT4gcGFnZTsKKyAg
ICB1bnNpZ25lZCBpbmRleDsKIH0gUERGUGFnZUluZm87CiAKIEBpbnRlcmZhY2UgV0tQREZWaWV3
ICgpCkBAIC03OSw2ICs4MywyMiBAQCB0eXBlZGVmIHN0cnVjdCB7CiAKICAgICBSZXRhaW5QdHI8
V0tBY3Rpb25TaGVldEFzc2lzdGFudD4gX2FjdGlvblNoZWV0QXNzaXN0YW50OwogICAgIFdlYktp
dDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24gX3Bvc2l0aW9uSW5mb3JtYXRpb247
CisKKyAgICB1bnNpZ25lZCBfY3VycmVudEZpbmRQYWdlSW5kZXg7CisgICAgdW5zaWduZWQgX2N1
cnJlbnRGaW5kTWF0Y2hJbmRleDsKKyAgICBSZXRhaW5QdHI8VUlQREZTZWxlY3Rpb24+IF9jdXJy
ZW50RmluZFNlbGVjdGlvbjsKKworICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2NhY2hlZEZpbmRT
dHJpbmc7CisgICAgVmVjdG9yPFJldGFpblB0cjxVSVBERlNlbGVjdGlvbj4+IF9jYWNoZWRGaW5k
TWF0Y2hlczsKKyAgICB1bnNpZ25lZCBfY2FjaGVkRmluZE1heGltdW1Db3VudDsKKyAgICBfV0tG
aW5kT3B0aW9ucyBfY2FjaGVkRmluZE9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzOworCisgICAgc3Rk
OjphdG9taWM8dW5zaWduZWQ+IF9uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRDsKKyAgICBS
ZXRhaW5QdHI8TlNTdHJpbmc+IF9uZXh0Q2FjaGVkRmluZFN0cmluZzsKKyAgICB1bnNpZ25lZCBf
bmV4dENhY2hlZEZpbmRNYXhpbXVtQ291bnQ7CisgICAgX1dLRmluZE9wdGlvbnMgX25leHRDYWNo
ZWRGaW5kT3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHM7CisKKyAgICBkaXNwYXRjaF9xdWV1ZV90IF9m
aW5kUXVldWU7CiB9CiAKIC0gKGluc3RhbmNldHlwZSl3ZWJfaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyYW1lIHdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKQEAgLTk4LDYgKzExOCw4IEBAIHR5
cGVkZWYgc3RydWN0IHsKICAgICBfYWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhZG9wdE5TKFtbV0tB
Y3Rpb25TaGVldEFzc2lzdGFudCBhbGxvY10gaW5pdFdpdGhWaWV3OnNlbGZdKTsKICAgICBbX2Fj
dGlvblNoZWV0QXNzaXN0YW50IHNldERlbGVnYXRlOnNlbGZdOwogCisgICAgX2ZpbmRRdWV1ZSA9
IGRpc3BhdGNoX3F1ZXVlX2NyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5XS1BERlZpZXdDb21wdXRl
TWF0Y2hlc1F1ZXVlIiwgRElTUEFUQ0hfUVVFVUVfU0VSSUFMKTsKKwogICAgIHJldHVybiBzZWxm
OwogfQogCkBAIC0xMDUsNiArMTI3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogewogICAgIFtzZWxm
IF9jbGVhclBhZ2VzXTsKICAgICBbX3BhZ2VOdW1iZXJJbmRpY2F0b3IgcmVtb3ZlRnJvbVN1cGVy
dmlld107CisgICAgZGlzcGF0Y2hfcmVsZWFzZShfZmluZFF1ZXVlKTsKICAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKQEAgLTEzNSw3ICsxNTgsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiAKICAgICBb
c2VsZiBfY2xlYXJQYWdlc107CiAKLSAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXI+IGRhdGFQ
cm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKChDRkRhdGFS
ZWYpZGF0YSkpOworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlclJlZj4gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJlZilkYXRh
KSk7CiAgICAgUmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+IGNnUERGRG9jdW1lbnQgPSBhZG9w
dENGKENHUERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSk7
CiAgICAgX3BkZkRvY3VtZW50ID0gYWRvcHROUyhbW1VJUERGRG9jdW1lbnQgYWxsb2NdIGluaXRX
aXRoQ0dQREZEb2N1bWVudDpjZ1BERkRvY3VtZW50LmdldCgpXSk7CiAKQEAgLTE2NSw2ICsxODgs
MjEgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICBbX3BhZ2VOdW1iZXJJbmRpY2F0b3Igc2hv
d107CiB9CiAKKy0gKHZvaWQpX2Vuc3VyZVZpZXdGb3JQYWdlOihQREZQYWdlSW5mbyYpcGFnZUlu
Zm8KK3sKKyAgICBpZiAocGFnZUluZm8udmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFn
ZUluZm8udmlldyA9IGFkb3B0TlMoW1tVSVBERlBhZ2VWaWV3IGFsbG9jXSBpbml0V2l0aFBhZ2U6
cGFnZUluZm8ucGFnZS5nZXQoKSB0aWxlZENvbnRlbnQ6WUVTXSk7CisgICAgW3BhZ2VJbmZvLnZp
ZXcgc2V0VXNlQmFja2luZ0xheWVyOllFU107CisgICAgW3BhZ2VJbmZvLnZpZXcgc2V0RGVsZWdh
dGU6c2VsZl07CisgICAgW1twYWdlSW5mby52aWV3IGFubm90YXRpb25Db250cm9sbGVyXSBzZXRE
ZWxlZ2F0ZTpzZWxmXTsKKyAgICBbc2VsZiBhZGRTdWJ2aWV3OnBhZ2VJbmZvLnZpZXcuZ2V0KCld
OworCisgICAgW3BhZ2VJbmZvLnZpZXcgc2V0RnJhbWU6cGFnZUluZm8uZnJhbWVdOworICAgIFtw
YWdlSW5mby52aWV3IGNvbnRlbnRMYXllcl0uY29udGVudHNTY2FsZSA9IHNlbGYud2luZG93LnNj
cmVlbi5zY2FsZTsKK30KKwogLSAodm9pZClfcmV2YWxpZGF0ZVZpZXdzCiB7CiAgICAgaWYgKF9p
c1N0YXJ0aW5nWm9vbSkKQEAgLTE3OCwzMSArMjE2LDE4IEBAIHR5cGVkZWYgc3RydWN0IHsKICAg
ICBDR1JlY3QgdGFyZ2V0UmVjdEZvckNlbnRlclBhZ2UgPSBDR1JlY3RJbnNldCh0YXJnZXRSZWN0
LCAwLCB0YXJnZXRSZWN0LnNpemUuaGVpZ2h0IC8gMiAtIHBkZlBhZ2VNYXJnaW4gKiAyKTsKIAog
ICAgIF9jZW50ZXJQYWdlTnVtYmVyID0gMDsKLSAgICB1bnNpZ25lZCBjdXJyZW50UGFnZSA9IDA7
CiAKICAgICBmb3IgKGF1dG8mIHBhZ2VJbmZvIDogX3BhZ2VzKSB7Ci0gICAgICAgICsrY3VycmVu
dFBhZ2U7Ci0KLSAgICAgICAgaWYgKCFDR1JlY3RJbnRlcnNlY3RzUmVjdChwYWdlSW5mby5mcmFt
ZSwgdGFyZ2V0UmVjdFdpdGhPdmVyZHJhdykpIHsKKyAgICAgICAgaWYgKCFDR1JlY3RJbnRlcnNl
Y3RzUmVjdChwYWdlSW5mby5mcmFtZSwgdGFyZ2V0UmVjdFdpdGhPdmVyZHJhdykgJiYgcGFnZUlu
Zm8uaW5kZXggIT0gX2N1cnJlbnRGaW5kUGFnZUluZGV4KSB7CiAgICAgICAgICAgICBbcGFnZUlu
Zm8udmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAgICAgICAgIHBhZ2VJbmZvLnZpZXcg
PSBudWxscHRyOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoIV9jZW50ZXJQYWdlTnVtYmVyICYmIENHUmVjdEludGVyc2VjdHNSZWN0KHBhZ2VJbmZvLmZy
YW1lLCB0YXJnZXRSZWN0Rm9yQ2VudGVyUGFnZSkpCi0gICAgICAgICAgICBfY2VudGVyUGFnZU51
bWJlciA9IGN1cnJlbnRQYWdlOwotCi0gICAgICAgIGlmIChwYWdlSW5mby52aWV3KQotICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICBfY2VudGVyUGFnZU51bWJlciA9IHBhZ2VJbmZv
LmluZGV4ICsgMTsKIAotICAgICAgICBwYWdlSW5mby52aWV3ID0gYWRvcHROUyhbW1VJUERGUGFn
ZVZpZXcgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlSW5mby5wYWdlLmdldCgpIHRpbGVkQ29udGVu
dDpZRVNdKTsKLSAgICAgICAgW3BhZ2VJbmZvLnZpZXcgc2V0VXNlQmFja2luZ0xheWVyOllFU107
Ci0gICAgICAgIFtwYWdlSW5mby52aWV3IHNldERlbGVnYXRlOnNlbGZdOwotICAgICAgICBbW3Bh
Z2VJbmZvLnZpZXcgYW5ub3RhdGlvbkNvbnRyb2xsZXJdIHNldERlbGVnYXRlOnNlbGZdOwotICAg
ICAgICBbc2VsZiBhZGRTdWJ2aWV3OnBhZ2VJbmZvLnZpZXcuZ2V0KCldOwotCi0gICAgICAgIFtw
YWdlSW5mby52aWV3IHNldEZyYW1lOnBhZ2VJbmZvLmZyYW1lXTsKLSAgICAgICAgW3BhZ2VJbmZv
LnZpZXcgY29udGVudExheWVyXS5jb250ZW50c1NjYWxlID0gc2VsZi53aW5kb3cuc2NyZWVuLnNj
YWxlOworICAgICAgICBbc2VsZiBfZW5zdXJlVmlld0ZvclBhZ2U6cGFnZUluZm9dOwogICAgIH0K
IAogICAgIFtzZWxmIF91cGRhdGVQYWdlTnVtYmVySW5kaWNhdG9yXTsKQEAgLTI5MSw4ICszMTYs
OCBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgICAgX3BhZ2VzLnJlc2VydmVDYXBhY2l0eShwYWdlQ291
bnQpOwogCiAgICAgQ0dSZWN0IHBhZ2VGcmFtZSA9IENHUmVjdE1ha2UoMCwgMCwgX21pbmltdW1T
aXplLndpZHRoLCBfbWluaW11bVNpemUuaGVpZ2h0KTsKLSAgICBmb3IgKE5TVUludGVnZXIgcGFn
ZU51bWJlciA9IDA7IHBhZ2VOdW1iZXIgPCBwYWdlQ291bnQ7ICsrcGFnZU51bWJlcikgewotICAg
ICAgICBVSVBERlBhZ2UgKnBhZ2UgPSBbX3BkZkRvY3VtZW50IHBhZ2VBdEluZGV4OnBhZ2VOdW1i
ZXJdOworICAgIGZvciAoTlNVSW50ZWdlciBwYWdlSW5kZXggPSAwOyBwYWdlSW5kZXggPCBwYWdl
Q291bnQ7ICsrcGFnZUluZGV4KSB7CisgICAgICAgIFVJUERGUGFnZSAqcGFnZSA9IFtfcGRmRG9j
dW1lbnQgcGFnZUF0SW5kZXg6cGFnZUluZGV4XTsKICAgICAgICAgaWYgKCFwYWdlKQogICAgICAg
ICAgICAgY29udGludWU7CiAKQEAgLTMwMyw2ICszMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiAg
ICAgICAgIFBERlBhZ2VJbmZvIHBhZ2VJbmZvOwogICAgICAgICBwYWdlSW5mby5wYWdlID0gcGFn
ZTsKICAgICAgICAgcGFnZUluZm8uZnJhbWUgPSBwYWdlRnJhbWVXaXRoTWFyZ2luQXBwbGllZDsK
KyAgICAgICAgcGFnZUluZm8uaW5kZXggPSBwYWdlSW5kZXg7CiAgICAgICAgIF9wYWdlcy5hcHBl
bmQocGFnZUluZm8pOwogICAgICAgICBwYWdlRnJhbWUub3JpZ2luLnkgKz0gcGFnZUZyYW1lLnNp
emUuaGVpZ2h0IC0gcGRmUGFnZU1hcmdpbjsKICAgICB9CkBAIC0zNjQsNiArMzkwLDE5NyBAQCB0
eXBlZGVmIHN0cnVjdCB7CiAgICAgcmV0dXJuIG5pbDsKIH0KIAorI3ByYWdtYSBtYXJrIEZpbmQt
aW4tUGFnZQorCitzdGF0aWMgTlNTdHJpbmdDb21wYXJlT3B0aW9ucyBzdHJpbmdDb21wYXJlT3B0
aW9ucyhfV0tGaW5kT3B0aW9ucyBvcHRpb25zKQoreworICAgIE5TU3RyaW5nQ29tcGFyZU9wdGlv
bnMgZmluZE9wdGlvbnMgPSAwOworICAgIGlmIChvcHRpb25zICYgX1dLRmluZE9wdGlvbnNDYXNl
SW5zZW5zaXRpdmUpCisgICAgICAgIGZpbmRPcHRpb25zIHw9IE5TQ2FzZUluc2Vuc2l0aXZlU2Vh
cmNoOworICAgIGlmIChvcHRpb25zICYgX1dLRmluZE9wdGlvbnNCYWNrd2FyZHMpCisgICAgICAg
IGZpbmRPcHRpb25zIHw9IE5TQmFja3dhcmRzU2VhcmNoOworICAgIHJldHVybiBmaW5kT3B0aW9u
czsKK30KKworLSAodm9pZClfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6KE5TU3RyaW5nICopc3Ry
aW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIp
bWF4Q291bnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgc3VjY2VzcykpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIV9wZGZEb2N1bWVudCkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihOTyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfV0tGaW5kT3B0
aW9ucyBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cyA9IG9wdGlvbnMgJiB+X1dLRmluZE9wdGlvbnNJ
cnJlbGV2YW50Rm9yQmF0Y2hSZXN1bHRzOworCisgICAgLy8gSWYgdGhpcyBzZWFyY2ggaXMgZXF1
aXZhbGVudCB0byB0aGUgY3VycmVudGx5IGNhY2hlZCBzZWFyY2gsIGJhaWwgYW5kIGNhbGwgdGhl
IGNvbXBsZXRpb24gaGFuZGxlciwgYmVjYXVzZSB0aGUgZXhpc3RpbmcgY2FjaGVkIHJlc3VsdHMg
YXJlIHZhbGlkLgorICAgIGlmICghX2NhY2hlZEZpbmRNYXRjaGVzLmlzRW1wdHkoKSAmJiBbX2Nh
Y2hlZEZpbmRTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnN0cmluZ10gJiYgX2NhY2hlZEZpbmRPcHRp
b25zQWZmZWN0aW5nUmVzdWx0cyA9PSBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cyAmJiBfY2FjaGVk
RmluZE1heGltdW1Db3VudCA9PSBtYXhDb3VudCkgeworICAgICAgICAvLyBBbHNvLCBjYW5jZWwg
YW55IHJ1bm5pbmcgc2VhcmNoLCBiZWNhdXNlIGl0IHdpbGwgZXZlbnR1YWxseSByZXBsYWNlIHRo
ZSBub3ctdmFsaWQgcmVzdWx0cy4KKyAgICAgICAgKytfbmV4dENvbXB1dGVNYXRjaGVzT3BlcmF0
aW9uSUQ7CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIC8vIElmIHRoaXMgc2VhcmNoIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGN1
cnJlbnRseSBydW5uaW5nIGFzeW5jaHJvbm91cyBzZWFyY2gsIGJhaWwgYXMgaWYgdGhpcyBzZWFy
Y2ggd2VyZSBjYW5jZWxsZWQ7IHRoZSBvcmlnaW5hbCBzZWFyY2gncyBjb21wbGV0aW9uIGhhbmRs
ZXIgd2lsbCBldmVudHVhbGx5IGZpcmUuCisgICAgaWYgKFtfbmV4dENhY2hlZEZpbmRTdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOnN0cmluZ10gJiYgX25leHRDYWNoZWRGaW5kT3B0aW9uc0FmZmVjdGlu
Z1Jlc3VsdHMgPT0gb3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHMgJiYgX25leHRDYWNoZWRGaW5kTWF4
aW11bUNvdW50ID09IG1heENvdW50KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5PKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMgZmlu
ZE9wdGlvbnMgPSBzdHJpbmdDb21wYXJlT3B0aW9ucyhvcHRpb25zQWZmZWN0aW5nUmVzdWx0cyk7
CisKKyAgICBWZWN0b3I8UERGUGFnZUluZm8+IHBhZ2VzID0gX3BhZ2VzOworCisgICAgdW5zaWdu
ZWQgY29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRCA9ICsrX25leHRDb21wdXRlTWF0Y2hlc09wZXJh
dGlvbklEOworICAgIF9uZXh0Q2FjaGVkRmluZFN0cmluZyA9IHN0cmluZzsKKyAgICBfbmV4dENh
Y2hlZEZpbmRPcHRpb25zQWZmZWN0aW5nUmVzdWx0cyA9IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRz
OworICAgIF9uZXh0Q2FjaGVkRmluZE1heGltdW1Db3VudCA9IG1heENvdW50OworCisgICAgUmV0
YWluUHRyPFdLUERGVmlldz4gcmV0YWluZWRTZWxmID0gc2VsZjsKKyAgICB0eXBlb2YoY29tcGxl
dGlvbkhhbmRsZXIpIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlv
bkhhbmRsZXIpOworCisgICAgZGlzcGF0Y2hfYXN5bmMoX2ZpbmRRdWV1ZSwgW3BhZ2VzLCBzdHJp
bmcsIGZpbmRPcHRpb25zLCBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cywgbWF4Q291bnQsIGNvbXB1
dGVNYXRjaGVzT3BlcmF0aW9uSUQsIHJldGFpbmVkU2VsZiwgY29tcGxldGlvbkhhbmRsZXJDb3B5
XSB7CisgICAgICAgIFZlY3RvcjxSZXRhaW5QdHI8VUlQREZTZWxlY3Rpb24+PiBtYXRjaGVzOwor
CisgICAgICAgIGZvciAodW5zaWduZWQgcGFnZUluZGV4ID0gMDsgcGFnZUluZGV4IDwgcGFnZXMu
c2l6ZSgpOyArK3BhZ2VJbmRleCkgeworICAgICAgICAgICAgVUlQREZTZWxlY3Rpb24gKm1hdGNo
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHdoaWxlICgobWF0Y2ggPSBbcGFnZXNbcGFnZUluZGV4
XS5wYWdlIGZpbmRTdHJpbmc6c3RyaW5nIGZyb21TZWxlY3Rpb246bWF0Y2ggb3B0aW9uczpmaW5k
T3B0aW9uc10pKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpOworICAg
ICAgICAgICAgICAgIGlmIChtYXRjaGVzLnNpemUoKSA+IG1heENvdW50KQorICAgICAgICAgICAg
ICAgICAgICBnb3RvIG1heENvdW50RXhjZWVkZWQ7CisKKyAgICAgICAgICAgICAgICAvLyBJZiB3
ZSd2ZSBlbnF1ZXVlZCBhbm90aGVyIHNlYXJjaCwgY2FuY2VsIHRoaXMgb25lLgorICAgICAgICAg
ICAgICAgIGlmIChyZXRhaW5lZFNlbGYtPl9uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRCAh
PSBjb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEKSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtjb21wbGV0aW9uSGFuZGxlckNv
cHldIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShOTyk7
CisgICAgICAgICAgICAgICAgICAgICAgICBCbG9ja19yZWxlYXNlKGNvbXBsZXRpb25IYW5kbGVy
Q29weSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAg
bWF4Q291bnRFeGNlZWRlZDoKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW2NvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQsIHN0cmluZywgb3B0aW9uc0Fm
ZmVjdGluZ1Jlc3VsdHMsIG1heENvdW50LCBtYXRjaGVzLCBjb21wbGV0aW9uSGFuZGxlckNvcHks
IHJldGFpbmVkU2VsZl0geworCisgICAgICAgICAgICAvLyBJZiBhbm90aGVyIHNlYXJjaCBoYXMg
YmVlbiBlbnF1ZXVlZCBpbiB0aGUgbWVhbnRpbWUsIGlnbm9yZSB0aGlzIHJlc3VsdC4KKyAgICAg
ICAgICAgIGlmIChyZXRhaW5lZFNlbGYtPl9uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRCAh
PSBjb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEKSB7CisgICAgICAgICAgICAgICAgQmxvY2tfcmVs
ZWFzZShjb21wbGV0aW9uSGFuZGxlckNvcHkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0YWluZWRTZWxmLT5fY2FjaGVkRmluZFN0cmlu
ZyA9IHN0cmluZzsKKyAgICAgICAgICAgIHJldGFpbmVkU2VsZi0+X2NhY2hlZEZpbmRPcHRpb25z
QWZmZWN0aW5nUmVzdWx0cyA9IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzOworICAgICAgICAgICAg
cmV0YWluZWRTZWxmLT5fY2FjaGVkRmluZE1heGltdW1Db3VudCA9IG1heENvdW50OworICAgICAg
ICAgICAgcmV0YWluZWRTZWxmLT5fY2FjaGVkRmluZE1hdGNoZXMgPSBtYXRjaGVzOworCisgICAg
ICAgICAgICByZXRhaW5lZFNlbGYtPl9uZXh0Q2FjaGVkRmluZFN0cmluZyA9IG5pbDsKKworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KFlFUyk7CisgICAgICAgICAgICBCbG9ja19y
ZWxlYXNlKGNvbXBsZXRpb25IYW5kbGVyQ29weSk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
CistICh2b2lkKXdlYl9jb3VudFN0cmluZ01hdGNoZXM6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlv
bnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQK
K3sKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IHBhZ2UgPSBfd2ViVmlldy0+X3Bh
Z2U7CisgICAgW3NlbGYgX2NvbXB1dGVNYXRjaGVzRm9yU3RyaW5nOnN0cmluZyBvcHRpb25zOm9w
dGlvbnMgbWF4Q291bnQ6bWF4Q291bnQgY29tcGxldGlvbkhhbmRsZXI6XihCT09MIHN1Y2Nlc3Mp
IHsKKyAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBw
YWdlLT5maW5kQ2xpZW50KCkuZGlkQ291bnRTdHJpbmdNYXRjaGVzKHBhZ2UuZ2V0KCksIHN0cmlu
ZywgX2NhY2hlZEZpbmRNYXRjaGVzLnNpemUoKSk7CisgICAgfV07Cit9CisKKy0gKHZvaWQpX2Rp
ZEZpbmRNYXRjaDooVUlQREZTZWxlY3Rpb24gKiltYXRjaAoreworICAgIGZvciAoYXV0byYgcGFn
ZUluZm8gOiBfcGFnZXMpIHsKKyAgICAgICAgaWYgKHBhZ2VJbmZvLnBhZ2UgPT0gbWF0Y2gucGFn
ZSkgeworICAgICAgICAgICAgW3NlbGYgX2Vuc3VyZVZpZXdGb3JQYWdlOnBhZ2VJbmZvXTsKKwor
ICAgICAgICAgICAgW3BhZ2VJbmZvLnZpZXcgaGlnaGxpZ2h0U2VhcmNoU2VsZWN0aW9uOm1hdGNo
IGFuaW1hdGVkOk5PXTsKKworICAgICAgICAgICAgX2N1cnJlbnRGaW5kUGFnZUluZGV4ID0gcGFn
ZUluZm8uaW5kZXg7CisgICAgICAgICAgICBfY3VycmVudEZpbmRTZWxlY3Rpb24gPSBtYXRjaDsK
KworICAgICAgICAgICAgQ0dSZWN0IHpvb21SZWN0ID0gW3BhZ2VJbmZvLnZpZXcgY29udmVydFJl
Y3RGcm9tUERGUGFnZVNwYWNlOm1hdGNoLmJvdW5kc107CisgICAgICAgICAgICBbc2VsZiB6b29t
OnBhZ2VJbmZvLnZpZXcuZ2V0KCkgdG86em9vbVJlY3QgYXRQb2ludDpDR1BvaW50WmVybyBraW5k
OmtVSVBERk9iamVjdEtpbmRUZXh0XTsKKworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorfQorCistICh2b2lkKXdlYl9maW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBv
cHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENv
dW50Cit7CisgICAgaWYgKF9jdXJyZW50RmluZFNlbGVjdGlvbikKKyAgICAgICAgW19wYWdlc1tf
Y3VycmVudEZpbmRQYWdlSW5kZXhdLnZpZXcgY2xlYXJTZWFyY2hIaWdobGlnaHRzXTsKKworICAg
IFJldGFpblB0cjxVSVBERlNlbGVjdGlvbj4gcHJldmlvdXNGaW5kU2VsZWN0aW9uOworICAgIHVu
c2lnbmVkIHByZXZpb3VzRmluZFBhZ2VJbmRleCA9IDA7CisKKyAgICBpZiAoW19jYWNoZWRGaW5k
U3RyaW5nIGhhc1ByZWZpeDpzdHJpbmddKSB7CisgICAgICAgIHByZXZpb3VzRmluZFNlbGVjdGlv
biA9IF9jdXJyZW50RmluZFNlbGVjdGlvbjsKKyAgICAgICAgcHJldmlvdXNGaW5kUGFnZUluZGV4
ID0gX2N1cnJlbnRGaW5kUGFnZUluZGV4OworCisgICAgICAgIGlmICghW19jYWNoZWRGaW5kU3Ry
aW5nIGlzRXF1YWxUb1N0cmluZzpzdHJpbmddKSB7CisgICAgICAgICAgICBOU1VJbnRlZ2VyIGxv
Y2F0aW9uID0gW19jdXJyZW50RmluZFNlbGVjdGlvbiBzdGFydEluZGV4XTsKKyAgICAgICAgICAg
IGlmIChsb2NhdGlvbikKKyAgICAgICAgICAgICAgICBwcmV2aW91c0ZpbmRTZWxlY3Rpb24gPSBh
ZG9wdE5TKFtbVUlQREZTZWxlY3Rpb24gYWxsb2NdIGluaXRXaXRoUGFnZTpbX2N1cnJlbnRGaW5k
U2VsZWN0aW9uIHBhZ2VdIGZyb21JbmRleDpsb2NhdGlvbiAtIDEgdG9JbmRleDpsb2NhdGlvbl0p
OworICAgICAgICB9CisgICAgfQorCisgICAgTlNTdHJpbmdDb21wYXJlT3B0aW9ucyBmaW5kT3B0
aW9ucyA9IHN0cmluZ0NvbXBhcmVPcHRpb25zKG9wdGlvbnMpOworICAgIGJvb2wgYmFja3dhcmRz
ID0gKG9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcyk7CisgICAgUmVmUHRyPFdlYktp
dDo6V2ViUGFnZVByb3h5PiBwYWdlID0gX3dlYlZpZXctPl9wYWdlOworCisgICAgW3NlbGYgX2Nv
bXB1dGVNYXRjaGVzRm9yU3RyaW5nOnN0cmluZyBvcHRpb25zOm9wdGlvbnMgbWF4Q291bnQ6bWF4
Q291bnQgY29tcGxldGlvbkhhbmRsZXI6XihCT09MIHN1Y2Nlc3MpIHsKKyAgICAgICAgaWYgKCFz
dWNjZXNzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHVuc2lnbmVkIHBhZ2VJbmRl
eCA9IHByZXZpb3VzRmluZFBhZ2VJbmRleDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IF9wYWdlcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgVUlQREZTZWxlY3Rpb24gKm1h
dGNoID0gW19wYWdlc1twYWdlSW5kZXhdLnBhZ2UgZmluZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVj
dGlvbjoocGFnZUluZGV4ID09IHByZXZpb3VzRmluZFBhZ2VJbmRleCA/IHByZXZpb3VzRmluZFNl
bGVjdGlvbi5nZXQoKSA6IG5pbCkgb3B0aW9uczpmaW5kT3B0aW9uc107CisKKyAgICAgICAgICAg
IGlmICghbWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXBhZ2VJbmRleCAmJiBiYWNrd2Fy
ZHMpCisgICAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleCA9IF9wYWdlcy5zaXplKCkgLSAxOwor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBhZ2VJbmRleCA9PSBfcGFnZXMuc2l6ZSgpIC0gMSAm
JiAhYmFja3dhcmRzKQorICAgICAgICAgICAgICAgICAgICBwYWdlSW5kZXggPSAwOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4ICs9IGJhY2t3YXJk
cyA/IC0xIDogMTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgW3NlbGYgX2RpZEZpbmRNYXRjaDptYXRjaF07CisKKyAgICAgICAgICAgIGlm
IChfY2FjaGVkRmluZE1hdGNoZXMuc2l6ZSgpIDw9IG1heENvdW50KSB7CisgICAgICAgICAgICAg
ICAgX2N1cnJlbnRGaW5kTWF0Y2hJbmRleCA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiBrbm93bk1hdGNoIDogX2NhY2hlZEZpbmRNYXRjaGVzKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChtYXRjaC5zdHJpbmdSYW5nZS5sb2NhdGlvbiA9PSBba25vd25NYXRjaCBzdHJp
bmdSYW5nZV0ubG9jYXRpb24gJiYgbWF0Y2guc3RyaW5nUmFuZ2UubGVuZ3RoID09IFtrbm93bk1h
dGNoIHN0cmluZ1JhbmdlXS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2Ut
PmZpbmRDbGllbnQoKS5kaWRGaW5kU3RyaW5nKHBhZ2UuZ2V0KCksIHN0cmluZywgX2NhY2hlZEZp
bmRNYXRjaGVzLnNpemUoKSwgX2N1cnJlbnRGaW5kTWF0Y2hJbmRleCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBfY3VycmVudEZpbmRNYXRjaEluZGV4Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHBhZ2UtPmZpbmRDbGllbnQoKS5kaWRGYWlsVG9GaW5kU3RyaW5nKHBhZ2UuZ2V0KCksIHN0
cmluZyk7CisgICAgfV07Cit9CisKKy0gKHZvaWQpd2ViX2hpZGVGaW5kVUkKK3sKKyAgICBpZiAo
X2N1cnJlbnRGaW5kU2VsZWN0aW9uKQorICAgICAgICBbX3BhZ2VzW19jdXJyZW50RmluZFBhZ2VJ
bmRleF0udmlldyBjbGVhclNlYXJjaEhpZ2hsaWdodHNdOworCisgICAgX2N1cnJlbnRGaW5kU2Vs
ZWN0aW9uID0gbnVsbHB0cjsKKyAgICBfY2FjaGVkRmluZFN0cmluZyA9IG51bGxwdHI7CisgICAg
X2NhY2hlZEZpbmRNYXRjaGVzLmNsZWFyKCk7Cit9CisKICNwcmFnbWEgbWFyayBVSVBERlBhZ2VW
aWV3RGVsZWdhdGUKIAogLSAodm9pZCl6b29tOihVSVBERlBhZ2VWaWV3ICopcGFnZVZpZXcgdG86
KENHUmVjdCl0YXJnZXRSZWN0IGF0UG9pbnQ6KENHUG9pbnQpb3JpZ2luIGtpbmQ6KFVJUERGT2Jq
ZWN0S2luZClraW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggN2IxNjAzNzkzODRlYWQwOGFiY2ExYTVkZDEzOTZlYmE3MThhMzE0
Yy4uNWI4MjJmMjNkNDhjYWRiOTE4MWNiOGIzNDU0NjExMjIyMGVhMDlkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjc2LDYg
KzY3Niw3IEBACiAJCTJEREY3MzE2MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZUNvbGxlY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRERGNzMxNDE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmVDb2xsZWN0aW9uLm1tICovOyB9OwogCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyog
U21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREU2OTQzQjE4QkQyQTY4MDA1
QzE1RTUgLyogU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTJERTY5NDNFMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJERTY5NDNDMThCRDJBNjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25D
b250cm9sbGVyTWVzc2FnZXMuaCAqLzsgfTsKKwkJMkRFQUM1Q0YxQUMzNjhCQjAwQTE5NUQ4IC8q
IF9XS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyREVBQzVDRTFBQzM2OEJCMDBBMTk1RDggLyogX1dLRmluZE9wdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyREY5NTkzQjE4
QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRGOTU5MzQxOEE0MjQxMjAwOTc4
NUExIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSAqLzsgfTsKIAkJMkRGOUVFRTUxQTc4
MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREY5RUVFMzFBNzgxRkI0MDBCNkNGQkUgLyogQVBJRnJh
bWVJbmZvLmNwcCAqLzsgfTsKIAkJMkRGOUVFRTYxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1l
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRG
OUVFRTQxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5oICovOyB9OwpAQCAtMjgzMyw2
ICsyODM0LDcgQEAKIAkJMkRERjczMTQxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlQ29sbGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRFNjk0M0IxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlm
aWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERTY5NDNDMThCRDJBNjgw
MDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU21hcnRNYWduaWZpY2F0aW9uQ29udHJvbGxlck1l
c3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJERUFDNUNFMUFDMzY4QkIw
MEExOTVEOCAvKiBfV0tGaW5kT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tGaW5kT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5
NTkzNDE4QTQyNDEyMDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tOyBwYXRoID0gaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRGOUVFRTMxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1l
SW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElGcmFtZUlu
Zm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5RUVFNDFBNzgxRkI0MDBC
NkNGQkUgLyogQVBJRnJhbWVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSUZyYW1lSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTMyMyw2ICs1
MzI1LDcgQEAKIAkJCQkxQUQwMUJDNzE5MDVEMzdFMDBDOUM0NUYgLyogX1dLRXJyb3JSZWNvdmVy
eUF0dGVtcHRpbmcuaCAqLywKIAkJCQkxQUQwMUJDNjE5MDVEMzdFMDBDOUM0NUYgLyogX1dLRXJy
b3JSZWNvdmVyeUF0dGVtcHRpbmcubW0gKi8sCiAJCQkJMDA1RDE1OEUxOEU0QzRFQjAwNzM0NjE5
IC8qIF9XS0ZpbmREZWxlZ2F0ZS5oICovLAorCQkJCTJERUFDNUNFMUFDMzY4QkIwMEExOTVEOCAv
KiBfV0tGaW5kT3B0aW9ucy5oICovLAogCQkJCTM3QTY0RTU0MThGMzhFM0MwMEVCMzBGMSAvKiBf
V0tGb3JtRGVsZWdhdGUuaCAqLywKIAkJCQkzN0E2NEU1NjE4RjM4RjQ2MDBFQjMwRjEgLyogX1dL
Rm9ybUlucHV0U2Vzc2lvbi5oICovLAogCQkJCTFBNDNFODI4MTg4RjNDREMwMDlFNEQzMCAvKiBf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLywKQEAgLTc3NTQsNiArNzc1Nyw3IEBACiAJ
CQkJMUE2RkJEMjgxMUU2OUJDMjAwREIxMzcxIC8qIE5ldHNjYXBlUGx1Z2luLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTRBOUM1NjEyQjgxNkNGMDA4RkU5ODQgLyogTmV0c2NhcGVQbHVnaW5Nb2R1
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTU4ODkyMTFFRTcwNDAwMDYxQjg4MiAvKiBOZXRz
Y2FwZVBsdWdpblN0cmVhbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMkRFQUM1Q0YxQUMzNjhCQjAw
QTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTc5OEM3QTE2
RTY4MTg4MDAyNDAxMzkgLyogTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ0MzZFQ0MxQTBEMDQwQjAwRUFEMjA0IC8qIE5ldHdvcmtDYWNoZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQ4OUQyOEExQTBBMkRCODAwNzhDMDZBIC8qIE5ldHdvcmtDYWNoZUNvZGVyLmgg
aW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249611</attachid>
            <date>2015-03-27 15:04:34 -0700</date>
            <delta_ts>2015-03-27 15:04:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143065-20150327150354.patch</filename>
            <type>text/plain</type>
            <size>29660</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWM4NmQwNWY2NGUyMzE3
ODVmZGMyMWZkOTNjNDY2NGI2MmM0MGUyZi4uYzAwYWNlZTE0Y2I3MzMwNGU5ZTI2OWYwZmRkYWMz
MzQzYTJjZTM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE1LTAzLTI3ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBp
T1MgV2ViS2l0MiBQREYgRmluZC1pbi1QYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE2Nzkz
MzcwPgorCisgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCisKKyAgICAgICAgKiBQ
bGF0Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEkuaDoKKyAgICAgICAgQWRkIHNvbWUgU1BJLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfY291bnRTdHJpbmdNYXRjaGVzOm9wdGlvbnM6bWF4Q291bnQ6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyBfZmluZFN0cmluZzpvcHRpb25zOm1heENvdW50Ol0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2hpZGVGaW5kVUldKToKKyAgICAgICAgSWYgd2UgaGF2ZSBhIGN1c3RvbSBj
b250ZW50IHZpZXcsIGZvcndhcmQgZmluZC1pbi1wYWdlIG1ldGhvZHMgdG8gaXQuCisgICAgICAg
IAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRmluZE9wdGlvbnMuaDoKKyAgICAgICAgTW92
ZSBfV0tGaW5kT3B0aW9ucyBpbnRvIGl0cyBvd24gZmlsZS4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XS1dlYlZpZXdDb250ZW50UHJvdmlkZXIuaDoKKyAgICAgICAgQWRkIGZpbmQtcmVs
YXRlZCBtZXRob2RzIHRvIHRoZSBXS1dlYlZpZXdDb250ZW50UHJvdmlkZXIgcHJvdG9jb2wuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAgKC1bV0tQREZW
aWV3IHdlYl9pbml0V2l0aEZyYW1lOndlYlZpZXc6XSk6CisgICAgICAgICgtW1dLUERGVmlldyBk
ZWFsbG9jXSk6CisgICAgICAgIE1haW50YWluIGEgZGlzcGF0Y2ggcXVldWUgZm9yIHNlYXJjaGlu
ZyB0aGUgUERGLgorCisgICAgICAgICgtW1dLUERGVmlldyB3ZWJfc2V0Q29udGVudFByb3ZpZGVy
RGF0YTpzdWdnZXN0ZWRGaWxlbmFtZTpdKToKKyAgICAgICAgRml4IGEgdHlwZS4KKworICAgICAg
ICAoLVtXS1BERlZpZXcgX2Vuc3VyZVZpZXdGb3JQYWdlOl0pOgorICAgICAgICBTcGxpdCB0aGUg
Y29kZSB0byBjcmVhdGUvcGFyZW50IGEgcGFnZSB2aWV3IG91dCBmcm9tIF9yZXZhbGlkYXRlVmll
d3MsCisgICAgICAgIHNvIHRoYXQgdGhlIGZpbmQgY29kZSBjYW4gY3JlYXRlL3BhcmVudCB0aGUg
dGFyZ2V0dGVkIFVJUERGUGFnZVZpZXcKKyAgICAgICAgaW4gb3JkZXIgdG8gaW5zdGFsbCB0aGUg
ZmluZCBoaWdobGlnaHQgaW4gaXQsIGJ1dCBiZWZvcmUgaXQgaXMgc2Nyb2xsZWQgaW50byB2aWV3
LgorCisgICAgICAgICgtW1dLUERGVmlldyBfcmV2YWxpZGF0ZVZpZXdzXSk6CisgICAgICAgIFVz
ZSB0aGUgc3RvcmVkIHBhZ2UgaW5kZXggaW5zdGVhZCBvZiBjb3VudGluZyBhZ2Fpbi4KKyAgICAg
ICAgRG9uJ3QgdW5wYXJlbnQgcGFnZSB2aWV3cyB0aGF0IGhhdmUgZmluZC1pbi1wYWdlIGhpZ2hs
aWdodHMgaW4gdGhlbSwgYmVjYXVzZQorICAgICAgICB3ZSB3b24ndCBrbm93IGVub3VnaCB0byBy
ZWNyZWF0ZSB0aGVtIGxhdGVyLgorCisgICAgICAgICgtW1dLUERGVmlldyBfY29tcHV0ZVBhZ2VB
bmREb2N1bWVudEZyYW1lc10pOgorICAgICAgICBQdXQgdGhlIHBhZ2UgaW5kZXggaW4gUERGUGFn
ZUluZm8sIGZvciByZWZlcmVuY2UgZWxzZXdoZXJlLgorCisgICAgICAgICgtW1dLUERGVmlldyBf
c3RyaW5nQ29tcGFyZU9wdGlvbnNGcm9tV0tGaW5kT3B0aW9uczpdKToKKyAgICAgICAgKC1bV0tQ
REZWaWV3IF9jb21wdXRlTWF0Y2hlc0ZvclN0cmluZzpvcHRpb25zOm1heENvdW50OmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICBBc3luY2hyb25vdXNseSAoYW5kIG9uIG91ciBzZXJpYWwg
cXVldWUpIHNlYXJjaCB0aGUgUERGIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLgorICAgICAgICBXZSds
bCBjYWNoZSB0aGUgbW9zdCByZWNlbnQgcmVzdWx0cyB0byBhdm9pZCBzZWFyY2hpbmcgbW9yZSB0
aGFuIG9uY2UsCisgICAgICAgIGNhbmNlbCBleGlzdGluZyBzZWFyY2hlcyB3aGVuIGFub3RoZXIg
YmVnaW5zIChzaW5jZSBpdCdzIGEgc2VyaWFsIHF1ZXVlLAorICAgICAgICB0aGlzIGVuc3VyZXMg
d2UnbGwgb25seSBoYXZlIG9uZSBzZWFyY2ggYWN0aXZlIGF0IGEgdGltZSkuCisKKyAgICAgICAg
KC1bV0tQREZWaWV3IHdlYl9jb3VudFN0cmluZ01hdGNoZXM6b3B0aW9uczptYXhDb3VudDpdKToK
KyAgICAgICAgQ291bnQgdGhlIG51bWJlciBvZiBtYXRjaGVzIGZvciB0aGUgZ2l2ZW4gc3RyaW5n
LCBhbmQgaW5mb3JtIHRoZSBGaW5kQ2xpZW50CisgICAgICAgIG9mIHRoZSByZXN1bHQuCisKKyAg
ICAgICAgKC1bV0tQREZWaWV3IF9kaWRGaW5kTWF0Y2g6XSk6CisgICAgICAgIFdoZW4gd2UgZmlu
ZCBhIG1hdGNoLCBjcmVhdGUgYSB2aWV3IGZvciBpdCwgaGlnaGxpZ2h0IHRoZSBtYXRjaCwgYW5k
CisgICAgICAgIHpvb20gc28gdGhhdCBpdCdzIGluLXZpZXcuCisKKyAgICAgICAgKC1bV0tQREZW
aWV3IHdlYl9maW5kU3RyaW5nOm9wdGlvbnM6bWF4Q291bnQ6XSk6CisgICAgICAgIEluY3JlbWVu
dGFsbHkgc2VhcmNoIHRoZSBkb2N1bWVudCBmb3IgdGhlIGdpdmVuIHN0cmluZy4gV2UgZG8gYW4g
aW5jcmVtZW50YWwKKyAgICAgICAgc2VhcmNoIGV2ZW4gaWYgd2UgaGF2ZSBhbGwgb2YgdGhlIHJl
c3VsdHMgc28gdGhhdCB3ZSBjYW4gYW5jaG9yIHRoZSBzZWFyY2gKKyAgICAgICAgaW4gdGhlIHJp
Z2h0IHBsYWNlIGlmIHRoZSBuZXcgc3RyaW5nIGlzIGEgcHJlZml4IG9mIHRoZSBvbGQgc3RyaW5n
LCBldGMuCisgICAgICAgIFdyYXAgYXJvdW5kIGFwcHJvcHJpYXRlbHkgd2hlbiBzZWFyY2hpbmcg
cGFzdCB0aGUgYmVnaW5uaW5nIG9yIGVuZCBvZiB0aGUKKyAgICAgICAgZG9jdW1lbnQuIElmIHdl
IGhhdmUgYWxsIG9mIHRoZSByZXN1bHRzICh0aGVyZSB3ZXJlIGxlc3MgdGhhbiBtYXhDb3VudCBy
ZXN1bHRzKSwKKyAgICAgICAgbG9vayB0aHJvdWdoIHRoZSBjYWNoZWQgbWF0Y2hlcyBmb3IgdGhl
IGluY3JlbWVudGFsbHktZm91bmQgcmVzdWx0IGFuZAorICAgICAgICByZXBvcnQgaXRzIGluZGV4
IHRvIHRoZSBjbGllbnQuCisKKyAgICAgICAgKC1bV0tQREZWaWV3IHdlYl9oaWRlRmluZFVJXSk6
CisgICAgICAgIERpc21pc3MgdGhlIHNlbGVjdGlvbiBhbmQgY2xlYXIgc29tZSBzdGF0ZSBzbyB3
ZSBzdGFydCB0aGUgbmV4dCBzZWFyY2ggYWZyZXNoLgorCisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE1LTAzLTI3ICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl1bTmV0d29ya0NhY2hlXSBXZSBvbmx5IGNhY2hl
IHJlc3BvbnNlcyB3aXRoIHN0YXR1cyBjb2RlcyB0aGF0IGFyZSBjYWNoZWFibGUgYnkgZGVmYXVs
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vc3BpL2lvcy9Db3JlUERGU1BJ
LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEkuaAppbmRleCA2
Mzk1ODEzNTMxNjZhZjczYzdkODY1OTAyZDM3OTMwZTcxOGI0Y2FjLi4xY2I5OWRkMWVkZDYzNTgw
ZTkxYmViMmFhZTFhMTY3NmQ5MDc3ZTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybS9zcGkvaW9zL0NvcmVQREZTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9z
cGkvaW9zL0NvcmVQREZTUEkuaApAQCAtMzMsMTQgKzMzLDE4IEBACiAjaW1wb3J0IDxDb3JlUERG
L1VJUERGTGlua0Fubm90YXRpb24uaD4KICNpbXBvcnQgPENvcmVQREYvVUlQREZQYWdlLmg+CiAj
aW1wb3J0IDxDb3JlUERGL1VJUERGUGFnZVZpZXcuaD4KKyNpbXBvcnQgPENvcmVQREYvVUlQREZT
ZWxlY3Rpb24uaD4KIAogI2Vsc2UKIAorQGNsYXNzIFVJUERGU2VsZWN0aW9uOworCiBAaW50ZXJm
YWNlIFVJUERGUGFnZSA6IE5TT2JqZWN0CiBAZW5kCiAKIEBpbnRlcmZhY2UgVUlQREZQYWdlIChE
ZXRhaWxzKQogLSAoQ0dSZWN0KWNyb3BCb3hBY2NvdW50Rm9yUm90YXRpb247CistIChVSVBERlNl
bGVjdGlvbiAqKWZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGZyb21TZWxlY3Rpb246KFVJ
UERGU2VsZWN0aW9uICopc2VsZWN0aW9uIG9wdGlvbnM6KE5TU3RyaW5nQ29tcGFyZU9wdGlvbnMp
b3B0aW9uczsKIEBlbmQKIAogQGludGVyZmFjZSBVSVBERkRvY3VtZW50IDogTlNPYmplY3QKQEAg
LTU1LDYgKzU5LDcgQEAKIAogdHlwZWRlZiBlbnVtIHsKICAgICBrVUlQREZPYmplY3RLaW5kR3Jh
cGhpYyA9IDEsCisgICAga1VJUERGT2JqZWN0S2luZFRleHQgPSAyCiB9IFVJUERGT2JqZWN0S2lu
ZDsKIAogQGNsYXNzIFVJUERGUGFnZVZpZXc7CkBAIC03Niw2ICs4MSw4IEBAIHR5cGVkZWYgZW51
bSB7CiBAaW50ZXJmYWNlIFVJUERGUGFnZVZpZXcgKERldGFpbHMpCiAtIChpZClpbml0V2l0aFBh
Z2U6KFVJUERGUGFnZSAqKSBwYWdlIHRpbGVkQ29udGVudDooQk9PTCl0aWxlZDsKIC0gKENHUmVj
dCljb252ZXJ0UmVjdEZyb21QREZQYWdlU3BhY2U6KENHUmVjdClwOworLSAodm9pZCloaWdobGln
aHRTZWFyY2hTZWxlY3Rpb246KFVJUERGU2VsZWN0aW9uICopc2VsZWN0aW9uIGFuaW1hdGVkOihC
T09MKWFuaW1hdGVkOworLSAodm9pZCljbGVhclNlYXJjaEhpZ2hsaWdodHM7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgYXNzaWduKSBCT09MIHVzZUJhY2tpbmdMYXllcjsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCBhc3NpZ24pIGlkPE5TT2JqZWN0LCBVSVBERlBhZ2VWaWV3RGVsZWdhdGU+IGRlbGVn
YXRlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDQUxheWVyICpjb250ZW50TGF5
ZXI7CkBAIC0xMjAsNCArMTI3LDE1IEBAIHR5cGVkZWYgZW51bSB7CiAtICh2b2lkKWFubm90YXRp
b246KFVJUERGQW5ub3RhdGlvbiAqKWFubm90YXRpb24gaXNCZWluZ1ByZXNzZWRBdFBvaW50OihD
R1BvaW50KSBwb2ludCBjb250cm9sbGVyOihVSVBERkFubm90YXRpb25Db250cm9sbGVyICopY29u
dHJvbGxlcjsKIEBlbmQKIAorQGludGVyZmFjZSBVSVBERlNlbGVjdGlvbiA6IE5TT2JqZWN0CitA
ZW5kCisKK0BpbnRlcmZhY2UgVUlQREZTZWxlY3Rpb24gKERldGFpbHMpCistIChpZClpbml0V2l0
aFBhZ2U6KFVJUERGUGFnZSAqKXBhZ2UgZnJvbUluZGV4OihOU1VJbnRlZ2VyKXN0YXJ0SW5kZXgg
dG9JbmRleDooTlNVSW50ZWdlcillbmRJbmRleDsKKy0gKENHUmVjdClib3VuZHM7CistIChVSVBE
RlBhZ2UgKilwYWdlOworLSAoTlNVSW50ZWdlcilzdGFydEluZGV4OworQHByb3BlcnR5IChub25h
dG9taWMsIGFzc2lnbikgQ0ZSYW5nZSBzdHJpbmdSYW5nZTsKK0BlbmQKKwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDY4
ZjgxOTdkMDIzOGMxNjUwYzVkZDg5MmFiMmQxMWY2MDQ5Mzk0MjkuLjM2NGYyMjA3Yjg3MTdlN2Jk
YzBjMjA0Mzk2MTMzYzYzMjcwNDQwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yMDk0LDE2ICsyMDk0LDM0IEBAIHN0YXRpYyBp
bmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRPcHRpb25zIHdr
RmluZE9wdGlvbnMpCiAKIC0gKHZvaWQpX2NvdW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilz
dHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdl
ciltYXhDb3VudAogeworI2lmIFBMQVRGT1JNKElPUykKKyAgICBpZiAoX2N1c3RvbUNvbnRlbnRW
aWV3KSB7CisgICAgICAgIFtfY3VzdG9tQ29udGVudFZpZXcgd2ViX2NvdW50U3RyaW5nTWF0Y2hl
czpzdHJpbmcgb3B0aW9uczpvcHRpb25zIG1heENvdW50Om1heENvdW50XTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyNlbmRpZgogICAgIF9wYWdlLT5jb3VudFN0cmluZ01hdGNoZXMoc3RyaW5n
LCB0b0ZpbmRPcHRpb25zKG9wdGlvbnMpLCBtYXhDb3VudCk7CiB9CiAKIC0gKHZvaWQpX2ZpbmRT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9wdGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMg
bWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAg
aWYgKF9jdXN0b21Db250ZW50VmlldykgeworICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdl
Yl9maW5kU3RyaW5nOnN0cmluZyBvcHRpb25zOm9wdGlvbnMgbWF4Q291bnQ6bWF4Q291bnRdOwor
ICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiAgICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3Ry
aW5nLCB0b0ZpbmRPcHRpb25zKG9wdGlvbnMpLCBtYXhDb3VudCk7CiB9CiAKIC0gKHZvaWQpX2hp
ZGVGaW5kVUkKIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgaWYgKF9jdXN0b21Db250ZW50Vmll
dykgeworICAgICAgICBbX2N1c3RvbUNvbnRlbnRWaWV3IHdlYl9oaWRlRmluZFVJXTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAgIF9wYWdlLT5oaWRlRmluZFVJKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKaW5kZXggMWUyZjQ0NTZlZGU3ZTE4MDU3ZTE1OWIzMDJkYzAxMTI0OGYwNjczYy4u
MzAwZDFlZWVkZjY2ODVjNTc5MzZlOGUxZjM4MzEyMTM1M2ZkYjNlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKKyNpbXBvcnQgPFdlYktpdC9f
V0tGaW5kT3B0aW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1JlbmRlcmluZ1Byb2dyZXNzRXZl
bnRzLmg+CiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1BhZ2luYXRpb25Nb2RlKSB7
CkBAIC0zNywxOCArMzgsNiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tQYWdpbmF0
aW9uTW9kZSkgewogICAgIF9XS1BhZ2luYXRpb25Nb2RlQm90dG9tVG9Ub3AsCiB9IFdLX0VOVU1f
QVZBSUxBQkxFKDEwXzEwLCA4XzApOwogCi10eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwg
X1dLRmluZE9wdGlvbnMpIHsKLSAgICBfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSA9IDEg
PDwgMCwKLSAgICBfV0tGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA9IDEgPDwgMSwKLSAgICBfV0tG
aW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0ID0gMSA8PCAyLAotICAgIF9X
S0ZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAzLAotICAgIF9XS0ZpbmRPcHRpb25zV3JhcEFy
b3VuZCA9IDEgPDwgNCwKLSAgICBfV0tGaW5kT3B0aW9uc1Nob3dPdmVybGF5ID0gMSA8PCA1LAot
ICAgIF9XS0ZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgPSAxIDw8IDYsCi0gICAgX1dLRmlu
ZE9wdGlvbnNTaG93SGlnaGxpZ2h0ID0gMSA8PCA3LAotICAgIF9XS0ZpbmRPcHRpb25zRGV0ZXJt
aW5lTWF0Y2hJbmRleCA9IDEgPDwgOCwKLX0gV0tfRU5VTV9BVkFJTEFCTEUoMTBfMTAsIDhfMCk7
Ci0KIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKIEBjbGFzcyBfV0tSZW1vdGVPYmpl
Y3RSZWdpc3RyeTsKIEBjbGFzcyBfV0tTZXNzaW9uU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZpbmRPcHRpb25zLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0ZpbmRPcHRpb25zLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI1
YzVkOTYzZGQxMTc0YjJkZTcxOWExNTY1NWIyM2Y4OTdlZjJhMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRmluZE9wdGlvbnMuaApAQCAt
MCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5o
PgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwordHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS0ZpbmRPcHRpb25zKSB7CisgICAgX1dLRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUgPSAx
IDw8IDAsCisgICAgX1dLRmluZE9wdGlvbnNBdFdvcmRTdGFydHMgPSAxIDw8IDEsCisgICAgX1dL
RmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCA9IDEgPDwgMiwKKyAgICBf
V0tGaW5kT3B0aW9uc0JhY2t3YXJkcyA9IDEgPDwgMywKKyAgICBfV0tGaW5kT3B0aW9uc1dyYXBB
cm91bmQgPSAxIDw8IDQsCisgICAgX1dLRmluZE9wdGlvbnNTaG93T3ZlcmxheSA9IDEgPDwgNSwK
KyAgICBfV0tGaW5kT3B0aW9uc1Nob3dGaW5kSW5kaWNhdG9yID0gMSA8PCA2LAorICAgIF9XS0Zp
bmRPcHRpb25zU2hvd0hpZ2hsaWdodCA9IDEgPDwgNywKKyAgICBfV0tGaW5kT3B0aW9uc0RldGVy
bWluZU1hdGNoSW5kZXggPSAxIDw8IDgsCisKKyAgICBfV0tGaW5kT3B0aW9uc0lycmVsZXZhbnRG
b3JJbmNyZW1lbnRhbFJlc3VsdHMgPSBfV0tGaW5kT3B0aW9uc1Nob3dPdmVybGF5IHwgX1dLRmlu
ZE9wdGlvbnNTaG93RmluZEluZGljYXRvciB8IF9XS0ZpbmRPcHRpb25zU2hvd0hpZ2hsaWdodCB8
IF9XS0ZpbmRPcHRpb25zRGV0ZXJtaW5lTWF0Y2hJbmRleCwKKyAgICBfV0tGaW5kT3B0aW9uc0ly
cmVsZXZhbnRGb3JCYXRjaFJlc3VsdHMgPSBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcyB8IF9XS0Zp
bmRPcHRpb25zV3JhcEFyb3VuZCB8IF9XS0ZpbmRPcHRpb25zSXJyZWxldmFudEZvckluY3JlbWVu
dGFsUmVzdWx0cworCit9IFdLX0VOVU1fQVZBSUxBQkxFKDEwXzEwLCA4XzApOworCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdDb250
ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XS1dlYlZpZXdD
b250ZW50UHJvdmlkZXIuaAppbmRleCBkZWJlYTZiYWEwYWQ1ZWI3YjY3NzUzMjMzMTc4ZmM3ZGY0
YTlhMDllLi5jMWEwNTAxZWZjNmVlOGQyZjNhMDI1YzZjMTFiNzAwYmUwNDM3MDc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV0tXZWJWaWV3Q29udGVudFByb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dLV2ViVmlld0NvbnRl
bnRQcm92aWRlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1w
b3J0IDxXZWJLaXQvV0tQYWdlTG9hZFR5cGVzLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRmluZE9w
dGlvbnMuaD4KIAogQGNsYXNzIE5TRGF0YTsKIEBjbGFzcyBVSVNjcm9sbFZpZXc7CkBAIC01MCw2
ICs1MSw5IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKXdlYl9jb21wdXRlZENvbnRl
bnRJbnNldERpZENoYW5nZTsKIC0gKHZvaWQpd2ViX3NldEZpeGVkT3ZlcmxheVZpZXc6KFVJVmll
dyAqKWZpeGVkT3ZlcmxheVZpZXc7CiAtICh2b2lkKXdlYl9kaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uOihXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKW5hdmlnYXRpb25UeXBlOworLSAodm9p
ZCl3ZWJfY291bnRTdHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tG
aW5kT3B0aW9ucylvcHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50OworLSAodm9p
ZCl3ZWJfZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9uczooX1dLRmluZE9wdGlv
bnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudDsKKy0gKHZvaWQpd2ViX2hp
ZGVGaW5kVUk7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS1BERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmll
dy5tbQppbmRleCBlMjQ5NWU0YjA4YjgzZTVhYmIxOTcwNmNiOGFiZDNkYjczNjA4YmMwLi4wNDM0
OTJjMTVlNDBhZTY1OTY1MTUyMWQ3ZTRjMzg4YjZhMzYzNWZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpAQCAtMjgsMTMgKzI4LDE2IEBACiAKICNpZiBQTEFU
Rk9STShJT1MpCiAKKyNpbXBvcnQgIkFQSUZpbmRDbGllbnQuaCIKICNpbXBvcnQgIkFQSVVJQ2xp
ZW50LmgiCiAjaW1wb3J0ICJDb3JlUERGU1BJLmgiCiAjaW1wb3J0ICJTZXNzaW9uU3RhdGUuaCIK
ICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3Iu
aCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWFrT2JqQ1B0ci5o
IgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIK
ICNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9VVENvcmVUeXBlcy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTU0LDYgKzU3
LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIENHUmVjdCBmcmFtZTsKICAgICBSZXRhaW5QdHI8
VUlQREZQYWdlVmlldz4gdmlldzsKICAgICBSZXRhaW5QdHI8VUlQREZQYWdlPiBwYWdlOworICAg
IHVuc2lnbmVkIGluZGV4OwogfSBQREZQYWdlSW5mbzsKIAogQGludGVyZmFjZSBXS1BERlZpZXcg
KCkKQEAgLTc5LDYgKzgzLDIyIEBAIHR5cGVkZWYgc3RydWN0IHsKIAogICAgIFJldGFpblB0cjxX
S0FjdGlvblNoZWV0QXNzaXN0YW50PiBfYWN0aW9uU2hlZXRBc3Npc3RhbnQ7CiAgICAgV2ViS2l0
OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiBfcG9zaXRpb25JbmZvcm1hdGlvbjsK
KworICAgIHVuc2lnbmVkIF9jdXJyZW50RmluZFBhZ2VJbmRleDsKKyAgICB1bnNpZ25lZCBfY3Vy
cmVudEZpbmRNYXRjaEluZGV4OworICAgIFJldGFpblB0cjxVSVBERlNlbGVjdGlvbj4gX2N1cnJl
bnRGaW5kU2VsZWN0aW9uOworCisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfY2FjaGVkRmluZFN0
cmluZzsKKyAgICBWZWN0b3I8UmV0YWluUHRyPFVJUERGU2VsZWN0aW9uPj4gX2NhY2hlZEZpbmRN
YXRjaGVzOworICAgIHVuc2lnbmVkIF9jYWNoZWRGaW5kTWF4aW11bUNvdW50OworICAgIF9XS0Zp
bmRPcHRpb25zIF9jYWNoZWRGaW5kT3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHM7CisKKyAgICBzdGQ6
OmF0b21pYzx1bnNpZ25lZD4gX25leHRDb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEOworICAgIFJl
dGFpblB0cjxOU1N0cmluZz4gX25leHRDYWNoZWRGaW5kU3RyaW5nOworICAgIHVuc2lnbmVkIF9u
ZXh0Q2FjaGVkRmluZE1heGltdW1Db3VudDsKKyAgICBfV0tGaW5kT3B0aW9ucyBfbmV4dENhY2hl
ZEZpbmRPcHRpb25zQWZmZWN0aW5nUmVzdWx0czsKKworICAgIGRpc3BhdGNoX3F1ZXVlX3QgX2Zp
bmRRdWV1ZTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKXdlYl9pbml0V2l0aEZyYW1lOihDR1JlY3Qp
ZnJhbWUgd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwpAQCAtOTgsNiArMTE4LDggQEAgdHlw
ZWRlZiBzdHJ1Y3QgewogICAgIF9hY3Rpb25TaGVldEFzc2lzdGFudCA9IGFkb3B0TlMoW1tXS0Fj
dGlvblNoZWV0QXNzaXN0YW50IGFsbG9jXSBpbml0V2l0aFZpZXc6c2VsZl0pOwogICAgIFtfYWN0
aW9uU2hlZXRBc3Npc3RhbnQgc2V0RGVsZWdhdGU6c2VsZl07CiAKKyAgICBfZmluZFF1ZXVlID0g
ZGlzcGF0Y2hfcXVldWVfY3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldLUERGVmlld0NvbXB1dGVN
YXRjaGVzUXVldWUiLCBESVNQQVRDSF9RVUVVRV9TRVJJQUwpOworCiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKQEAgLTEwNSw2ICsxMjcsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiB7CiAgICAgW3NlbGYg
X2NsZWFyUGFnZXNdOwogICAgIFtfcGFnZU51bWJlckluZGljYXRvciByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKKyAgICBkaXNwYXRjaF9yZWxlYXNlKF9maW5kUXVldWUpOwogICAgIFtzdXBlciBkZWFs
bG9jXTsKIH0KIApAQCAtMTM1LDcgKzE1OCw3IEBAIHR5cGVkZWYgc3RydWN0IHsKIAogICAgIFtz
ZWxmIF9jbGVhclBhZ2VzXTsKIAotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlcj4gZGF0YVBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoKENGRGF0YVJl
ZilkYXRhKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBkYXRhUHJvdmlkZXIg
PSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YSgoQ0ZEYXRhUmVmKWRhdGEp
KTsKICAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJlZj4gY2dQREZEb2N1bWVudCA9IGFkb3B0
Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKTsK
ICAgICBfcGRmRG9jdW1lbnQgPSBhZG9wdE5TKFtbVUlQREZEb2N1bWVudCBhbGxvY10gaW5pdFdp
dGhDR1BERkRvY3VtZW50OmNnUERGRG9jdW1lbnQuZ2V0KCldKTsKIApAQCAtMTY1LDYgKzE4OCwy
MSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAgICAgICAgIFtfcGFnZU51bWJlckluZGljYXRvciBzaG93
XTsKIH0KIAorLSAodm9pZClfZW5zdXJlVmlld0ZvclBhZ2U6KFBERlBhZ2VJbmZvJilwYWdlSW5m
bworeworICAgIGlmIChwYWdlSW5mby52aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBwYWdl
SW5mby52aWV3ID0gYWRvcHROUyhbW1VJUERGUGFnZVZpZXcgYWxsb2NdIGluaXRXaXRoUGFnZTpw
YWdlSW5mby5wYWdlLmdldCgpIHRpbGVkQ29udGVudDpZRVNdKTsKKyAgICBbcGFnZUluZm8udmll
dyBzZXRVc2VCYWNraW5nTGF5ZXI6WUVTXTsKKyAgICBbcGFnZUluZm8udmlldyBzZXREZWxlZ2F0
ZTpzZWxmXTsKKyAgICBbW3BhZ2VJbmZvLnZpZXcgYW5ub3RhdGlvbkNvbnRyb2xsZXJdIHNldERl
bGVnYXRlOnNlbGZdOworICAgIFtzZWxmIGFkZFN1YnZpZXc6cGFnZUluZm8udmlldy5nZXQoKV07
CisKKyAgICBbcGFnZUluZm8udmlldyBzZXRGcmFtZTpwYWdlSW5mby5mcmFtZV07CisgICAgW3Bh
Z2VJbmZvLnZpZXcgY29udGVudExheWVyXS5jb250ZW50c1NjYWxlID0gc2VsZi53aW5kb3cuc2Ny
ZWVuLnNjYWxlOworfQorCiAtICh2b2lkKV9yZXZhbGlkYXRlVmlld3MKIHsKICAgICBpZiAoX2lz
U3RhcnRpbmdab29tKQpAQCAtMTc4LDMxICsyMTYsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAg
IENHUmVjdCB0YXJnZXRSZWN0Rm9yQ2VudGVyUGFnZSA9IENHUmVjdEluc2V0KHRhcmdldFJlY3Qs
IDAsIHRhcmdldFJlY3Quc2l6ZS5oZWlnaHQgLyAyIC0gcGRmUGFnZU1hcmdpbiAqIDIpOwogCiAg
ICAgX2NlbnRlclBhZ2VOdW1iZXIgPSAwOwotICAgIHVuc2lnbmVkIGN1cnJlbnRQYWdlID0gMDsK
IAogICAgIGZvciAoYXV0byYgcGFnZUluZm8gOiBfcGFnZXMpIHsKLSAgICAgICAgKytjdXJyZW50
UGFnZTsKLQotICAgICAgICBpZiAoIUNHUmVjdEludGVyc2VjdHNSZWN0KHBhZ2VJbmZvLmZyYW1l
LCB0YXJnZXRSZWN0V2l0aE92ZXJkcmF3KSkgeworICAgICAgICBpZiAoIUNHUmVjdEludGVyc2Vj
dHNSZWN0KHBhZ2VJbmZvLmZyYW1lLCB0YXJnZXRSZWN0V2l0aE92ZXJkcmF3KSAmJiBwYWdlSW5m
by5pbmRleCAhPSBfY3VycmVudEZpbmRQYWdlSW5kZXgpIHsKICAgICAgICAgICAgIFtwYWdlSW5m
by52aWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgICAgICAgICAgcGFnZUluZm8udmlldyA9
IG51bGxwdHI7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghX2NlbnRlclBhZ2VOdW1iZXIgJiYgQ0dSZWN0SW50ZXJzZWN0c1JlY3QocGFnZUluZm8uZnJh
bWUsIHRhcmdldFJlY3RGb3JDZW50ZXJQYWdlKSkKLSAgICAgICAgICAgIF9jZW50ZXJQYWdlTnVt
YmVyID0gY3VycmVudFBhZ2U7Ci0KLSAgICAgICAgaWYgKHBhZ2VJbmZvLnZpZXcpCi0gICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICBwYWdlSW5mby52aWV3ID0gYWRvcHROUyhbW1VJUERG
UGFnZVZpZXcgYWxsb2NdIGluaXRXaXRoUGFnZTpwYWdlSW5mby5wYWdlLmdldCgpIHRpbGVkQ29u
dGVudDpZRVNdKTsKLSAgICAgICAgW3BhZ2VJbmZvLnZpZXcgc2V0VXNlQmFja2luZ0xheWVyOllF
U107Ci0gICAgICAgIFtwYWdlSW5mby52aWV3IHNldERlbGVnYXRlOnNlbGZdOwotICAgICAgICBb
W3BhZ2VJbmZvLnZpZXcgYW5ub3RhdGlvbkNvbnRyb2xsZXJdIHNldERlbGVnYXRlOnNlbGZdOwot
ICAgICAgICBbc2VsZiBhZGRTdWJ2aWV3OnBhZ2VJbmZvLnZpZXcuZ2V0KCldOworICAgICAgICAg
ICAgX2NlbnRlclBhZ2VOdW1iZXIgPSBwYWdlSW5mby5pbmRleCArIDE7CiAKLSAgICAgICAgW3Bh
Z2VJbmZvLnZpZXcgc2V0RnJhbWU6cGFnZUluZm8uZnJhbWVdOwotICAgICAgICBbcGFnZUluZm8u
dmlldyBjb250ZW50TGF5ZXJdLmNvbnRlbnRzU2NhbGUgPSBzZWxmLndpbmRvdy5zY3JlZW4uc2Nh
bGU7CisgICAgICAgIFtzZWxmIF9lbnN1cmVWaWV3Rm9yUGFnZTpwYWdlSW5mb107CiAgICAgfQog
CiAgICAgW3NlbGYgX3VwZGF0ZVBhZ2VOdW1iZXJJbmRpY2F0b3JdOwpAQCAtMjkxLDggKzMxNiw4
IEBAIHR5cGVkZWYgc3RydWN0IHsKICAgICBfcGFnZXMucmVzZXJ2ZUNhcGFjaXR5KHBhZ2VDb3Vu
dCk7CiAKICAgICBDR1JlY3QgcGFnZUZyYW1lID0gQ0dSZWN0TWFrZSgwLCAwLCBfbWluaW11bVNp
emUud2lkdGgsIF9taW5pbXVtU2l6ZS5oZWlnaHQpOwotICAgIGZvciAoTlNVSW50ZWdlciBwYWdl
TnVtYmVyID0gMDsgcGFnZU51bWJlciA8IHBhZ2VDb3VudDsgKytwYWdlTnVtYmVyKSB7Ci0gICAg
ICAgIFVJUERGUGFnZSAqcGFnZSA9IFtfcGRmRG9jdW1lbnQgcGFnZUF0SW5kZXg6cGFnZU51bWJl
cl07CisgICAgZm9yIChOU1VJbnRlZ2VyIHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IHBhZ2VD
b3VudDsgKytwYWdlSW5kZXgpIHsKKyAgICAgICAgVUlQREZQYWdlICpwYWdlID0gW19wZGZEb2N1
bWVudCBwYWdlQXRJbmRleDpwYWdlSW5kZXhdOwogICAgICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIApAQCAtMzAzLDYgKzMyOCw3IEBAIHR5cGVkZWYgc3RydWN0IHsKICAg
ICAgICAgUERGUGFnZUluZm8gcGFnZUluZm87CiAgICAgICAgIHBhZ2VJbmZvLnBhZ2UgPSBwYWdl
OwogICAgICAgICBwYWdlSW5mby5mcmFtZSA9IHBhZ2VGcmFtZVdpdGhNYXJnaW5BcHBsaWVkOwor
ICAgICAgICBwYWdlSW5mby5pbmRleCA9IHBhZ2VJbmRleDsKICAgICAgICAgX3BhZ2VzLmFwcGVu
ZChwYWdlSW5mbyk7CiAgICAgICAgIHBhZ2VGcmFtZS5vcmlnaW4ueSArPSBwYWdlRnJhbWUuc2l6
ZS5oZWlnaHQgLSBwZGZQYWdlTWFyZ2luOwogICAgIH0KQEAgLTM2NCw2ICszOTAsMTk0IEBAIHR5
cGVkZWYgc3RydWN0IHsKICAgICByZXR1cm4gbmlsOwogfQogCisjcHJhZ21hIG1hcmsgRmluZC1p
bi1QYWdlCisKK3N0YXRpYyBOU1N0cmluZ0NvbXBhcmVPcHRpb25zIHN0cmluZ0NvbXBhcmVPcHRp
b25zKF9XS0ZpbmRPcHRpb25zIG9wdGlvbnMpCit7CisgICAgTlNTdHJpbmdDb21wYXJlT3B0aW9u
cyBmaW5kT3B0aW9ucyA9IDA7CisgICAgaWYgKG9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0Nhc2VJ
bnNlbnNpdGl2ZSkKKyAgICAgICAgZmluZE9wdGlvbnMgfD0gTlNDYXNlSW5zZW5zaXRpdmVTZWFy
Y2g7CisgICAgaWYgKG9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKKyAgICAgICAg
ZmluZE9wdGlvbnMgfD0gTlNCYWNrd2FyZHNTZWFyY2g7CisgICAgcmV0dXJuIGZpbmRPcHRpb25z
OworfQorCistICh2b2lkKV9jb21wdXRlTWF0Y2hlc0ZvclN0cmluZzooTlNTdHJpbmcgKilzdHJp
bmcgb3B0aW9uczooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlcilt
YXhDb3VudCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIGlmICghX3BkZkRvY3VtZW50KSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKE5PKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9XS0ZpbmRPcHRp
b25zIG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzID0gb3B0aW9ucyAmIH5fV0tGaW5kT3B0aW9uc0ly
cmVsZXZhbnRGb3JCYXRjaFJlc3VsdHM7CisKKyAgICAvLyBJZiB0aGlzIHNlYXJjaCBpcyBlcXVp
dmFsZW50IHRvIHRoZSBjdXJyZW50bHkgY2FjaGVkIHNlYXJjaCwgYmFpbCBhbmQgY2FsbCB0aGUg
Y29tcGxldGlvbiBoYW5kbGVyLCBiZWNhdXNlIHRoZSBleGlzdGluZyBjYWNoZWQgcmVzdWx0cyBh
cmUgdmFsaWQuCisgICAgaWYgKCFfY2FjaGVkRmluZE1hdGNoZXMuaXNFbXB0eSgpICYmIFtfY2Fj
aGVkRmluZFN0cmluZyBpc0VxdWFsVG9TdHJpbmc6c3RyaW5nXSAmJiBfY2FjaGVkRmluZE9wdGlv
bnNBZmZlY3RpbmdSZXN1bHRzID09IG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzICYmIF9jYWNoZWRG
aW5kTWF4aW11bUNvdW50ID09IG1heENvdW50KSB7CisgICAgICAgIC8vIEFsc28sIGNhbmNlbCBh
bnkgcnVubmluZyBzZWFyY2gsIGJlY2F1c2UgaXQgd2lsbCBldmVudHVhbGx5IHJlcGxhY2UgdGhl
IG5vdy12YWxpZCByZXN1bHRzLgorICAgICAgICArK19uZXh0Q29tcHV0ZU1hdGNoZXNPcGVyYXRp
b25JRDsKKworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gSWYgdGhpcyBzZWFyY2ggaXMgZXF1aXZhbGVudCB0byB0aGUgY3Vy
cmVudGx5IHJ1bm5pbmcgYXN5bmNocm9ub3VzIHNlYXJjaCwgYmFpbCBhcyBpZiB0aGlzIHNlYXJj
aCB3ZXJlIGNhbmNlbGxlZDsgdGhlIG9yaWdpbmFsIHNlYXJjaCdzIGNvbXBsZXRpb24gaGFuZGxl
ciB3aWxsIGV2ZW50dWFsbHkgZmlyZS4KKyAgICBpZiAoW19uZXh0Q2FjaGVkRmluZFN0cmluZyBp
c0VxdWFsVG9TdHJpbmc6c3RyaW5nXSAmJiBfbmV4dENhY2hlZEZpbmRPcHRpb25zQWZmZWN0aW5n
UmVzdWx0cyA9PSBvcHRpb25zQWZmZWN0aW5nUmVzdWx0cyAmJiBfbmV4dENhY2hlZEZpbmRNYXhp
bXVtQ291bnQgPT0gbWF4Q291bnQpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTk8pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTlNTdHJpbmdDb21wYXJlT3B0aW9ucyBmaW5k
T3B0aW9ucyA9IHN0cmluZ0NvbXBhcmVPcHRpb25zKG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzKTsK
KworICAgIFZlY3RvcjxQREZQYWdlSW5mbz4gcGFnZXMgPSBfcGFnZXM7CisKKyAgICB1bnNpZ25l
ZCBjb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEID0gKytfbmV4dENvbXB1dGVNYXRjaGVzT3BlcmF0
aW9uSUQ7CisgICAgX25leHRDYWNoZWRGaW5kU3RyaW5nID0gc3RyaW5nOworICAgIF9uZXh0Q2Fj
aGVkRmluZE9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzID0gb3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHM7
CisgICAgX25leHRDYWNoZWRGaW5kTWF4aW11bUNvdW50ID0gbWF4Q291bnQ7CisKKyAgICBSZXRh
aW5QdHI8V0tQREZWaWV3PiByZXRhaW5lZFNlbGYgPSBzZWxmOworICAgIHR5cGVvZihjb21wbGV0
aW9uSGFuZGxlcikgY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9u
SGFuZGxlcik7CisKKyAgICBkaXNwYXRjaF9hc3luYyhfZmluZFF1ZXVlLCBbcGFnZXMsIHN0cmlu
ZywgZmluZE9wdGlvbnMsIG9wdGlvbnNBZmZlY3RpbmdSZXN1bHRzLCBtYXhDb3VudCwgY29tcHV0
ZU1hdGNoZXNPcGVyYXRpb25JRCwgcmV0YWluZWRTZWxmLCBjb21wbGV0aW9uSGFuZGxlckNvcHld
IHsKKyAgICAgICAgVmVjdG9yPFJldGFpblB0cjxVSVBERlNlbGVjdGlvbj4+IG1hdGNoZXM7CisK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBwYWdlSW5kZXggPSAwOyBwYWdlSW5kZXggPCBwYWdlcy5z
aXplKCk7ICsrcGFnZUluZGV4KSB7CisgICAgICAgICAgICBVSVBERlNlbGVjdGlvbiAqbWF0Y2gg
PSBudWxscHRyOworICAgICAgICAgICAgd2hpbGUgKChtYXRjaCA9IFtwYWdlc1twYWdlSW5kZXhd
LnBhZ2UgZmluZFN0cmluZzpzdHJpbmcgZnJvbVNlbGVjdGlvbjptYXRjaCBvcHRpb25zOmZpbmRP
cHRpb25zXSkpIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZChtYXRjaCk7CisgICAg
ICAgICAgICAgICAgaWYgKG1hdGNoZXMuc2l6ZSgpID4gbWF4Q291bnQpCisgICAgICAgICAgICAg
ICAgICAgIGdvdG8gbWF4Q291bnRFeGNlZWRlZDsKKworICAgICAgICAgICAgICAgIC8vIElmIHdl
J3ZlIGVucXVldWVkIGFub3RoZXIgc2VhcmNoLCBjYW5jZWwgdGhpcyBvbmUuCisgICAgICAgICAg
ICAgICAgaWYgKHJldGFpbmVkU2VsZi0+X25leHRDb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEICE9
IGNvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2NvbXBsZXRpb25IYW5kbGVyQ29w
eV0geworICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJDb3B5KE5PKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJD
b3B5KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAgICBt
YXhDb3VudEV4Y2VlZGVkOgorICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbY29tcHV0ZU1hdGNoZXNPcGVyYXRpb25JRCwgc3RyaW5nLCBvcHRpb25zQWZm
ZWN0aW5nUmVzdWx0cywgbWF4Q291bnQsIG1hdGNoZXMsIGNvbXBsZXRpb25IYW5kbGVyQ29weSwg
cmV0YWluZWRTZWxmXSB7CisKKyAgICAgICAgICAgIC8vIElmIGFub3RoZXIgc2VhcmNoIGhhcyBi
ZWVuIGVucXVldWVkIGluIHRoZSBtZWFudGltZSwgaWdub3JlIHRoaXMgcmVzdWx0LgorICAgICAg
ICAgICAgaWYgKHJldGFpbmVkU2VsZi0+X25leHRDb21wdXRlTWF0Y2hlc09wZXJhdGlvbklEICE9
IGNvbXB1dGVNYXRjaGVzT3BlcmF0aW9uSUQpIHsKKyAgICAgICAgICAgICAgICBCbG9ja19yZWxl
YXNlKGNvbXBsZXRpb25IYW5kbGVyQ29weSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXRhaW5lZFNlbGYtPl9jYWNoZWRGaW5kU3RyaW5n
ID0gc3RyaW5nOworICAgICAgICAgICAgcmV0YWluZWRTZWxmLT5fY2FjaGVkRmluZE9wdGlvbnNB
ZmZlY3RpbmdSZXN1bHRzID0gb3B0aW9uc0FmZmVjdGluZ1Jlc3VsdHM7CisgICAgICAgICAgICBy
ZXRhaW5lZFNlbGYtPl9jYWNoZWRGaW5kTWF4aW11bUNvdW50ID0gbWF4Q291bnQ7CisgICAgICAg
ICAgICByZXRhaW5lZFNlbGYtPl9jYWNoZWRGaW5kTWF0Y2hlcyA9IG1hdGNoZXM7CisKKyAgICAg
ICAgICAgIHJldGFpbmVkU2VsZi0+X25leHRDYWNoZWRGaW5kU3RyaW5nID0gbmlsOworCisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkoWUVTKTsKKyAgICAgICAgICAgIEJsb2NrX3Jl
bGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
Ky0gKHZvaWQpd2ViX2NvdW50U3RyaW5nTWF0Y2hlczooTlNTdHJpbmcgKilzdHJpbmcgb3B0aW9u
czooX1dLRmluZE9wdGlvbnMpb3B0aW9ucyBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudAor
eworICAgIFJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gcGFnZSA9IF93ZWJWaWV3LT5fcGFn
ZTsKKyAgICBbc2VsZiBfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6c3RyaW5nIG9wdGlvbnM6b3B0
aW9ucyBtYXhDb3VudDptYXhDb3VudCBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc3VjY2Vzcykg
eworICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHBh
Z2UtPmZpbmRDbGllbnQoKS5kaWRDb3VudFN0cmluZ01hdGNoZXMocGFnZS5nZXQoKSwgc3RyaW5n
LCBfY2FjaGVkRmluZE1hdGNoZXMuc2l6ZSgpKTsKKyAgICB9XTsKK30KKworLSAodm9pZClfZGlk
RmluZE1hdGNoOihVSVBERlNlbGVjdGlvbiAqKW1hdGNoCit7CisgICAgZm9yIChhdXRvJiBwYWdl
SW5mbyA6IF9wYWdlcykgeworICAgICAgICBpZiAocGFnZUluZm8ucGFnZSA9PSBtYXRjaC5wYWdl
KSB7CisgICAgICAgICAgICBbc2VsZiBfZW5zdXJlVmlld0ZvclBhZ2U6cGFnZUluZm9dOworCisg
ICAgICAgICAgICBbcGFnZUluZm8udmlldyBoaWdobGlnaHRTZWFyY2hTZWxlY3Rpb246bWF0Y2gg
YW5pbWF0ZWQ6Tk9dOworCisgICAgICAgICAgICBfY3VycmVudEZpbmRQYWdlSW5kZXggPSBwYWdl
SW5mby5pbmRleDsKKyAgICAgICAgICAgIF9jdXJyZW50RmluZFNlbGVjdGlvbiA9IG1hdGNoOwor
CisgICAgICAgICAgICBDR1JlY3Qgem9vbVJlY3QgPSBbcGFnZUluZm8udmlldyBjb252ZXJ0UmVj
dEZyb21QREZQYWdlU3BhY2U6bWF0Y2guYm91bmRzXTsKKyAgICAgICAgICAgIFtzZWxmIHpvb206
cGFnZUluZm8udmlldy5nZXQoKSB0bzp6b29tUmVjdCBhdFBvaW50OkNHUG9pbnRaZXJvIGtpbmQ6
a1VJUERGT2JqZWN0S2luZFRleHRdOworCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9Cit9CisKKy0gKHZvaWQpd2ViX2ZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG9w
dGlvbnM6KF9XS0ZpbmRPcHRpb25zKW9wdGlvbnMgbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291
bnQKK3sKKyAgICBpZiAoX2N1cnJlbnRGaW5kU2VsZWN0aW9uKQorICAgICAgICBbX3BhZ2VzW19j
dXJyZW50RmluZFBhZ2VJbmRleF0udmlldyBjbGVhclNlYXJjaEhpZ2hsaWdodHNdOworCisgICAg
UmV0YWluUHRyPFVJUERGU2VsZWN0aW9uPiBwcmV2aW91c0ZpbmRTZWxlY3Rpb24gPSBfY3VycmVu
dEZpbmRTZWxlY3Rpb247CisgICAgdW5zaWduZWQgcHJldmlvdXNGaW5kUGFnZUluZGV4ID0gMDsK
KyAgICBpZiAocHJldmlvdXNGaW5kU2VsZWN0aW9uKSB7CisgICAgICAgIHByZXZpb3VzRmluZFBh
Z2VJbmRleCA9IF9jdXJyZW50RmluZFBhZ2VJbmRleDsKKyAgICAgICAgaWYgKCFbX2NhY2hlZEZp
bmRTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnN0cmluZ10pIHsKKyAgICAgICAgICAgIE5TVUludGVn
ZXIgbG9jYXRpb24gPSBbX2N1cnJlbnRGaW5kU2VsZWN0aW9uIHN0YXJ0SW5kZXhdOworICAgICAg
ICAgICAgaWYgKGxvY2F0aW9uKQorICAgICAgICAgICAgICAgIHByZXZpb3VzRmluZFNlbGVjdGlv
biA9IGFkb3B0TlMoW1tVSVBERlNlbGVjdGlvbiBhbGxvY10gaW5pdFdpdGhQYWdlOltfY3VycmVu
dEZpbmRTZWxlY3Rpb24gcGFnZV0gZnJvbUluZGV4OmxvY2F0aW9uIC0gMSB0b0luZGV4OmxvY2F0
aW9uXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBOU1N0cmluZ0NvbXBhcmVPcHRpb25zIGZp
bmRPcHRpb25zID0gc3RyaW5nQ29tcGFyZU9wdGlvbnMob3B0aW9ucyk7CisgICAgYm9vbCBiYWNr
d2FyZHMgPSAob3B0aW9ucyAmIF9XS0ZpbmRPcHRpb25zQmFja3dhcmRzKTsKKyAgICBSZWZQdHI8
V2ViS2l0OjpXZWJQYWdlUHJveHk+IHBhZ2UgPSBfd2ViVmlldy0+X3BhZ2U7CisKKyAgICBbc2Vs
ZiBfY29tcHV0ZU1hdGNoZXNGb3JTdHJpbmc6c3RyaW5nIG9wdGlvbnM6b3B0aW9ucyBtYXhDb3Vu
dDptYXhDb3VudCBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc3VjY2VzcykgeworICAgICAgICBp
ZiAoIXN1Y2Nlc3MpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdW5zaWduZWQgcGFn
ZUluZGV4ID0gcHJldmlvdXNGaW5kUGFnZUluZGV4OworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgX3BhZ2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBVSVBERlNlbGVjdGlv
biAqbWF0Y2ggPSBbX3BhZ2VzW3BhZ2VJbmRleF0ucGFnZSBmaW5kU3RyaW5nOnN0cmluZyBmcm9t
U2VsZWN0aW9uOihwYWdlSW5kZXggPT0gcHJldmlvdXNGaW5kUGFnZUluZGV4ID8gcHJldmlvdXNG
aW5kU2VsZWN0aW9uLmdldCgpIDogbmlsKSBvcHRpb25zOmZpbmRPcHRpb25zXTsKKworICAgICAg
ICAgICAgaWYgKCFtYXRjaCkgeworICAgICAgICAgICAgICAgIGlmICghcGFnZUluZGV4ICYmIGJh
Y2t3YXJkcykKKyAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4ID0gX3BhZ2VzLnNpemUoKSAt
IDE7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocGFnZUluZGV4ID09IF9wYWdlcy5zaXplKCkg
LSAxICYmICFiYWNrd2FyZHMpCisgICAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleCA9IDA7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBwYWdlSW5kZXggKz0gYmFj
a3dhcmRzID8gLTEgOiAxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBbc2VsZiBfZGlkRmluZE1hdGNoOm1hdGNoXTsKKworICAgICAgICAg
ICAgaWYgKF9jYWNoZWRGaW5kTWF0Y2hlcy5zaXplKCkgPD0gbWF4Q291bnQpIHsKKyAgICAgICAg
ICAgICAgICBfY3VycmVudEZpbmRNYXRjaEluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGtub3duTWF0Y2ggOiBfY2FjaGVkRmluZE1hdGNoZXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1hdGNoLnN0cmluZ1JhbmdlLmxvY2F0aW9uID09IFtrbm93bk1hdGNo
IHN0cmluZ1JhbmdlXS5sb2NhdGlvbiAmJiBtYXRjaC5zdHJpbmdSYW5nZS5sZW5ndGggPT0gW2tu
b3duTWF0Y2ggc3RyaW5nUmFuZ2VdLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
cGFnZS0+ZmluZENsaWVudCgpLmRpZEZpbmRTdHJpbmcocGFnZS5nZXQoKSwgc3RyaW5nLCBfY2Fj
aGVkRmluZE1hdGNoZXMuc2l6ZSgpLCBfY3VycmVudEZpbmRNYXRjaEluZGV4KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIF9jdXJyZW50RmluZE1hdGNoSW5kZXgrKzsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgcGFnZS0+ZmluZENsaWVudCgpLmRpZEZhaWxUb0ZpbmRTdHJpbmcocGFnZS5nZXQo
KSwgc3RyaW5nKTsKKyAgICB9XTsKK30KKworLSAodm9pZCl3ZWJfaGlkZUZpbmRVSQoreworICAg
IGlmIChfY3VycmVudEZpbmRTZWxlY3Rpb24pCisgICAgICAgIFtfcGFnZXNbX2N1cnJlbnRGaW5k
UGFnZUluZGV4XS52aWV3IGNsZWFyU2VhcmNoSGlnaGxpZ2h0c107CisKKyAgICBfY3VycmVudEZp
bmRTZWxlY3Rpb24gPSBudWxscHRyOworICAgIF9jYWNoZWRGaW5kU3RyaW5nID0gbnVsbHB0cjsK
KyAgICBfY2FjaGVkRmluZE1hdGNoZXMuY2xlYXIoKTsKK30KKwogI3ByYWdtYSBtYXJrIFVJUERG
UGFnZVZpZXdEZWxlZ2F0ZQogCiAtICh2b2lkKXpvb206KFVJUERGUGFnZVZpZXcgKilwYWdlVmll
dyB0bzooQ0dSZWN0KXRhcmdldFJlY3QgYXRQb2ludDooQ0dQb2ludClvcmlnaW4ga2luZDooVUlQ
REZPYmplY3RLaW5kKWtpbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3YjE2MDM3OTM4NGVhZDA4YWJjYTFhNWRkMTM5NmViYTcx
OGEzMTRjLi41YjgyMmYyM2Q0OGNhZGI5MTgxY2I4YjM0NTQ2MTEyMjIwZWEwOWQ1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02
NzYsNiArNjc2LDcgQEAKIAkJMkRERjczMTYxOEU5NTA2MDAwNEY1QTY2IC8qIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlQ29sbGVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEREY3MzE0MThFOTUwNjAwMDRGNUE2NiAvKiBSZW1vdGVMYXllckJh
Y2tpbmdTdG9yZUNvbGxlY3Rpb24ubW0gKi87IH07CiAJCTJERTY5NDNEMThCRDJBNjgwMDVDMTVF
NSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERTY5NDNCMThCRDJB
NjgwMDVDMTVFNSAvKiBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2FnZVJlY2VpdmVy
LmNwcCAqLzsgfTsKIAkJMkRFNjk0M0UxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRFNjk0M0MxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNh
dGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICovOyB9OworCQkyREVBQzVDRjFBQzM2OEJCMDBBMTk1
RDggLyogX1dLRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJERUFDNUNFMUFDMzY4QkIwMEExOTVEOCAvKiBfV0tGaW5kT3B0aW9ucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJERjk1
OTNCMThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREY5NTkzNDE4QTQyNDEy
MDA5Nzg1QTEgLyogVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tICovOyB9OwogCQkyREY5RUVF
NTFBNzgxRkI0MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERjlFRUUzMUE3ODFGQjQwMEI2Q0ZCRSAvKiBB
UElGcmFtZUluZm8uY3BwICovOyB9OwogCQkyREY5RUVFNjFBNzgxRkI0MDBCNkNGQkUgLyogQVBJ
RnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREY5RUVFNDFBNzgxRkI0MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmggKi87IH07CkBAIC0y
ODMzLDYgKzI4MzQsNyBAQAogCQkyRERGNzMxNDE4RTk1MDYwMDA0RjVBNjYgLyogUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmVDb2xsZWN0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREU2OTQzQjE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRN
YWduaWZpY2F0aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9sbGVyTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRFNjk0M0MxOEJE
MkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTbWFydE1hZ25pZmljYXRpb25Db250cm9s
bGVyTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFQUM1Q0UxQUMz
NjhCQjAwQTE5NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IF9XS0ZpbmRPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJERjk1OTM0MThBNDI0MTIwMDk3ODVBMSAvKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBWaWV3R2VzdHVyZUNvbnRy
b2xsZXJJT1MubW07IHBhdGggPSBpb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREY5RUVFMzFBNzgxRkI0MDBCNkNGQkUgLyogQVBJ
RnJhbWVJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUZy
YW1lSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERjlFRUU0MUE3ODFG
QjQwMEI2Q0ZCRSAvKiBBUElGcmFtZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVBJRnJhbWVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MzIz
LDYgKzUzMjUsNyBAQAogCQkJCTFBRDAxQkM3MTkwNUQzN0UwMEM5QzQ1RiAvKiBfV0tFcnJvclJl
Y292ZXJ5QXR0ZW1wdGluZy5oICovLAogCQkJCTFBRDAxQkM2MTkwNUQzN0UwMEM5QzQ1RiAvKiBf
V0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbSAqLywKIAkJCQkwMDVEMTU4RTE4RTRDNEVCMDA3
MzQ2MTkgLyogX1dLRmluZERlbGVnYXRlLmggKi8sCisJCQkJMkRFQUM1Q0UxQUMzNjhCQjAwQTE5
NUQ4IC8qIF9XS0ZpbmRPcHRpb25zLmggKi8sCiAJCQkJMzdBNjRFNTQxOEYzOEUzQzAwRUIzMEYx
IC8qIF9XS0Zvcm1EZWxlZ2F0ZS5oICovLAogCQkJCTM3QTY0RTU2MThGMzhGNDYwMEVCMzBGMSAv
KiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggKi8sCiAJCQkJMUE0M0U4MjgxODhGM0NEQzAwOUU0RDMw
IC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovLApAQCAtNzc1NCw2ICs3NzU3LDcg
QEAKIAkJCQkxQTZGQkQyODExRTY5QkMyMDBEQjEzNzEgLyogTmV0c2NhcGVQbHVnaW4uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNEE5QzU2MTJCODE2Q0YwMDhGRTk4NCAvKiBOZXRzY2FwZVBsdWdp
bk1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTg4OTIxMUVFNzA0MDAwNjFCODgyIC8q
IE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggaW4gSGVhZGVycyAqLywKKwkJCQkyREVBQzVDRjFBQzM2
OEJCMDBBMTk1RDggLyogX1dLRmluZE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxNzk4
QzdBMTZFNjgxODgwMDI0MDEzOSAvKiBOZXR3b3JrQmxvYlJlZ2lzdHJ5LmggaW4gSGVhZGVycyAq
LywKIAkJCQlFNDQzNkVDQzFBMEQwNDBCMDBFQUQyMDQgLyogTmV0d29ya0NhY2hlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDg5RDI4QTFBMEEyREI4MDA3OEMwNkEgLyogTmV0d29ya0NhY2hlQ29k
ZXIuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>