<?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>73767</bug_id>
          
          <creation_ts>2011-12-04 04:21:12 -0800</creation_ts>
          <short_desc>[GTK] Implement GraphicsLayer using Clutter</short_desc>
          <delta_ts>2013-02-15 09:20:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</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>
          <dependson>73319</dependson>
    
    <dependson>81785</dependson>
    
    <dependson>91940</dependson>
    
    <dependson>92045</dependson>
    
    <dependson>104670</dependson>
          <blocked>74087</blocked>
    
    <blocked>105699</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joone Hur">joone.hur</reporter>
          <assigned_to name="Joone Hur">joone.hur</assigned_to>
          <cc>alex</cc>
    
    <cc>benjamin</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>joone</cc>
    
    <cc>kevin.cs.oh</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>rodrigo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>514673</commentid>
    <comment_count>0</comment_count>
    <who name="Joone Hur">joone.hur</who>
    <bug_when>2011-12-04 04:21:12 -0800</bug_when>
    <thetext>This patch allows us to run CSS3 3D transforms in WebKitGtk+ when Accelerated Compositing is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650080</commentid>
    <comment_count>1</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2012-06-15 04:29:04 -0700</bug_when>
    <thetext>What is your plan about this? I thin it is already working?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650968</commentid>
    <comment_count>2</comment_count>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-06-17 00:54:10 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; What is your plan about this? I thin it is already working?

Yes, I have a working repository: https://gitorious.org/~joone/webkit/joone-webkit-ac

But, it doesn&apos;t work with trunk so I tried to make it work with trunk.
Currently, I was able to build clutter-ac with trunk, but it has some issues to run.
I am fixing it now.

Please wait a bit more and I will upload the full patch first or make another working repository.

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659535</commentid>
    <comment_count>3</comment_count>
      <attachid>149960</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-06-28 08:56:12 -0700</bug_when>
    <thetext>Created attachment 149960
Initial patch (no change log)

I tried to make Clutter backend patch as small as possible, so it only supports a few examples like rotate3d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659537</commentid>
    <comment_count>4</comment_count>
      <attachid>149961</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-06-28 08:57:59 -0700</bug_when>
    <thetext>Created attachment 149961
test case (rotate3d)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659539</commentid>
    <comment_count>5</comment_count>
      <attachid>149960</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-06-28 09:02:49 -0700</bug_when>
    <thetext>Comment on attachment 149960
Initial patch (no change log)

A couple things from a quick skim of the patch:

1. GObject source code should follow WebKit coding style. You should use webkitNamingConventions for methods and spacing.
2. Perhaps it&apos;s better to add the skeleton to make this compile and gradually implement things.
3 You shouldn&apos;t need to add clutter dependencies to the GTK+ jhbuild. The bots aren&apos;t building this now and they aren&apos;t necessary to make tests pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659545</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 09:12:10 -0700</bug_when>
    <thetext>Attachment 149960 did not pass style-queue:

Source/WebCore/platform/graphics/clutter/webkitclutterinclude.h:19:  #ifndef header guard has wrong style, please use: webkitclutterinclude_h  [build/header_guard] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.h:122:  The parameter name &quot;flags&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/gtk/webkit/webkitglobals.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:19:  #ifndef header guard has wrong style, please use: GraphicsLayerActor_h  [build/header_guard] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:22:  Header file should not contain WebCore config.h. Should be: alphabetically sorted.  [build/include_order] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:27:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:36:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:36:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:37:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:40:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:40:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:41:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:44:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:45:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:49:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:52:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:53:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:66:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:67:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:69:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:70:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:74:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:75:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:75:  parent_class is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:77:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:78:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:78:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:79:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:79:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:80:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:80:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:81:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:81:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:82:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:82:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:85:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:85:  graphics_layer_actor_get_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:87:  graphics_layer_actor_ is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:88:  graphics_layer_actor__with_client is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:89:  graphics_layer_actor_set_client is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:90:  graphics_layer_actor_get_client is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:91:  graphics_layer_actor_remove_all is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:92:  graphics_layer_actor_get_surface is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:93:  graphics_layer_actor_set_surface is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:94:  graphics_layer_actor_invalidate_rectangle is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:95:  graphics_layer_actor_set_transform is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:96:  graphics_layer_actor_set_anchor_point is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:97:  graphics_layer_actor_get_anchor_point is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:98:  graphics_layer_actor_set_scroll_position is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:99:  graphics_layer_actor_set_translate_x is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:100:  graphics_layer_actor_get_translate_x is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:101:  graphics_layer_actor_set_translate_y is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:102:  graphics_layer_actor_get_translate_y is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:103:  graphics_layer_actor_get_n_children is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:104:  graphics_layer_actor_get_layer_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:105:  graphics_layer_actor_set_layer_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:106:  graphics_layer_actor_set_sublayers is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:107:  graphics_layer_actor_get_draws_content is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h:108:  graphics_layer_actor_set_draws_content is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.cpp:31:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:25:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:28:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:36:  The parameter name &quot;iface&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:36:  clutter_container_iface_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:37:  container_add is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:37:  The parameter name &quot;container&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:38:  The parameter name &quot;actor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:39:  container_remove is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:39:  The parameter name &quot;container&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:40:  The parameter name &quot;actor&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:49:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:62:  anchor_x is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:63:  anchor_y is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:64:  anchor_z is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:66:  scroll_x is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:67:  scroll_y is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:69:  translate_x is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:70:  translate_y is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:75:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:85:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:86:  Extra space between guint and prop_id  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:86:  prop_id is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:88:  Declaration has space between type name and * in GParamSpec *pspec  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:101:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:106:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:107:  Extra space between guint and prop_id  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:107:  prop_id is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:108:  Extra space between GValue and *value  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:108:  Declaration has space between type name and * in GValue     *value  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:109:  Declaration has space between type name and * in GParamSpec *pspec  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:121:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:122:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:128:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:143:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:150:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:176:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:181:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:209:  graphics_layer_actor_apply_transform is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:224:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:231:  pivot_x is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:231:  pivot_y is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:264:  graphics_layer_actor_draw is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:270:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:279:  surface_width is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:280:  surface_height is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:293:  graphics_layer_actor_paint is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:357:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:359:  Declaration has space between type name and * in GObjectClass *object_class  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:359:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:360:  Declaration has space between type name and * in ClutterActorClass *actor_class  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:360:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:361:  Declaration has space between type name and * in GParamSpec *pspec  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:373:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:406:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:424:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:430:  Extra space before ( in function call  [whitespace/parens] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:468:  container_add is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:486:  container_remove is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:500:  container_replace is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:517:  container_foreach is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:519:  user_data is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:525:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:531:  clutter_container_iface_init is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:541:  graphics_layer_actor_remove_all is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:543:  Declaration has space between type name and * in GList *children  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:548:  Declaration has space between type name and * in ClutterActor *child  [whitespace/declaration] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:583:  Use 0 instead of NULL.  [readability/null] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:590:  graphics_layer_actor_get_surface is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:599:  graphics_layer_actor_set_surface is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:606:  graphics_layer_actor_invalidate_rectangle is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:617:  graphics_layer_actor_set_transform is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:642:  graphics_layer_actor_set_anchor_point is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:657:  graphics_layer_actor_get_anchor_point is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:670:  graphics_layer_actor_set_scroll_position is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:681:  graphics_layer_actor_get_n_children is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:685:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:688:  graphics_layer_actor_replace_sublayer is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:697:  graphics_layer_actor_insert_sublayer is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:712:  graphics_layer_actor_set_sublayers is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:714:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:727:  graphics_layer_actor_get_layer_type is incorrectly named. Don&apos;t use underscores in your identifFailed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/GNUmakefile.list.am&apos;, u&apos;Sou...&quot; exit_code: 1
ier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:733:  graphics_layer_actor_set_layer_type is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:739:  graphics_layer_actor_set_translate_x is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:746:  graphics_layer_actor_get_translate_x is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:752:  graphics_layer_actor_set_translate_y is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:759:  graphics_layer_actor_get_translate_y is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:766:  graphics_layer_actor_set_draws_content is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp:778:  graphics_layer_actor_get_draws_content is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 153 in 13 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>659558</commentid>
    <comment_count>7</comment_count>
      <attachid>149960</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-06-28 09:30:23 -0700</bug_when>
    <thetext>Comment on attachment 149960
Initial patch (no change log)

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

I think I would like to have this split quite a bit. We should also fix all of the style issues, of course, I&apos;d recommend running the style checker, doing the fixes and pushing them to the webkit-clutter repository first, so we don&apos;t desync. Also important to have all of the latest fixes from there. I think we can split this into one patch adding GraphicsLayerActor (with all of the style fixes), one adding TransformMatrixClutter, one with GraphicsLayerClutter.

&gt; Source/WebCore/platform/clutter/GRefPtrClutter.cpp:23
&gt; -#include &lt;clutter/clutter.h&gt;
&gt; +#include &quot;webkitclutterinclude.h&quot;

Let&apos;s not do this. It&apos;s required for a specific version of clutter/cogl, but we should avoid having it for trunk, just depend on a new enough clutter and remove webkitclutterinclude.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661119</commentid>
    <comment_count>8</comment_count>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-07-01 02:20:43 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 149960 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149960&amp;action=review
&gt; 
&gt; I think I would like to have this split quite a bit. We should also fix all of the style issues, of course, I&apos;d recommend running the style checker, doing the fixes and pushing them to the webkit-clutter repository first, so we don&apos;t desync. Also important to have all of the latest fixes from there. I think we can split this into one patch adding GraphicsLayerActor (with all of the style fixes), one adding TransformMatrixClutter, one with GraphicsLayerClutter.
&gt; 
&gt; &gt; Source/WebCore/platform/clutter/GRefPtrClutter.cpp:23
&gt; &gt; -#include &lt;clutter/clutter.h&gt;
&gt; &gt; +#include &quot;webkitclutterinclude.h&quot;
&gt; 
&gt; Let&apos;s not do this. It&apos;s required for a specific version of clutter/cogl, but we should avoid having it for trunk, just depend on a new enough clutter and remove webkitclutterinclude.

Oops! I should not have run EWS. Actually, I didn&apos;t fix all of the style issues. I just wanted to check if the size of this patch could be manageable. Okay, I will split this patch into separate pieces for each file, and apply the style fixes to webkit-clutter first, and not include &quot;webkitclutterinclude.h&quot; for trunk.

&gt; 3 You shouldn&apos;t need to add clutter dependencies to the GTK+ jhbuild. The bots aren&apos;t building this now and they aren&apos;t necessary to make tests pass.

@Martin: Yes, Clutter is not needed for the default build options, but it makes it easier to build WebKitGtk+ with a specific version of Clutter. It would be good that we can add specific components to jhbuild according to build options.

Thanks for the comments!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661186</commentid>
    <comment_count>9</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-01 16:21:56 -0700</bug_when>
    <thetext>(In reply to comment #8)

&gt; @Martin: Yes, Clutter is not needed for the default build options, but it makes it easier to build WebKitGtk+ with a specific version of Clutter. It would be good that we can add specific components to jhbuild according to build options.

The jhbuild is not really for satisfying dependencies, but for making it so that tests pass on all platforms. Perhaps we should use it for satisfying dependencies in the future, but not sure if we should change that in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661220</commentid>
    <comment_count>10</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-07-01 19:03:43 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; 
&gt; &gt; @Martin: Yes, Clutter is not needed for the default build options, but it makes it easier to build WebKitGtk+ with a specific version of Clutter. It would be good that we can add specific components to jhbuild according to build options.
&gt; 
&gt; The jhbuild is not really for satisfying dependencies, but for making it so that tests pass on all platforms. Perhaps we should use it for satisfying dependencies in the future, but not sure if we should change that in this patch.

See also
https://trac.webkit.org/wiki/BuildingGtk#Extendingthejhbuildenvironment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675725</commentid>
    <comment_count>11</comment_count>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-07-23 08:32:07 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; 
&gt; &gt; &gt; @Martin: Yes, Clutter is not needed for the default build options, but it makes it easier to build WebKitGtk+ with a specific version of Clutter. It would be good that we can add specific components to jhbuild according to build options.
&gt; &gt; 
&gt; &gt; The jhbuild is not really for satisfying dependencies, but for making it so that tests pass on all platforms. Perhaps we should use it for satisfying dependencies in the future, but not sure if we should change that in this patch.
&gt; 
&gt; See also
&gt; https://trac.webkit.org/wiki/BuildingGtk#Extendingthejhbuildenvironment

@Philippe: Thanks for the information. It was very helpful. :-)
@Kov: I&apos;ve made a separated patch for GraphicsLayerActor. 
https://bugs.webkit.org/show_bug.cgi?id=91940</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699164</commentid>
    <comment_count>12</comment_count>
      <attachid>159320</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-08-19 19:38:03 -0700</bug_when>
    <thetext>Created attachment 159320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699314</commentid>
    <comment_count>13</comment_count>
      <attachid>159362</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-08-20 01:29:44 -0700</bug_when>
    <thetext>Created attachment 159362
Extra jhbuild modulesets for building Clutter and its dependencies

You can build WebKitGtk+ with Clutter and its dependencies by setting the environment variables as follows:

export WEBKIT_EXTRA_MODULESETS=file:///home/joone/git/WebKit/Tools/gtk/jhbuild_clutter.modules
export WEBKIT_EXTRA_MODULES=webkitgtk-clutter-dependencies</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699341</commentid>
    <comment_count>14</comment_count>
      <attachid>159374</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-08-20 02:17:51 -0700</bug_when>
    <thetext>Created attachment 159374
Patch2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699342</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-20 02:21:12 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700061</commentid>
    <comment_count>16</comment_count>
      <attachid>159374</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-08-20 15:28:06 -0700</bug_when>
    <thetext>Comment on attachment 159374
Patch2

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

&gt; Source/WebCore/platform/clutter/GRefPtrClutter.cpp:66
&gt; +template &lt;&gt; GRefPtr&lt;GraphicsLayerActor&gt; adoptGRef(GraphicsLayerActor* ptr)
&gt; +{
&gt; +    if (g_object_is_floating(ptr))
&gt; +        g_object_ref_sink(ptr);
&gt; +
&gt; +    return GRefPtr&lt;GraphicsLayerActor&gt;(ptr, GRefPtrAdopt);
&gt; +}
&gt; +
&gt; +template &lt;&gt; GraphicsLayerActor* refGPtr&lt;GraphicsLayerActor&gt;(GraphicsLayerActor* ptr)
&gt; +{
&gt; +    if (ptr) {
&gt; +        if (g_object_is_floating(ptr))
&gt; +            g_object_ref_sink(ptr);
&gt; +

Isn&apos;t this the same as the default GRefPtr implementation? If that&apos;s the case, you can just remove this file completely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721611</commentid>
    <comment_count>17</comment_count>
      <attachid>159374</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-09-16 09:32:52 -0700</bug_when>
    <thetext>Comment on attachment 159374
Patch2

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

&gt;&gt; Source/WebCore/platform/clutter/GRefPtrClutter.cpp:66
&gt;&gt; +
&gt; 
&gt; Isn&apos;t this the same as the default GRefPtr implementation? If that&apos;s the case, you can just remove this file completely.

I tried to remove GRefPtrClutter, but I got a runtime error:

(GtkLauncher:28198): GLib-GObject-WARNING **: invalid uninstantiatable type `&lt;invalid&gt;&apos; in cast to `ClutterActor&apos;

(GtkLauncher:28198): Clutter-CRITICAL **: clutter_container_add_actor: assertion `CLUTTER_IS_ACTOR (actor)&apos; failed
**
ERROR:../../Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.cpp:401:void WebCore::GraphicsLayerClutter::updateSublayerList(): assertion failed: (GRAPHICS_LAYER_IS_ACTOR(childLayer))

I think GRefPtrClutter needs to be added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721612</commentid>
    <comment_count>18</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-16 09:39:40 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 159374 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159374&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/clutter/GRefPtrClutter.cpp:66
&gt; &gt;&gt; +
&gt; &gt; 
&gt; &gt; Isn&apos;t this the same as the default GRefPtr implementation? If that&apos;s the case, you can just remove this file completely.
&gt; 
&gt; I tried to remove GRefPtrClutter, but I got a runtime error:
&gt; 
&gt; (GtkLauncher:28198): GLib-GObject-WARNING **: invalid uninstantiatable type `&lt;invalid&gt;&apos; in cast to `ClutterActor&apos;
&gt; 
&gt; (GtkLauncher:28198): Clutter-CRITICAL **: clutter_container_add_actor: assertion `CLUTTER_IS_ACTOR (actor)&apos; failed
&gt; **
&gt; ERROR:../../Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.cpp:401:void WebCore::GraphicsLayerClutter::updateSublayerList(): assertion failed: (GRAPHICS_LAYER_IS_ACTOR(childLayer))
&gt; 
&gt; I think GRefPtrClutter needs to be added.

Do you know what code is causing these assertion failures? Isn&apos;t the only difference between GRefPtrClutter and the vanilla GRefPtr is the type that it&apos;s cast to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722011</commentid>
    <comment_count>19</comment_count>
      <attachid>159374</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-09-17 09:47:28 -0700</bug_when>
    <thetext>Comment on attachment 159374
Patch2

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/clutter/GRefPtrClutter.cpp:66
&gt;&gt;&gt;&gt; +
&gt;&gt;&gt; 
&gt;&gt;&gt; Isn&apos;t this the same as the default GRefPtr implementation? If that&apos;s the case, you can just remove this file completely.
&gt;&gt; 
&gt;&gt; I tried to remove GRefPtrClutter, but I got a runtime error:
&gt;&gt; 
&gt;&gt; (GtkLauncher:28198): GLib-GObject-WARNING **: invalid uninstantiatable type `&lt;invalid&gt;&apos; in cast to `ClutterActor&apos;
&gt;&gt; 
&gt;&gt; (GtkLauncher:28198): Clutter-CRITICAL **: clutter_container_add_actor: assertion `CLUTTER_IS_ACTOR (actor)&apos; failed
&gt;&gt; **
&gt;&gt; ERROR:../../Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.cpp:401:void WebCore::GraphicsLayerClutter::updateSublayerList(): assertion failed: (GRAPHICS_LAYER_IS_ACTOR(childLayer))
&gt;&gt; 
&gt;&gt; I think GRefPtrClutter needs to be added.
&gt; 
&gt; Do you know what code is causing these assertion failures? Isn&apos;t the only difference between GRefPtrClutter and the vanilla GRefPtr is the type that it&apos;s cast to?

refGPtr is different between GRefPtrClutter and the vanilla GRefPtr, so I replaced the refGPtr of the vanilla GRefPtr with the refGPtr method of GRefPtrClutter, then AC started working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722553</commentid>
    <comment_count>20</comment_count>
      <attachid>159374</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-09-18 00:32:32 -0700</bug_when>
    <thetext>Comment on attachment 159374
Patch2

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/platform/clutter/GRefPtrClutter.cpp:66
&gt;&gt;&gt;&gt;&gt; +
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Isn&apos;t this the same as the default GRefPtr implementation? If that&apos;s the case, you can just remove this file completely.
&gt;&gt;&gt; 
&gt;&gt;&gt; I tried to remove GRefPtrClutter, but I got a runtime error:
&gt;&gt;&gt; 
&gt;&gt;&gt; (GtkLauncher:28198): GLib-GObject-WARNING **: invalid uninstantiatable type `&lt;invalid&gt;&apos; in cast to `ClutterActor&apos;
&gt;&gt;&gt; 
&gt;&gt;&gt; (GtkLauncher:28198): Clutter-CRITICAL **: clutter_container_add_actor: assertion `CLUTTER_IS_ACTOR (actor)&apos; failed
&gt;&gt;&gt; **
&gt;&gt;&gt; ERROR:../../Source/WebCore/platform/graphics/clutter/GraphicsLayerClutter.cpp:401:void WebCore::GraphicsLayerClutter::updateSublayerList(): assertion failed: (GRAPHICS_LAYER_IS_ACTOR(childLayer))
&gt;&gt;&gt; 
&gt;&gt;&gt; I think GRefPtrClutter needs to be added.
&gt;&gt; 
&gt;&gt; Do you know what code is causing these assertion failures? Isn&apos;t the only difference between GRefPtrClutter and the vanilla GRefPtr is the type that it&apos;s cast to?
&gt; 
&gt; refGPtr is different between GRefPtrClutter and the vanilla GRefPtr, so I replaced the refGPtr of the vanilla GRefPtr with the refGPtr method of GRefPtrClutter, then AC started working.

The implementation is indeed different. This adoptGRef consumes the floating reference in case the object has a floating ref, which I&apos;m not sure it&apos;s a good idea, because adoptGRef shouldn&apos;t change the references at all, IMO. And refGPtr increases the reference counter twice in case the object has a floating reference, once to consume the floating reference and again to increase the reference counter to 2. I don&apos;t think this is the expected behaviour of GRefPtr, so maybe  this should be a new RefPtr object GFloatingRef or something like that. I don&apos;t know why you need this, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722794</commentid>
    <comment_count>21</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-18 08:09:36 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 159374 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159374&amp;action=review

&gt; The implementation is indeed different. This adoptGRef consumes the floating reference in case the object has a floating ref, which I&apos;m not sure it&apos;s a good idea, because adoptGRef shouldn&apos;t change the references at all, IMO. And refGPtr increases the reference counter twice in case the object has a floating reference, once to consume the floating reference and again to increase the reference counter to 2. I don&apos;t think this is the expected behaviour of GRefPtr, so maybe  this should be a new RefPtr object GFloatingRef or something like that. I don&apos;t know why you need this, though.

refGPtr sinks floating references, so if your GObject has a floating reference, consider it unreffed and put it in the smart pointer like this:

GRefPtr&lt;ClutterThing&gt; smartPointer = clutterThing;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725832</commentid>
    <comment_count>22</comment_count>
      <attachid>165193</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-09-21 14:46:42 -0700</bug_when>
    <thetext>Created attachment 165193
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725839</commentid>
    <comment_count>23</comment_count>
      <attachid>165193</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-21 14:52:32 -0700</bug_when>
    <thetext>Comment on attachment 165193
Patch

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

Thanks for this iteration! Looks good, but just a few minor comments.

&gt; Source/WebCore/platform/graphics/clutter/TransformationMatrixClutter.cpp:34
&gt; +    matrix.xx = (float)m11();
&gt; +    matrix.xy = (float)m21();
&gt; +    matrix.xz = (float)m31();
&gt; +    matrix.xw = (float)m41();

Why are these casts here? Can&apos;t you convert a double into a float without a cast?

&gt; Tools/MiniBrowser/gtk/GNUmakefile.am:14
&gt; +	$(CLUTTER_CFLAGS) \

Instead of adding these CFLAGS and LIBS to all of the programs that use the WebKit library, you should add them to the library itself. WebKit1 and WebKit2 should be sufficient. Since the programs don&apos;t use the libraries directly, you shouldn&apos;t need to add them.

By not linking libwebkit* against clutter, you&apos;ll force anyone using libwebkit to add libclutter to their linker line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726157</commentid>
    <comment_count>24</comment_count>
      <attachid>165193</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-09-22 10:19:35 -0700</bug_when>
    <thetext>Comment on attachment 165193
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/clutter/TransformationMatrixClutter.cpp:34
&gt;&gt; +    matrix.xw = (float)m41();
&gt; 
&gt; Why are these casts here? Can&apos;t you convert a double into a float without a cast?

Do you mean static_cast should be used here?

&gt;&gt; Tools/MiniBrowser/gtk/GNUmakefile.am:14
&gt;&gt; +	$(CLUTTER_CFLAGS) \
&gt; 
&gt; Instead of adding these CFLAGS and LIBS to all of the programs that use the WebKit library, you should add them to the library itself. WebKit1 and WebKit2 should be sufficient. Since the programs don&apos;t use the libraries directly, you shouldn&apos;t need to add them.
&gt; 
&gt; By not linking libwebkit* against clutter, you&apos;ll force anyone using libwebkit to add libclutter to their linker line.

Okay, I will remove them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726158</commentid>
    <comment_count>25</comment_count>
      <attachid>165193</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-22 10:31:01 -0700</bug_when>
    <thetext>Comment on attachment 165193
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/clutter/TransformationMatrixClutter.cpp:34
&gt;&gt;&gt; +    matrix.xw = (float)m41();
&gt;&gt; 
&gt;&gt; Why are these casts here? Can&apos;t you convert a double into a float without a cast?
&gt; 
&gt; Do you mean static_cast should be used here?

It seems like you could remove the cast entirely. If not, just use static_cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726263</commentid>
    <comment_count>26</comment_count>
      <attachid>165285</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-09-23 09:39:18 -0700</bug_when>
    <thetext>Created attachment 165285
Martin &amp; Carlos, thanks for the review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726316</commentid>
    <comment_count>27</comment_count>
      <attachid>165285</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-09-23 16:58:19 -0700</bug_when>
    <thetext>Comment on attachment 165285
Martin &amp; Carlos, thanks for the review

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

&gt; Source/WebCore/platform/graphics/clutter/PlatformClutterLayerClient.h:39
&gt; +#include &lt;glib.h&gt;
&gt; +#include &lt;wtf/HashMap.h&gt;
&gt; +#include &lt;wtf/PassRefPtr.h&gt;
&gt; +#include &lt;wtf/RefCounted.h&gt;
&gt; +#include &lt;wtf/Vector.h&gt;
&gt; +#include &lt;wtf/text/StringHash.h&gt;

It seems some of these aren&apos;t necessary. Maybe you could remove them before landing?

&gt; Source/WebCore/platform/graphics/clutter/TransformationMatrixClutter.cpp:34
&gt; +    matrix.xx = static_cast&lt;float&gt;(m11());
&gt; +    matrix.xy = static_cast&lt;float&gt;(m21());
&gt; +    matrix.xz = static_cast&lt;float&gt;(m31());
&gt; +    matrix.xw = static_cast&lt;float&gt;(m41());

I&apos;m really not sure if these explicit casts are necessary...

I created this small program on my machine:
#include &lt;stdio.h&gt;

int main(int argc, char* argv[])
{
    double foo = 3.4;
    float bar;
    bar = foo;
    printf(&quot;bar: %f\n&quot;, bar);
    return 0;
}

and compiled it with g++ -Wall. I didn&apos;t see any warnings. Will you please try to remove them before landing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726762</commentid>
    <comment_count>28</comment_count>
      <attachid>165285</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-09-24 09:41:23 -0700</bug_when>
    <thetext>Comment on attachment 165285
Martin &amp; Carlos, thanks for the review

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

&gt;&gt; Source/WebCore/platform/graphics/clutter/PlatformClutterLayerClient.h:39
&gt;&gt; +#include &lt;wtf/text/StringHash.h&gt;
&gt; 
&gt; It seems some of these aren&apos;t necessary. Maybe you could remove them before landing?

Yes, some of these are unnecessary. I will remove them.

&gt;&gt; Source/WebCore/platform/graphics/clutter/TransformationMatrixClutter.cpp:34
&gt;&gt; +    matrix.xw = static_cast&lt;float&gt;(m41());
&gt; 
&gt; I&apos;m really not sure if these explicit casts are necessary...
&gt; 
&gt; I created this small program on my machine:
&gt; #include &lt;stdio.h&gt;
&gt; 
&gt; int main(int argc, char* argv[])
&gt; {
&gt;     double foo = 3.4;
&gt;     float bar;
&gt;     bar = foo;
&gt;     printf(&quot;bar: %f\n&quot;, bar);
&gt;     return 0;
&gt; }
&gt; 
&gt; and compiled it with g++ -Wall. I didn&apos;t see any warnings. Will you please try to remove them before landing?

There are some cases of using explicit cast to covert double to float in WebKit code, but it&apos;s okay to remove these explicit casts if there are no warnings when compiling the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726784</commentid>
    <comment_count>29</comment_count>
      <attachid>165404</attachid>
    <who name="Joone Hur">joone</who>
    <bug_when>2012-09-24 09:56:22 -0700</bug_when>
    <thetext>Created attachment 165404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726825</commentid>
    <comment_count>30</comment_count>
      <attachid>165404</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 10:44:55 -0700</bug_when>
    <thetext>Comment on attachment 165404
Patch

Clearing flags on attachment: 165404

Committed r129387: &lt;http://trac.webkit.org/changeset/129387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726826</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-24 10:45:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149960</attachid>
            <date>2012-06-28 08:56:12 -0700</date>
            <delta_ts>2012-08-19 19:37:47 -0700</delta_ts>
            <desc>Initial patch (no change log)</desc>
            <filename>ac_1.patch</filename>
            <type>text/plain</type>
            <size>61762</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDJhMTQzMTYuLjg0ZjRmZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjA4Myw4ICs2MDgzLDExIEBAIGlmIFVTRV9D
TFVUVEVSCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Ns
dXR0ZXIvR1JlZlB0ckNsdXR0ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jbHV0
dGVyL0dSZWZQdHJDbHV0dGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NsdXR0ZXIvR3JhcGhpY3NMYXllckFjdG9yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQWN0b3IuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAgXAot
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNs
dXR0ZXIuaAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhp
Y3NMYXllckNsdXR0ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1
dHRlci9UcmFuc2Zvcm1hdGlvbk1hdHJpeENsdXR0ZXIuY3BwCiBlbmRpZiAgIyBFTkQgVVNFX0NM
VVRURVIKIAogaWYgVVNFX1RFWFRVUkVfTUFQUEVSX0NBSVJPCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuY3BwCmluZGV4IDJhMzQxODYuLjUy
ZGI5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0
ckNsdXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0
ckNsdXR0ZXIuY3BwCkBAIC0yMCw3ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiR1JlZlB0ckNsdXR0ZXIuaCIKIAotI2luY2x1ZGUgPGNsdXR0ZXIvY2x1dHRlci5oPgor
I2luY2x1ZGUgIndlYmtpdGNsdXR0ZXJpbmNsdWRlLmgiCiAKIG5hbWVzcGFjZSBXVEYgewogCkBA
IC01MCw0ICs1MCwzMCBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cjxDbHV0dGVyQWN0b3I+
KENsdXR0ZXJBY3RvciogcHRyKQogICAgICAgICBnX29iamVjdF91bnJlZihwdHIpOwogfQogCit0
ZW1wbGF0ZSA8PiBHUmVmUHRyPEdyYXBoaWNzTGF5ZXJBY3Rvcj4gYWRvcHRHUmVmKEdyYXBoaWNz
TGF5ZXJBY3RvciogcHRyKQoreworICAgIGlmIChnX29iamVjdF9pc19mbG9hdGluZyhwdHIpKQor
ICAgICAgICBnX29iamVjdF9yZWZfc2luayhwdHIpOworCisgICAgcmV0dXJuIEdSZWZQdHI8R3Jh
cGhpY3NMYXllckFjdG9yPihwdHIsIEdSZWZQdHJBZG9wdCk7Cit9CisKK3RlbXBsYXRlIDw+IEdy
YXBoaWNzTGF5ZXJBY3RvciogcmVmR1B0cjxHcmFwaGljc0xheWVyQWN0b3I+KEdyYXBoaWNzTGF5
ZXJBY3RvciogcHRyKQoreworICAgIGlmIChwdHIpIHsKKyAgICAgICAgaWYgKGdfb2JqZWN0X2lz
X2Zsb2F0aW5nKHB0cikpCisgICAgICAgICAgICBnX29iamVjdF9yZWZfc2luayhwdHIpOworCisg
ICAgICAgIGdfb2JqZWN0X3JlZihwdHIpOworICAgIH0KKworICAgIHJldHVybiBwdHI7Cit9CisK
K3RlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdyYXBoaWNzTGF5ZXJBY3Rvcj4oR3JhcGhpY3NM
YXllckFjdG9yKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ19vYmplY3RfdW5yZWYo
cHRyKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2x1dHRl
ci9HUmVmUHRyQ2x1dHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2x1dHRlci9HUmVm
UHRyQ2x1dHRlci5oCmluZGV4IGJkZWM2NTQuLjM1ZmY4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmgKQEAgLTIzLDEyICsyMywxNiBA
QAogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIAogdHlwZWRlZiBzdHJ1Y3QgX0Ns
dXR0ZXJBY3RvciBDbHV0dGVyQWN0b3I7Cit0eXBlZGVmIHN0cnVjdCBfR3JhcGhpY3NMYXllckFj
dG9yIEdyYXBoaWNzTGF5ZXJBY3RvcjsKIAogbmFtZXNwYWNlIFdURiB7CiAKIHRlbXBsYXRlPD4g
Q2x1dHRlckFjdG9yKiByZWZHUHRyPENsdXR0ZXJBY3Rvcj4oQ2x1dHRlckFjdG9yKiBwdHIpOwog
dGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxDbHV0dGVyQWN0b3I+KENsdXR0ZXJBY3RvciogcHRy
KTsKIAordGVtcGxhdGU8PiBHcmFwaGljc0xheWVyQWN0b3IqIHJlZkdQdHI8R3JhcGhpY3NMYXll
ckFjdG9yPihHcmFwaGljc0xheWVyQWN0b3IqIHB0cik7Cit0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZH
UHRyPEdyYXBoaWNzTGF5ZXJBY3Rvcj4oR3JhcGhpY3NMYXllckFjdG9yKiBwdHIpOworCiB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1
dHRlci9HcmFwaGljc0xheWVyQWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjE2M2ZlMmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJBY3Rvci5jcHAKQEAgLTAs
MCArMSw3ODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMSBDb2xsYWJvcmEgTGltaXRlZAorICoK
KyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMi4xLCBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlz
IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1
dCBXSVRIT1VUIEFOWQorICogV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisg
KiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LAorICogSW5jLiwgNTEgRnJhbmtsaW4gU3QgLSBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckFjdG9yLmgi
CisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2x1dHRlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRl
eHRDYWlyby5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50LmgiCisjaW5j
bHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKworI2luY2x1ZGUgPGdsaWIvZ3ByaW50Zi5oPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworc3RhdGljIHZvaWQgY2x1dHRlcl9jb250YWluZXJfaWZh
Y2VfaW5pdChDbHV0dGVyQ29udGFpbmVySWZhY2UgKmlmYWNlKTsKK3N0YXRpYyB2b2lkIGNvbnRh
aW5lcl9hZGQoQ2x1dHRlckNvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBDbHV0dGVyQWN0b3IqIGFjdG9yKTsKK3N0YXRpYyB2b2lkIGNvbnRhaW5lcl9yZW1v
dmUoQ2x1dHRlckNvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDbHV0dGVyQWN0b3IqIGFjdG9yKTsKKworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoR3Jh
cGhpY3NMYXllckFjdG9yLCBncmFwaGljc19sYXllcl9hY3RvciwgQ0xVVFRFUl9UWVBFX1JFQ1RB
TkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRShDTFVU
VEVSX1RZUEVfQ09OVEFJTkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsdXR0ZXJfY29udGFpbmVyX2lmYWNlX2luaXQpKQorCisjZGVmaW5lIEdSQVBI
SUNTX0xBWUVSX0FDVE9SX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJ
VkFURSgob2JqKSwgR1JBUEhJQ1NfTEFZRVJfVFlQRV9BQ1RPUiwgR3JhcGhpY3NMYXllckFjdG9y
UHJpdmF0ZSkpCisKK3N0cnVjdCBfR3JhcGhpY3NMYXllckFjdG9yUHJpdmF0ZQoreworICAgIEdy
YXBoaWNzTGF5ZXJDbHV0dGVyOjpMYXllclR5cGUgbGF5ZXJUeXBlOworICAgIC8vIEd1YXJkIGFn
YWluc3QgY2hhbmdpbmcgc2l6ZSB3aGlsZSBhbGxvY2F0aW5nLgorICAgIGdib29sZWFuIGFsbG9j
YXRpbmc7CisKKyAgICBDbHV0dGVyQWN0b3IqIHRleHR1cmU7CisgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gc3VyZmFjZTsKKyAgICBDb2dsTWF0cml4KiBtYXRyaXg7CisKKyAgICBQbGF0Zm9y
bUNsdXR0ZXJMYXllckNsaWVudCogbGF5ZXJDbGllbnQ7CisKKyAgICBnYm9vbGVhbiBkcmF3c0Nv
bnRlbnQ7CisKKyAgICBnZmxvYXQgYW5jaG9yX3g7CisgICAgZ2Zsb2F0IGFuY2hvcl95OworICAg
IGdmbG9hdCBhbmNob3JfejsKKworICAgIGdmbG9hdCBzY3JvbGxfeDsKKyAgICBnZmxvYXQgc2Ny
b2xsX3k7CisKKyAgICBmbG9hdCB0cmFuc2xhdGVfeDsKKyAgICBmbG9hdCB0cmFuc2xhdGVfeTsK
KworfTsKKworZW51bQoreworICAgIFBST1BfMCwKKworICAgIFBST1BfVFJBTlNMQVRFX1gsCisg
ICAgUFJPUF9UUkFOU0xBVEVfWSwKKworICAgIFBST1BfTEFTVAorfTsKKworc3RhdGljIHZvaWQK
K2dyYXBoaWNzX2xheWVyX2FjdG9yX3NldF9wcm9wZXJ0eSAoR09iamVjdCAgICAqb2JqZWN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICBwcm9wX2lkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUgICAgICp2YWx1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1BhcmFtU3BlYyAqcHNwZWMpCit7CisgICAgR3JhcGhpY3NMYXllckFjdG9y
KiBsYXllciA9IEdSQVBISUNTX0xBWUVSX0FDVE9SKG9iamVjdCk7CisgICAgR3JhcGhpY3NMYXll
ckFjdG9yUHJpdmF0ZSogcHJpdiA9IGxheWVyLT5wcml2OworCisgICAgc3dpdGNoIChwcm9wX2lk
KSB7CisgICAgY2FzZSBQUk9QX1RSQU5TTEFURV9YOgorICAgICAgICBncmFwaGljc19sYXllcl9h
Y3Rvcl9zZXRfdHJhbnNsYXRlX3gobGF5ZXIsIGdfdmFsdWVfZ2V0X2Zsb2F0KHZhbHVlKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9UUkFOU0xBVEVfWToKKyAgICAgICAgZ3JhcGhp
Y3NfbGF5ZXJfYWN0b3Jfc2V0X3RyYW5zbGF0ZV95KGxheWVyLCBnX3ZhbHVlX2dldF9mbG9hdCh2
YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgIH0K
K30KKworc3RhdGljIHZvaWQKK2dyYXBoaWNzX2xheWVyX2FjdG9yX2dldF9wcm9wZXJ0eSAoR09i
amVjdCAgICAgICpvYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgIHBy
b3BfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAgICp2YWx1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgKnBzcGVjKQoreworICAgIEdyYXBoaWNzTGF5
ZXJBY3RvciogbGF5ZXIgPSBHUkFQSElDU19MQVlFUl9BQ1RPUihvYmplY3QpOworICAgIEdyYXBo
aWNzTGF5ZXJBY3RvclByaXZhdGUqIHByaXYgPSBsYXllci0+cHJpdjsKKworICAgIHN3aXRjaCAo
cHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9UUkFOU0xBVEVfWDoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfZmxvYXQodmFsdWUsIGdyYXBoaWNzX2xheWVyX2FjdG9yX2dldF90cmFuc2xhdGVfeChsYXll
cikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVFJBTlNMQVRFX1k6CisgICAgICAg
IGdfdmFsdWVfc2V0X2Zsb2F0KHZhbHVlLCBncmFwaGljc19sYXllcl9hY3Rvcl9nZXRfdHJhbnNs
YXRlX3kobGF5ZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICBkZWZhdWx0OgorICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwor
ICAgIH0KK30KKworCitzdGF0aWMgdm9pZAorZ3JhcGhpY3NfbGF5ZXJfYWN0b3JfZGlzcG9zZSAo
R09iamVjdCAqb2JqZWN0KQoreworICAgIEdyYXBoaWNzTGF5ZXJBY3RvciogbGF5ZXIgPSBHUkFQ
SElDU19MQVlFUl9BQ1RPUihvYmplY3QpOworICAgIEdyYXBoaWNzTGF5ZXJBY3RvclByaXZhdGUq
IHByaXYgPSBsYXllci0+cHJpdjsKKworICAgIGlmIChwcml2LT50ZXh0dXJlKSB7CisgICAgICAg
IGNsdXR0ZXJfYWN0b3JfdW5wYXJlbnQocHJpdi0+dGV4dHVyZSk7CisgICAgICAgIHByaXYtPnRl
eHR1cmUgPSAwOworICAgIH0KKworICAgIHByaXYtPnN1cmZhY2UuY2xlYXIoKTsKKworICAgIGlm
IChwcml2LT5tYXRyaXgpCisgICAgICAgY29nbF9tYXRyaXhfZnJlZShwcml2LT5tYXRyaXgpOwor
CisgICAgR19PQkpFQ1RfQ0xBU1MgKGdyYXBoaWNzX2xheWVyX2FjdG9yX3BhcmVudF9jbGFzcykt
PmRpc3Bvc2UgKG9iamVjdCk7Cit9CisKKy8vIENvcGllZCBmcm9tIGNhaXJvLgorI2RlZmluZSBN
QVhfSU1BR0VfU0laRSAzMjc2NworCitzdGF0aWMgdm9pZAorZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jf
YWxsb2NhdGUgKENsdXR0ZXJBY3RvciAgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQ2x1dHRlckFjdG9yQm94ICpib3gsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2x1dHRlckFsbG9jYXRpb25GbGFncyBmbGFncykKK3sKKyAgICBHcmFwaGljc0xh
eWVyQWN0b3IqIGxheWVyID0gR1JBUEhJQ1NfTEFZRVJfQUNUT1Ioc2VsZik7CisgICAgR3JhcGhp
Y3NMYXllckFjdG9yUHJpdmF0ZSogcHJpdiA9IGxheWVyLT5wcml2OworCisgICAgcHJpdi0+YWxs
b2NhdGluZyA9IFRSVUU7CisKKyAgICBDTFVUVEVSX0FDVE9SX0NMQVNTKGdyYXBoaWNzX2xheWVy
X2FjdG9yX3BhcmVudF9jbGFzcyktPmFsbG9jYXRlKHNlbGYsIGJveCwgZmxhZ3MpOworCisgICAg
aWYgKHByaXYtPnRleHR1cmUpIHsKKyAgICAgICAgLy8gVGhlIHRleHR1cmUgb2NjdXBpZXMgdGhl
IHdob2xlIGFyZWEsIGJ1dCBpcyBwb3NpdGlvbmVkIGF0IDAsMAorICAgICAgICAvLyByZWxhdGl2
ZSB0byB0aGUgbGF5ZXIgYWN0b3IuCisgICAgICAgIENsdXR0ZXJBY3RvckJveCB0ZXh0dXJlQm94
ID0geyAwLjAsIDAuMCwgYm94LT54MiAtIGJveC0+eDEsIGJveC0+eTIgLSBib3gtPnkxIH07CisK
KyAgICAgICAgLy8gcHJvdGVjdCBhZ2FpbnN0IDB4MAorICAgICAgICBpZiAoIXRleHR1cmVCb3gu
eDIpCisgICAgICAgICAgICB0ZXh0dXJlQm94LngyID0gMTsKKworICAgICAgICBpZiAoIXRleHR1
cmVCb3gueTIpCisgICAgICAgICAgICB0ZXh0dXJlQm94LnkyID0gMTsKKworICAgICAgICAvLyBG
SVhNRTogc29tZSBwYWdlcyBtYWtlIHVzIGNyZWF0ZSB2ZXJ5IGJpZyBsYXllcnMsIHdoaWNoCisg
ICAgICAgIC8vIGV4Y2VlZHMgY2Fpcm8ncyBsaW1pdHMsIGNoZWNrIGZvciB0aGF0IGhlcmUuCisg
ICAgICAgIGlmICh0ZXh0dXJlQm94LngyID4gTUFYX0lNQUdFX1NJWkUpIHsKKyAgICAgICAgICAg
IGdfd2FybmluZyAoIkxheWVyICVzIGhhcyBhIHdpZHRoIHRoYXQgZXhjZWVkcyBjYWlybydzIGxp
bWl0czogJS4yZiIsIGNsdXR0ZXJfYWN0b3JfZ2V0X25hbWUoc2VsZiksIHRleHR1cmVCb3gueDIp
OworICAgICAgICAgICAgdGV4dHVyZUJveC54MiA9IE1BWF9JTUFHRV9TSVpFOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHRleHR1cmVCb3gueTIgPiBNQVhfSU1BR0VfU0laRSkgeworICAgICAg
ICAgICAgZ193YXJuaW5nICgiTGF5ZXIgJXMgaGFzIGEgaGVpZ2h0IHRoYXQgZXhjZWVkcyBjYWly
bydzIGxpbWl0czogJS4yZiIsIGNsdXR0ZXJfYWN0b3JfZ2V0X25hbWUoc2VsZiksIHRleHR1cmVC
b3gueTIpOworICAgICAgICAgICAgdGV4dHVyZUJveC55MiA9IE1BWF9JTUFHRV9TSVpFOworICAg
ICAgICB9CisKKyAgICAgICAgY2x1dHRlcl9hY3Rvcl9hbGxvY2F0ZShwcml2LT50ZXh0dXJlLCAm
dGV4dHVyZUJveCwgZmxhZ3MpOworICAgIH0KKyAgICAKKworICAgIC8vIEZJWE1FOiBtYXliZSB3
ZSBjYW4gY2FjaGUgY2hpbGRyZW4gYWxsb2NhdGlvbiBhbmQgbm90IGNhbGwKKyAgICAvLyBhbGxv
Y2F0ZSBvbiB0aGVtIHRoaXMgb2Z0ZW4/CisgICAgZm9yIChHTGlzdCogbGlzdCA9IGxheWVyLT5j
aGlsZHJlbjsgbGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpIHsKKyAgICAgICAgIENsdXR0ZXJBY3Rv
ciogY2hpbGQgPSBDTFVUVEVSX0FDVE9SKGxpc3QtPmRhdGEpOworCisgICAgICAgICBmbG9hdCBj
aGlsZFdpZHRoID0gY2x1dHRlcl9hY3Rvcl9nZXRfd2lkdGgoY2hpbGQpOworICAgICAgICAgZmxv
YXQgY2hpbGRIZWlnaHQgPSBjbHV0dGVyX2FjdG9yX2dldF9oZWlnaHQoY2hpbGQpOworCisgICAg
ICAgICBDbHV0dGVyQWN0b3JCb3ggY2hpbGRCb3g7CisgICAgICAgICBjaGlsZEJveC54MSA9IGNs
dXR0ZXJfYWN0b3JfZ2V0X3goY2hpbGQpOworICAgICAgICAgY2hpbGRCb3gueTEgPSBjbHV0dGVy
X2FjdG9yX2dldF95KGNoaWxkKTsKKyAgICAgICAgIGNoaWxkQm94LngyID0gY2hpbGRCb3gueDEg
KyBjaGlsZFdpZHRoOworICAgICAgICAgY2hpbGRCb3gueTIgPSBjaGlsZEJveC55MSArIGNoaWxk
SGVpZ2h0OworCisgICAgICAgICBjbHV0dGVyX2FjdG9yX2FsbG9jYXRlKGNoaWxkLCAmY2hpbGRC
b3gsIGZsYWdzKTsKKyAgICB9CisKKyAgICBwcml2LT5hbGxvY2F0aW5nID0gRkFMU0U7Cit9CisK
K3N0YXRpYyB2b2lkIGdyYXBoaWNzX2xheWVyX2FjdG9yX2FwcGx5X3RyYW5zZm9ybShDbHV0dGVy
QWN0b3IgKmFjdG9yLCBDb2dsTWF0cml4ICptYXRyaXgpCit7CisgICAgR3JhcGhpY3NMYXllckFj
dG9yUHJpdmF0ZSogcHJpdiA9IEdSQVBISUNTX0xBWUVSX0FDVE9SKGFjdG9yKS0+cHJpdjsKKwor
CisgICAgLy8gQXBwbHkgdHJhbnNsYXRpb24gYW5kIHNjcm9sbGluZyBhcyBhIHNpbmdsZSB0cmFu
c2xhdGlvbi4gVGhlc2UKKyAgICAvLyBuZWVkIHRvIGNvbWUgYmVmb3JlIGFueXRoaW5nIGVsc2Us
IG90aGVyd2lzZSB0aGV5J2xsIGJlCisgICAgLy8gYWZmZWN0ZWQgYnkgb3RoZXIgb3BlcmF0aW9u
cyBzdWNoIGFzIHNjYWxpbmcsIHdoaWNoIGlzIG5vdCB3aGF0CisgICAgLy8gd2Ugd2FudC4KKyAg
ICBmbG9hdCB0cmFuc2xhdGVYID0gcHJpdi0+c2Nyb2xsX3ggKyBwcml2LT50cmFuc2xhdGVfeDsK
KyAgICBmbG9hdCB0cmFuc2xhdGVZID0gcHJpdi0+c2Nyb2xsX3kgKyBwcml2LT50cmFuc2xhdGVf
eTsKKworICAgIGlmICh0cmFuc2xhdGVYIHx8IHRyYW5zbGF0ZVkpCisgICAgICAgIGNvZ2xfbWF0
cml4X3RyYW5zbGF0ZShtYXRyaXgsIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVksIDApOworCisgICAg
Q0xVVFRFUl9BQ1RPUl9DTEFTUyAoZ3JhcGhpY3NfbGF5ZXJfYWN0b3JfcGFyZW50X2NsYXNzKS0+
YXBwbHlfdHJhbnNmb3JtIChhY3RvciwgbWF0cml4KTsKKworICAgIGdmbG9hdCB3aWR0aCA9IGNs
dXR0ZXJfYWN0b3JfZ2V0X3dpZHRoKGFjdG9yKTsKKyAgICBnZmxvYXQgaGVpZ2h0ID0gY2x1dHRl
cl9hY3Rvcl9nZXRfaGVpZ2h0KGFjdG9yKTsKKyAgICBpZiAod2lkdGggPD0gMS4wIHx8IGhlaWdo
dCA8PSAxLjApCisgICAgICAgIHJldHVybjsKKworICAgIGdmbG9hdCBwaXZvdF94LCBwaXZvdF95
OworICAgIHBpdm90X3ggPSB3aWR0aCAqIHByaXYtPmFuY2hvcl94OworICAgIHBpdm90X3kgPSBo
ZWlnaHQgKiBwcml2LT5hbmNob3JfeTsKKworICAgIGlmIChwcml2LT5tYXRyaXgpIHsKKyAgICAg
ICAgQ29nbE1hdHJpeCogbG9jYWxNYXRyaXg7CisgICAgICAgIC8vIENTUzMgdHJhbmZvcm0tc3R5
bGUgY2FuIGJlIGNoYW5nZWQgb24gdGhlIGZseSwgCisgICAgICAgIC8vIHNvIHdlIGhhdmUgdG8g
Y29weSBwcml2LT5tYXRyaXggaW4gb3JkZXIgdG8gcmVjb3ZlciB6LWF4aXMuIAorICAgICAgICBs
b2NhbE1hdHJpeCA9IGNvZ2xfbWF0cml4X2NvcHkocHJpdi0+bWF0cml4KTsKKworICAgICAgICBj
b2dsX21hdHJpeF90cmFuc2xhdGUobWF0cml4LCBwaXZvdF94LCBwaXZvdF95LCBwcml2LT5hbmNo
b3Jfeik7CisgICAgICAgIGNvZ2xfbWF0cml4X211bHRpcGx5KG1hdHJpeCwgbWF0cml4LCBsb2Nh
bE1hdHJpeCk7CisgICAgICAgIGNvZ2xfbWF0cml4X3RyYW5zbGF0ZShtYXRyaXgsIC1waXZvdF94
LCAtcGl2b3RfeSwgLXByaXYtPmFuY2hvcl96KTsKKyAgICAgICAgY29nbF9tYXRyaXhfZnJlZShs
b2NhbE1hdHJpeCk7CisgICAgfQorfQorCisvLyBEcmF3IGNvbnRlbnQgaW50byB0aGUgbGF5ZXIu
CitzdGF0aWMgdm9pZCBkcmF3TGF5ZXJDb250ZW50cyhDbHV0dGVyQWN0b3IqIGFjdG9yLCBHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAgR3JhcGhpY3NMYXllckFjdG9yUHJpdmF0ZSog
cHJpdiA9IEdSQVBISUNTX0xBWUVSX0FDVE9SKGFjdG9yKS0+cHJpdjsKKworICAgIGlmICghcHJp
di0+ZHJhd3NDb250ZW50IHx8ICFwcml2LT5sYXllckNsaWVudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZ2Zsb2F0IHdpZHRoID0gY2x1dHRlcl9hY3Rvcl9nZXRfd2lkdGgoYWN0b3IpOworICAg
IGdmbG9hdCBoZWlnaHQgPSBjbHV0dGVyX2FjdG9yX2dldF9oZWlnaHQoYWN0b3IpOworICAgIElu
dFJlY3QgY2xpcCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIC8vIEFwcGx5IHRoZSBwYWlu
dGVkIGNvbnRlbnQgdG8gdGhlIGxheWVyLgorICAgIHByaXYtPmxheWVyQ2xpZW50LT5wbGF0Zm9y
bUNsdXR0ZXJMYXllclBhaW50Q29udGVudHMoY29udGV4dCwgY2xpcCk7Cit9CisKK3N0YXRpYyBn
Ym9vbGVhbiBncmFwaGljc19sYXllcl9hY3Rvcl9kcmF3KENsdXR0ZXJDYWlyb1RleHR1cmUqIHRl
eHR1cmUsIGNhaXJvX3QqIGNyLCBHcmFwaGljc0xheWVyQWN0b3IqIGxheWVyKQoreworICAgIENs
dXR0ZXJBY3RvciogYWN0b3IgPSBDTFVUVEVSX0FDVE9SKGxheWVyKTsKKyAgICBnZmxvYXQgd2lk
dGggPSBjbHV0dGVyX2FjdG9yX2dldF93aWR0aChhY3Rvcik7CisgICAgZ2Zsb2F0IGhlaWdodCA9
IGNsdXR0ZXJfYWN0b3JfZ2V0X2hlaWdodChhY3Rvcik7CisKKyAgICBpZiAod2lkdGggPT0gMC4w
IHx8IGhlaWdodCA9PSAwLjApCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIEdyYXBoaWNz
TGF5ZXJBY3RvclByaXZhdGUqIHByaXYgPSBsYXllci0+cHJpdjsKKyAgICBHcmFwaGljc0NvbnRl
eHQgY29udGV4dChjcik7CisKKyAgICBjbHV0dGVyX2NhaXJvX3RleHR1cmVfY2xlYXIodGV4dHVy
ZSk7CisKKyAgICBpZiAocHJpdi0+c3VyZmFjZSkgeworICAgICAgICBpbnQgc3VyZmFjZV93aWR0
aCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHByaXYtPnN1cmZhY2UuZ2V0KCkpOwor
ICAgICAgICBpbnQgc3VyZmFjZV9oZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWln
aHQocHJpdi0+c3VyZmFjZS5nZXQoKSk7CisKKyAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMC4w
LCAwLjAsIHN0YXRpY19jYXN0PGZsb2F0PihzdXJmYWNlX3dpZHRoKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHN1cmZhY2VfaGVpZ2h0KSk7CisgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdCgwLjAsIDAu
MCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRy
YXdTdXJmYWNlVG9Db250ZXh0KHByaXYtPnN1cmZhY2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0
LCAmY29udGV4dCk7CisgICAgfQorCisgICAgaWYgKHByaXYtPmxheWVyVHlwZSA9PSBHcmFwaGlj
c0xheWVyQ2x1dHRlcjo6TGF5ZXJUeXBlV2ViTGF5ZXIpCisgICAgICAgIGRyYXdMYXllckNvbnRl
bnRzKGFjdG9yLCBjb250ZXh0KTsKKworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9p
ZCBncmFwaGljc19sYXllcl9hY3Rvcl9wYWludChDbHV0dGVyQWN0b3IqIGFjdG9yKQoreworICAg
IEdyYXBoaWNzTGF5ZXJBY3RvciogZ3JhcGhpY3NMYXllciA9IEdSQVBISUNTX0xBWUVSX0FDVE9S
KGFjdG9yKTsKKyAgICBHcmFwaGljc0xheWVyQWN0b3JQcml2YXRlKiBwcml2ID0gR1JBUEhJQ1Nf
TEFZRVJfQUNUT1IoYWN0b3IpLT5wcml2OworCisgICAgLy8gUGFpbnQgdGhlIHRleHR1cmUgaW4g
Y2FzZSB3ZSBoYXZlIGEgYm9yZGVyLiBUaGlzIHdpbGwgYmUgdGhlIGNhc2Ugd2hlbiBkZWJ1Z2dp
bmcgYm9yZGVycworICAgIC8vIGFyZSB0dXJuZWQgb24gdGhhdCB3ZSB3YW50IHRvIHNlZS4KKyAg
ICBpZiAocHJpdi0+dGV4dHVyZSkKKyAgICAgICAgY2x1dHRlcl9hY3Rvcl9wYWludChwcml2LT50
ZXh0dXJlKTsKKworICAgIEdMaXN0KiBsaXN0OworICAgIGZvciAobGlzdCA9IGdyYXBoaWNzTGF5
ZXItPmNoaWxkcmVuOyBsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dCkgeworICAgICAgICAgQ2x1dHRl
ckFjdG9yKiBjaGlsZCA9IENMVVRURVJfQUNUT1IobGlzdC0+ZGF0YSk7CisgICAgICAgICBjbHV0
dGVyX2FjdG9yX3BhaW50KGNoaWxkKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitncmFwaGlj
c19sYXllcl9hY3Rvcl9waWNrKENsdXR0ZXJBY3RvciogYWN0b3IsIGNvbnN0IENsdXR0ZXJDb2xv
ciogcGljaykKK3sKKyAgICBHcmFwaGljc0xheWVyQWN0b3IqIGdyYXBoaWNzTGF5ZXIgPSBHUkFQ
SElDU19MQVlFUl9BQ1RPUihhY3Rvcik7CisgICAgR3JhcGhpY3NMYXllckFjdG9yUHJpdmF0ZSog
cHJpdiA9IGdyYXBoaWNzTGF5ZXItPnByaXY7CisKKyAgICBDTFVUVEVSX0FDVE9SX0NMQVNTKGdy
YXBoaWNzX2xheWVyX2FjdG9yX3BhcmVudF9jbGFzcyktPnBpY2soYWN0b3IsIHBpY2spOworCisg
ICAgaWYgKHByaXYtPnRleHR1cmUpCisgICAgICAgIGNsdXR0ZXJfYWN0b3JfcGFpbnQocHJpdi0+
dGV4dHVyZSk7CisKKyAgICBHTGlzdCogbGlzdDsKKyAgICBmb3IgKGxpc3QgPSBncmFwaGljc0xh
eWVyLT5jaGlsZHJlbjsgbGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpIHsKKyAgICAgICAgIENsdXR0
ZXJBY3RvciogY2hpbGQgPSBDTFVUVEVSX0FDVE9SKGxpc3QtPmRhdGEpOworICAgICAgICAgY2x1
dHRlcl9hY3Rvcl9wYWludChjaGlsZCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorZ3JhcGhp
Y3NfbGF5ZXJfYWN0b3Jfc2hvd19hbGwoQ2x1dHRlckFjdG9yKiBhY3RvcikKK3sKKyAgICBHcmFw
aGljc0xheWVyQWN0b3IqIGdyYXBoaWNzTGF5ZXIgPSBHUkFQSElDU19MQVlFUl9BQ1RPUihhY3Rv
cik7CisgICAgR0xpc3QqIGxpc3Q7CisgICAgCisgICAgZm9yIChsaXN0ID0gZ3JhcGhpY3NMYXll
ci0+Y2hpbGRyZW47IGxpc3Q7IGxpc3QgPSBsaXN0LT5uZXh0KSB7CisgICAgICAgICBDbHV0dGVy
QWN0b3IqIGNoaWxkID0gQ0xVVFRFUl9BQ1RPUihsaXN0LT5kYXRhKTsKKyAgICAgICAgIGNsdXR0
ZXJfYWN0b3Jfc2hvdyhjaGlsZCk7CisgICAgfQorICAgIAorICAgIGNsdXR0ZXJfYWN0b3Jfc2hv
dyhhY3Rvcik7Cit9CisKK3N0YXRpYyB2b2lkCitncmFwaGljc19sYXllcl9hY3Rvcl9oaWRlX2Fs
bChDbHV0dGVyQWN0b3IqIGFjdG9yKQoreworICAgIEdyYXBoaWNzTGF5ZXJBY3RvciogZ3JhcGhp
Y3NMYXllciA9IEdSQVBISUNTX0xBWUVSX0FDVE9SKGFjdG9yKTsKKyAgICBHTGlzdCogbGlzdDsK
KyAgICAKKyAgICBmb3IgKGxpc3QgPSBncmFwaGljc0xheWVyLT5jaGlsZHJlbjsgbGlzdDsgbGlz
dCA9IGxpc3QtPm5leHQpIHsKKyAgICAgICAgIENsdXR0ZXJBY3RvciogY2hpbGQgPSBDTFVUVEVS
X0FDVE9SKGxpc3QtPmRhdGEpOworICAgICAgICAgY2x1dHRlcl9hY3Rvcl9oaWRlKGNoaWxkKTsK
KyAgICB9CisgICAgCisgICAgY2x1dHRlcl9hY3Rvcl9oaWRlKGFjdG9yKTsKK30KKworc3RhdGlj
IHZvaWQKK2dyYXBoaWNzX2xheWVyX2FjdG9yX2NsYXNzX2luaXQgKEdyYXBoaWNzTGF5ZXJBY3Rv
ckNsYXNzICprbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MgKm9iamVjdF9jbGFzcyA9IEdfT0JK
RUNUX0NMQVNTIChrbGFzcyk7CisgICAgQ2x1dHRlckFjdG9yQ2xhc3MgKmFjdG9yX2NsYXNzID0g
Q0xVVFRFUl9BQ1RPUl9DTEFTUyAoa2xhc3MpOworICAgIEdQYXJhbVNwZWMgKnBzcGVjOworICAg
IAorICAgIG9iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jf
Z2V0X3Byb3BlcnR5OworICAgIG9iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3JhcGhpY3Nf
bGF5ZXJfYWN0b3Jfc2V0X3Byb3BlcnR5OworICAgIG9iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IGdy
YXBoaWNzX2xheWVyX2FjdG9yX2Rpc3Bvc2U7CisgICAgYWN0b3JfY2xhc3MtPmFwcGx5X3RyYW5z
Zm9ybSA9IGdyYXBoaWNzX2xheWVyX2FjdG9yX2FwcGx5X3RyYW5zZm9ybTsKKyAgICBhY3Rvcl9j
bGFzcy0+YWxsb2NhdGUgPSBncmFwaGljc19sYXllcl9hY3Rvcl9hbGxvY2F0ZTsKKyAgICBhY3Rv
cl9jbGFzcy0+cGFpbnQgPSBncmFwaGljc19sYXllcl9hY3Rvcl9wYWludDsKKyAgICBhY3Rvcl9j
bGFzcy0+cGljayA9IGdyYXBoaWNzX2xheWVyX2FjdG9yX3BpY2s7CisgICAgYWN0b3JfY2xhc3Mt
PnNob3dfYWxsID0gZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jfc2hvd19hbGw7CisgICAgYWN0b3JfY2xh
c3MtPmhpZGVfYWxsID0gZ3JhcGhpY3NfbGF5ZXJfYWN0b3JfaGlkZV9hbGw7CisKKyAgICBnX3R5
cGVfY2xhc3NfYWRkX3ByaXZhdGUgKGtsYXNzLCBzaXplb2YgKEdyYXBoaWNzTGF5ZXJBY3RvclBy
aXZhdGUpKTsKKworCisgICAgcHNwZWMgPSBnX3BhcmFtX3NwZWNfZmxvYXQoInRyYW5zbGF0ZS14
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJhbnNsYXRlIFgiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJUcmFuc2xhdGlvbiB2YWx1ZSBmb3IgdGhlIFggYXhp
cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1HX01BWEZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR19NQVhGTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDAuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PEdQYXJhbUZsYWdzPihHX1BBUkFNX1JFQURXUklURSkpOworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0X2NsYXNzLCBQUk9QX1RSQU5TTEFURV9YLCBw
c3BlYyk7CisKKyAgICBwc3BlYyA9IGdfcGFyYW1fc3BlY19mbG9hdCgidHJhbnNsYXRlLXkiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUcmFuc2xhdGUgWSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlRyYW5zbGF0aW9uIHZhbHVlIGZvciB0aGUgWSBheWlzIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtR19NQVhGTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR19NQVhGTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEV1JJVEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KG9iamVjdF9jbGFzcywgUFJPUF9UUkFOU0xBVEVfWSwgcHNwZWMpOwor
fQorCitzdGF0aWMgdm9pZAorc2l6ZUNoYW5nZWRDYWxsYmFjayhDbHV0dGVyQWN0b3IqIGFjdG9y
LCBHUGFyYW1TcGVjKiBwc3BlYywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBHcmFwaGljc0xheWVy
QWN0b3IqIGxheWVyID0gR1JBUEhJQ1NfTEFZRVJfQUNUT1IoYWN0b3IpOworICAgIGdyYXBoaWNz
X2xheWVyX2FjdG9yX3NldF9hbmNob3JfcG9pbnQobGF5ZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+cHJpdi0+YW5jaG9yX3gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+cHJpdi0+YW5jaG9yX3ksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+cHJpdi0+YW5j
aG9yX3opOworfQorCitzdGF0aWMgdm9pZAorZ3JhcGhpY3NfbGF5ZXJfYWN0b3JfaW5pdCAoR3Jh
cGhpY3NMYXllckFjdG9yICpzZWxmKQoreworICAgIEdyYXBoaWNzTGF5ZXJBY3RvclByaXZhdGUq
IHByaXYgPSBzZWxmLT5wcml2ID0gR1JBUEhJQ1NfTEFZRVJfQUNUT1JfR0VUX1BSSVZBVEUoc2Vs
Zik7CisKKyAgICBjbHV0dGVyX2FjdG9yX3NldF9yZWFjdGl2ZShDTFVUVEVSX0FDVE9SKHNlbGYp
LCBGQUxTRSk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KHNlbGYsICJub3RpZnk6OndpZHRoIiwg
R19DQUxMQkFDSyhzaXplQ2hhbmdlZENhbGxiYWNrKSwgMCk7CisgICAgZ19zaWduYWxfY29ubmVj
dChzZWxmLCAibm90aWZ5OjpoZWlnaHQiLCBHX0NBTExCQUNLKHNpemVDaGFuZ2VkQ2FsbGJhY2sp
LCAwKTsKKworICAgIC8vIERlZmF1bHQgdXNlZCBieSBHcmFwaGljc0xheWVyLgorICAgIGdyYXBo
aWNzX2xheWVyX2FjdG9yX3NldF9hbmNob3JfcG9pbnQoc2VsZiwgMC41LCAwLjUsIDAuMCk7CisK
KyAgICBwcml2LT5zY3JvbGxfeCA9IDAuMDsKKyAgICBwcml2LT5zY3JvbGxfeSA9IDAuMDsKKwor
ICAgIHByaXYtPnRyYW5zbGF0ZV94ID0gMC4wOworICAgIHByaXYtPnRyYW5zbGF0ZV95ID0gMC4w
OworICAgIAorICAgIHByaXYtPm1hdHJpeCA9IE5VTEw7Cit9CisKK0dyYXBoaWNzTGF5ZXJBY3Rv
cioKK2dyYXBoaWNzX2xheWVyX2FjdG9yX25ldyhHcmFwaGljc0xheWVyQ2x1dHRlcjo6TGF5ZXJU
eXBlIHR5cGUpCit7CisgICAgR3JhcGhpY3NMYXllckFjdG9yKiBsYXllciA9IEdSQVBISUNTX0xB
WUVSX0FDVE9SKGdfb2JqZWN0X25ldyAoR1JBUEhJQ1NfTEFZRVJfVFlQRV9BQ1RPUiwgTlVMTCkp
OworICAgIEdyYXBoaWNzTGF5ZXJBY3RvclByaXZhdGUqIHByaXYgPSBsYXllci0+cHJpdjsKKwor
ICAgIHByaXYtPmxheWVyVHlwZSA9IHR5cGU7CisKKyAgICAvLyBGb3IgdmlkZW8gbGF5ZXJzIHdl
IGRvbid0IHdhbnQgdGhlIGNhaXJvIHRleHR1cmUsIGJ1dCBhIHJlZ3VsYXIgb25lLgorICAgIGlm
IChwcml2LT5sYXllclR5cGUgPT0gR3JhcGhpY3NMYXllckNsdXR0ZXI6OkxheWVyVHlwZVZpZGVv
TGF5ZXIpIHsKKyAgICAgICAgcHJpdi0+dGV4dHVyZSA9IGNsdXR0ZXJfdGV4dHVyZV9uZXcoKTsK
KyAgICAgICAgY2x1dHRlcl9hY3Rvcl9zZXRfcGFyZW50KHByaXYtPnRleHR1cmUsIENMVVRURVJf
QUNUT1IobGF5ZXIpKTsKKyAgICB9CisKKyAgICByZXR1cm4gbGF5ZXI7Cit9CisKK0dyYXBoaWNz
TGF5ZXJBY3RvcioKK2dyYXBoaWNzX2xheWVyX2FjdG9yX25ld193aXRoX2NsaWVudChHcmFwaGlj
c0xheWVyQ2x1dHRlcjo6TGF5ZXJUeXBlIHR5cGUsIFBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50
KiBsYXllckNsaWVudCkKK3sKKyAgICBHcmFwaGljc0xheWVyQWN0b3IqIGxheWVyID0gZ3JhcGhp
Y3NfbGF5ZXJfYWN0b3JfbmV3KHR5cGUpOworICAgIGdyYXBoaWNzX2xheWVyX2FjdG9yX3NldF9j
bGllbnQobGF5ZXIsIGxheWVyQ2xpZW50KTsKKworICAgIHJldHVybiBsYXllcjsKK30KKwordm9p
ZAorZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jfc2V0X2NsaWVudChHcmFwaGljc0xheWVyQWN0b3IqIGxh
eWVyLCBQbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudCogY2xpZW50KQoreworICAgIGxheWVyLT5w
cml2LT5sYXllckNsaWVudCA9IGNsaWVudDsKK30KKworUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGll
bnQqCitncmFwaGljc19sYXllcl9hY3Rvcl9nZXRfY2xpZW50KEdyYXBoaWNzTGF5ZXJBY3Rvciog
bGF5ZXIpCit7CisgICAgcmV0dXJuIGxheWVyLT5wcml2LT5sYXllckNsaWVudDsKK30KKworLy8g
SW4gb3VyIGNvbnRhaW5lciBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gd2UgcXVldWUgYSByZWRy
YXcgaW5zdGVhZAorLy8gb2YgYSByZWxheW91dCwgc2luY2Ugd2UgZG8gbm90IHVzZSBhbnkga2lu
ZCBvZiBmbG93IGxheW91dCAtIHdlCisvLyBhbHdheXMgaGF2ZSBmaXhlZCBhbGxvY2F0aW9ucyBz
ZXQgYnkgdGhlIEdyYXBoaWNzTGF5ZXIuCitzdGF0aWMgdm9pZCBjb250YWluZXJfYWRkKENsdXR0
ZXJDb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQ2x1dHRl
ckFjdG9yKiBhY3RvcikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKENMVVRURVJfSVNfQ09OVEFJ
TkVSKGNvbnRhaW5lcikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQ0xVVFRFUl9JU19BQ1RPUihh
Y3RvcikpOworCisgICAgR3JhcGhpY3NMYXllckFjdG9yKiBncmFwaGljc0xheWVyID0gR1JBUEhJ
Q1NfTEFZRVJfQUNUT1IoY29udGFpbmVyKTsKKworICAgIGdfb2JqZWN0X3JlZihhY3Rvcik7CisK
KyAgICBncmFwaGljc0xheWVyLT5jaGlsZHJlbiA9IGdfbGlzdF9hcHBlbmQoZ3JhcGhpY3NMYXll
ci0+Y2hpbGRyZW4sIGFjdG9yKTsKKyAgICBjbHV0dGVyX2FjdG9yX3NldF9wYXJlbnQoYWN0b3Is
IENMVVRURVJfQUNUT1IoY29udGFpbmVyKSk7CisgICAgY2x1dHRlcl9jb250YWluZXJfc29ydF9k
ZXB0aF9vcmRlcihjb250YWluZXIpOworICAgIGNsdXR0ZXJfYWN0b3JfcXVldWVfcmVkcmF3KENM
VVRURVJfQUNUT1IoY29udGFpbmVyKSk7CisKKyAgICBnX29iamVjdF91bnJlZihhY3Rvcik7Cit9
CisKK3N0YXRpYyB2b2lkIGNvbnRhaW5lcl9yZW1vdmUoQ2x1dHRlckNvbnRhaW5lciogY29udGFp
bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbHV0dGVyQWN0b3IqIGFjdG9yKQor
eworICAgIEdyYXBoaWNzTGF5ZXJBY3RvciogZ3JhcGhpY3NMYXllciA9IEdSQVBISUNTX0xBWUVS
X0FDVE9SKGNvbnRhaW5lcik7CisKKyAgICBnX29iamVjdF9yZWYoYWN0b3IpOworICAgIAorICAg
IGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuID0gZ19saXN0X3JlbW92ZShncmFwaGljc0xheWVyLT5j
aGlsZHJlbiwgYWN0b3IpOworICAgIGNsdXR0ZXJfYWN0b3JfdW5wYXJlbnQoYWN0b3IpOworICAg
IGNsdXR0ZXJfYWN0b3JfcXVldWVfcmVkcmF3KENMVVRURVJfQUNUT1IoY29udGFpbmVyKSk7CisK
KyAgICBnX29iamVjdF91bnJlZihhY3Rvcik7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnRhaW5lcl9y
ZXBsYWNlKENsdXR0ZXJDb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ2x1dHRlckFjdG9yKiBvbGRBY3RvciwgQ2x1dHRlckFjdG9yKiBuZXdBY3RvcikK
K3sKKyAgICBHcmFwaGljc0xheWVyQWN0b3IqIGdyYXBoaWNzTGF5ZXIgPSBHUkFQSElDU19MQVlF
Ul9BQ1RPUihjb250YWluZXIpOworCisgICAgZ19vYmplY3RfcmVmKG9sZEFjdG9yKTsKKyAgICBn
X29iamVjdF9yZWYobmV3QWN0b3IpOworICAgIAorICAgIEdMaXN0KiBsaXN0ID0gZ19saXN0X2Zp
bmQoZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4sIG9sZEFjdG9yKTsgCisgICAgbGlzdC0+ZGF0YSA9
IG5ld0FjdG9yOworICAgIGNsdXR0ZXJfYWN0b3JfdW5wYXJlbnQob2xkQWN0b3IpOworICAgIGNs
dXR0ZXJfYWN0b3Jfc2V0X3BhcmVudChuZXdBY3RvciwgQ0xVVFRFUl9BQ1RPUihncmFwaGljc0xh
eWVyKSk7CisgICAgY2x1dHRlcl9hY3Rvcl9xdWV1ZV9yZWRyYXcoQ0xVVFRFUl9BQ1RPUihncmFw
aGljc0xheWVyKSk7CisgICAgCisgICAgZ19vYmplY3RfdW5yZWYobmV3QWN0b3IpOworfQorCitz
dGF0aWMgdm9pZCBjb250YWluZXJfZm9yZWFjaChDbHV0dGVyQ29udGFpbmVyKiBjb250YWluZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbHV0dGVyQ2FsbGJhY2sgY2FsbGJhY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7Cisg
ICAgR3JhcGhpY3NMYXllckFjdG9yKiBncmFwaGljc0xheWVyID0gR1JBUEhJQ1NfTEFZRVJfQUNU
T1IoY29udGFpbmVyKTsKKyAgICBHTGlzdCogbGlzdDsKKyAgICAKKyAgICBmb3IgKGxpc3QgPSBn
cmFwaGljc0xheWVyLT5jaGlsZHJlbjsgbGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpCisgICAgewor
ICAgICAgICAgQ2x1dHRlckFjdG9yKiBjaGlsZCA9IENMVVRURVJfQUNUT1IobGlzdC0+ZGF0YSk7
CisgICAgICAgICAoKiBjYWxsYmFjaykgKGNoaWxkLCB1c2VyX2RhdGEpOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgY2x1dHRlcl9jb250YWluZXJfaWZhY2VfaW5pdChDbHV0dGVyQ29udGFpbmVy
SWZhY2UqIGlmYWNlKQoreworICAgIGlmYWNlLT5hZGQgPSBjb250YWluZXJfYWRkOworICAgIGlm
YWNlLT5yZW1vdmUgPSBjb250YWluZXJfcmVtb3ZlOworICAgIGlmYWNlLT5mb3JlYWNoID0gY29u
dGFpbmVyX2ZvcmVhY2g7Cit9CisKKy8qIAorICogcHVibGljIEFQSQorICovCit2b2lkIGdyYXBo
aWNzX2xheWVyX2FjdG9yX3JlbW92ZV9hbGwoR3JhcGhpY3NMYXllckFjdG9yKiBsYXllcikKK3sK
KyAgICBHTGlzdCAqY2hpbGRyZW47CisgICAgZ19yZXR1cm5faWZfZmFpbChHUkFQSElDU19MQVlF
Ul9JU19BQ1RPUihsYXllcikpOworICAgIGNoaWxkcmVuID0gbGF5ZXItPmNoaWxkcmVuOworCisg
ICAgd2hpbGUgKGNoaWxkcmVuKSB7CisgICAgICAgIENsdXR0ZXJBY3RvciAqY2hpbGQgPSBDTFVU
VEVSX0FDVE9SKGNoaWxkcmVuLT5kYXRhKTsKKyAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlbi0+
bmV4dDsKKyAgICAgICAgY2x1dHRlcl9jb250YWluZXJfcmVtb3ZlX2FjdG9yKENMVVRURVJfQ09O
VEFJTkVSKGxheWVyKSwgY2hpbGQpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgdXBkYXRlVGV4
dHVyZShHcmFwaGljc0xheWVyQWN0b3IqIGxheWVyKQoreworICAgIEdyYXBoaWNzTGF5ZXJBY3Rv
clByaXZhdGUqIHByaXYgPSBsYXllci0+cHJpdjsKKyAgICBBU1NFUlQocHJpdi0+bGF5ZXJUeXBl
ICE9IEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpMYXllclR5cGVWaWRlb0xheWVyKTsKKworICAgIC8v
IE5vdGhpbmcgbmVlZHMgYSB0ZXh0dXJlLCByZW1vdmUgdGhlIG9uZSB3ZSBoYXZlLCBpZiBhbnku
CisgICAgaWYgKCFwcml2LT5kcmF3c0NvbnRlbnQgJiYgIXByaXYtPnN1cmZhY2UpIHsKKyAgICAg
ICAgaWYgKCFwcml2LT50ZXh0dXJlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGdf
c2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwcml2LT50ZXh0dXJlLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihncmFwaGljc19sYXllcl9hY3Rvcl9kcmF3KSwgbGF5ZXIpOworICAg
ICAgICBjbHV0dGVyX2FjdG9yX3VucGFyZW50KHByaXYtPnRleHR1cmUpOworICAgICAgICBwcml2
LT50ZXh0dXJlID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQg
YSB0ZXh0dXJlLCBidXQgYWxyZWFkeSBoYXZlIG9uZSEKKyAgICBpZiAocHJpdi0+dGV4dHVyZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gV2UgbmVlZCBhIHRleHR1cmUsIHNvIGNyZWF0ZSBp
dC4KKyAgICBDbHV0dGVyQWN0b3IqIGFjdG9yID0gQ0xVVFRFUl9BQ1RPUihsYXllcik7CisgICAg
aW50IHdpZHRoID0gY2VpbGYoY2x1dHRlcl9hY3Rvcl9nZXRfd2lkdGgoYWN0b3IpKTsKKyAgICBp
bnQgaGVpZ2h0ID0gY2VpbGYoY2x1dHRlcl9hY3Rvcl9nZXRfaGVpZ2h0KGFjdG9yKSk7CisKKyAg
ICBwcml2LT50ZXh0dXJlID0gQ0xVVFRFUl9BQ1RPUihnX29iamVjdF9uZXcoQ0xVVFRFUl9UWVBF
X0NBSVJPX1RFWFRVUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJhdXRvLXJlc2l6ZSIsIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJzdXJmYWNlLWhlaWdodCIsIHdpZHRoID4gMCA/IHdpZHRoIDog
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cmZh
Y2Utd2lkdGgiLCBoZWlnaHQgPiAwID8gaGVpZ2h0IDogMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCkpOworCisgICAgY2x1dHRlcl9hY3Rvcl9z
ZXRfcGFyZW50KHByaXYtPnRleHR1cmUsIGFjdG9yKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
cHJpdi0+dGV4dHVyZSwgImRyYXciLCBHX0NBTExCQUNLKGdyYXBoaWNzX2xheWVyX2FjdG9yX2Ry
YXcpLCBsYXllcik7Cit9CisKK2NhaXJvX3N1cmZhY2VfdCogZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jf
Z2V0X3N1cmZhY2UoR3JhcGhpY3NMYXllckFjdG9yKiBsYXllcikKK3sKKyAgICBHcmFwaGljc0xh
eWVyQWN0b3JQcml2YXRlKiBwcml2ID0gbGF5ZXItPnByaXY7CisgICAgaWYgKCFwcml2LT5zdXJm
YWNlKQorICAgICAgICBnX21lc3NhZ2UoInN1cmZhY2UgaXMgbnVsbCIpOworCisgICAgcmV0dXJu
IHByaXYtPnN1cmZhY2UuZ2V0KCk7Cit9CisKK3ZvaWQgZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jfc2V0
X3N1cmZhY2UoR3JhcGhpY3NMYXllckFjdG9yKiBsYXllciwgY2Fpcm9fc3VyZmFjZV90KiBzdXJm
YWNlKQoreworICAgIEdyYXBoaWNzTGF5ZXJBY3RvclByaXZhdGUqIHByaXYgPSBsYXllci0+cHJp
djsKKyAgICBwcml2LT5zdXJmYWNlID0gc3VyZmFjZTsKKyAgICB1cGRhdGVUZXh0dXJlKGxheWVy
KTsKK30KKwordm9pZCBncmFwaGljc19sYXllcl9hY3Rvcl9pbnZhbGlkYXRlX3JlY3RhbmdsZShH
cmFwaGljc0xheWVyQWN0b3IqIGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIGRpcnR5UmVjdCkKK3sK
KyAgICBHcmFwaGljc0xheWVyQWN0b3JQcml2YXRlKiBwcml2ID0gbGF5ZXItPnByaXY7CisKKyAg
ICBpZiAoIXByaXYtPnRleHR1cmUpCisgICAgICAgIHJldHVybjsKKworICAgIGNhaXJvX3JlY3Rh
bmdsZV9pbnRfdCByZWN0KGVuY2xvc2luZ0ludFJlY3QoZGlydHlSZWN0KSk7CisgICAgY2x1dHRl
cl9jYWlyb190ZXh0dXJlX2ludmFsaWRhdGVfcmVjdGFuZ2xlKENMVVRURVJfQ0FJUk9fVEVYVFVS
RShwcml2LT50ZXh0dXJlKSwgJnJlY3QpOworfQorCit2b2lkIGdyYXBoaWNzX2xheWVyX2FjdG9y
X3NldF90cmFuc2Zvcm0oR3JhcGhpY3NMYXllckFjdG9yKiBsYXllciwgY29uc3QgQ29nbE1hdHJp
eCogbWF0cml4KSAKK3sKKyAgICBHcmFwaGljc0xheWVyQWN0b3JQcml2YXRlKiBwcml2ID0gbGF5
ZXItPnByaXY7CisKKworICAgIGlmIChwcml2LT5tYXRyaXgpIHsKKyAgICAgICAgY29nbF9tYXRy
aXhfZnJlZShwcml2LT5tYXRyaXgpOworICAgICAgICBwcml2LT5tYXRyaXggPSAwOworICAgICAg
ICBjbHV0dGVyX2FjdG9yX3F1ZXVlX3JlZHJhdyhDTFVUVEVSX0FDVE9SKGxheWVyKSk7CisgICAg
fQorCisgICAgQ29nbE1hdHJpeCBpZGVudGl0eTsKKyAgICBjb2dsX21hdHJpeF9pbml0X2lkZW50
aXR5KCZpZGVudGl0eSk7CisgICAgaWYgKGNvZ2xfbWF0cml4X2VxdWFsKChDb2dsTWF0cml4Kikm
aWRlbnRpdHksIChDb2dsTWF0cml4KiltYXRyaXgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAocHJpdi0+bWF0cml4KQorICAgICAgICBjb2dsX21hdHJpeF9mcmVlKHByaXYtPm1hdHJpeCk7
CisKKyAgICBwcml2LT5tYXRyaXggPSBjb2dsX21hdHJpeF9jb3B5KG1hdHJpeCk7CisgICAgY2x1
dHRlcl9hY3Rvcl9xdWV1ZV9yZWRyYXcoQ0xVVFRFUl9BQ1RPUihsYXllcikpOworfQorCisKKwor
dm9pZCBncmFwaGljc19sYXllcl9hY3Rvcl9zZXRfYW5jaG9yX3BvaW50KEdyYXBoaWNzTGF5ZXJB
Y3RvciogbGF5ZXIsIGdmbG9hdCB4LCBnZmxvYXQgeSwgZ2Zsb2F0IHopCit7CisgICAgR3JhcGhp
Y3NMYXllckFjdG9yUHJpdmF0ZSogcHJpdiA9IGxheWVyLT5wcml2OworCisgICAgcHJpdi0+YW5j
aG9yX3ggPSB4OworICAgIHByaXYtPmFuY2hvcl95ID0geTsKKyAgICBwcml2LT5hbmNob3JfeiA9
IHo7CisKKyAgICBDbHV0dGVyQWN0b3IqIGFjdG9yID0gQ0xVVFRFUl9BQ1RPUihsYXllcik7CisK
KyAgICBmbG9hdCB3aWR0aCwgaGVpZ2h0OworICAgIGNsdXR0ZXJfYWN0b3JfZ2V0X3NpemUoYWN0
b3IsICZ3aWR0aCwgJmhlaWdodCk7CisgICAgY2x1dHRlcl9hY3Rvcl9zZXRfYW5jaG9yX3BvaW50
KGFjdG9yLCB3aWR0aCAqIHByaXYtPmFuY2hvcl94LCBoZWlnaHQgKiBwcml2LT5hbmNob3JfeSk7
Cit9CisKK3ZvaWQgZ3JhcGhpY3NfbGF5ZXJfYWN0b3JfZ2V0X2FuY2hvcl9wb2ludChHcmFwaGlj
c0xheWVyQWN0b3IqIGxheWVyLCBnZmxvYXQqIHgsIGdmbG9hdCogeSwgZ2Zsb2F0KiB6KQorewor
ICAgIEdyYXBoaWNzTGF5ZXJBY3RvclByaXZhdGUqIHByaXYgPSBsYXllci0+cHJpdjsKKyAgICBp
ZiAoeCkKKyAgICAgICAgKnggPSBwcml2LT5hbmNob3JfeDsKKworICAgIGlmICh5KQorICAgICAg
ICAqeSA9IHByaXYtPmFuY2hvcl95OworCisgICAgaWYgKHopCisgICAgICAgICp6ID0gcHJpdi0+
YW5jaG9yX3o7Cit9CisKK3ZvaWQgZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jfc2V0X3Njcm9sbF9wb3Np
dGlvbihHcmFwaGljc0xheWVyQWN0b3IqIGxheWVyLCBnZmxvYXQgeCwgZ2Zsb2F0IHkpCit7Cisg
ICAgR3JhcGhpY3NMYXllckFjdG9yUHJpdmF0ZSogcHJpdiA9IGxheWVyLT5wcml2OworCisgICAg
aWYgKHggPiAwIHx8IHkgPiAwKQorICAgICAgICByZXR1cm47CisKKyAgICBwcml2LT5zY3JvbGxf
eCA9IHg7CisgICAgcHJpdi0+c2Nyb2xsX3kgPSB5OworfQorCitnaW50IGdyYXBoaWNzX2xheWVy
X2FjdG9yX2dldF9uX2NoaWxkcmVuKEdyYXBoaWNzTGF5ZXJBY3RvciogbGF5ZXIpCit7CisgICAg
QVNTRVJUKEdSQVBISUNTX0xBWUVSX0lTX0FDVE9SKGxheWVyKSk7CisKKyAgIHJldHVybiBnX2xp
c3RfbGVuZ3RoKGxheWVyLT5jaGlsZHJlbik7Cit9CisKK3ZvaWQgZ3JhcGhpY3NfbGF5ZXJfYWN0
b3JfcmVwbGFjZV9zdWJsYXllcihHcmFwaGljc0xheWVyQWN0b3IqIGxheWVyLCBDbHV0dGVyQWN0
b3IqIG9sZENoaWxkTGF5ZXIsIENsdXR0ZXJBY3RvciogbmV3Q2hpbGRMYXllcikKK3sKKyAgICBB
U1NFUlQoR1JBUEhJQ1NfTEFZRVJfSVNfQUNUT1IobGF5ZXIpKTsKKyAgICBBU1NFUlQoQ0xVVFRF
Ul9JU19BQ1RPUihvbGRDaGlsZExheWVyKSk7CisgICAgQVNTRVJUKENMVVRURVJfSVNfQUNUT1Io
bmV3Q2hpbGRMYXllcikpOworCisgICAgY29udGFpbmVyX3JlcGxhY2UoQ0xVVFRFUl9DT05UQUlO
RVIobGF5ZXIpLCBvbGRDaGlsZExheWVyLCBuZXdDaGlsZExheWVyKTsKK30KKwordm9pZCBncmFw
aGljc19sYXllcl9hY3Rvcl9pbnNlcnRfc3VibGF5ZXIoR3JhcGhpY3NMYXllckFjdG9yKiBsYXll
ciwgQ2x1dHRlckFjdG9yKiBjaGlsZExheWVyLCBnaW50IGluZGV4KQoreworICAgIEFTU0VSVChH
UkFQSElDU19MQVlFUl9JU19BQ1RPUihsYXllcikpOworICAgIEFTU0VSVChDTFVUVEVSX0lTX0FD
VE9SKGNoaWxkTGF5ZXIpKTsKKworICAgIGdfb2JqZWN0X3JlZihjaGlsZExheWVyKTsKKworICAg
IGxheWVyLT5jaGlsZHJlbiA9IGdfbGlzdF9pbnNlcnQobGF5ZXItPmNoaWxkcmVuLCBjaGlsZExh
eWVyLCBpbmRleCk7CisgICAgQVNTRVJUKCFjbHV0dGVyX2FjdG9yX2dldF9wYXJlbnQoY2hpbGRM
YXllcikpOworICAgIGNsdXR0ZXJfYWN0b3Jfc2V0X3BhcmVudChjaGlsZExheWVyLCBDTFVUVEVS
X0FDVE9SKGxheWVyKSk7CisgICAgY2x1dHRlcl9hY3Rvcl9xdWV1ZV9yZWxheW91dChDTFVUVEVS
X0FDVE9SKGxheWVyKSk7CisKKyAgICBnX29iamVjdF91bnJlZihjaGlsZExheWVyKTsKK30KKwor
dm9pZCBncmFwaGljc19sYXllcl9hY3Rvcl9zZXRfc3VibGF5ZXJzKEdyYXBoaWNzTGF5ZXJBY3Rv
ciogbGF5ZXIsIEdyYXBoaWNzTGF5ZXJBY3Rvckxpc3QmIHN1YkxheWVycykKK3sKKyAgICBpZiAo
c3ViTGF5ZXJzLnNpemUoKSA9PSAwKSB7CisgICAgICAgIGdyYXBoaWNzX2xheWVyX2FjdG9yX3Jl
bW92ZV9hbGwobGF5ZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdWJMYXllcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ2x1dHRlckFj
dG9yKiBsYXllckFjdG9yID0gQ0xVVFRFUl9BQ1RPUihzdWJMYXllcnNbaV0uZ2V0KCkpOworICAg
ICAgICBjbHV0dGVyX2NvbnRhaW5lcl9hZGRfYWN0b3IoQ0xVVFRFUl9DT05UQUlORVIobGF5ZXIp
LCBsYXllckFjdG9yKTsKKyAgICB9Cit9CisKKworCitHcmFwaGljc0xheWVyQ2x1dHRlcjo6TGF5
ZXJUeXBlIGdyYXBoaWNzX2xheWVyX2FjdG9yX2dldF9sYXllcl90eXBlKEdyYXBoaWNzTGF5ZXJB
Y3RvciogbGF5ZXIpCit7CisgICAgR3JhcGhpY3NMYXllckFjdG9yUHJpdmF0ZSogcHJpdiA9IGxh
eWVyLT5wcml2OworICAgIHJldHVybiBwcml2LT5sYXllclR5cGU7Cit9CisKK3ZvaWQgZ3JhcGhp
Y3NfbGF5ZXJfYWN0b3Jfc2V0X2xheWVyX3R5cGUoR3JhcGhpY3NMYXllckFjdG9yKiBsYXllciwg
R3JhcGhpY3NMYXllckNsdXR0ZXI6OkxheWVyVHlwZSBsYXllclR5cGUpCit7CisgICAgR3JhcGhp
Y3NMYXllckFjdG9yUHJpdmF0ZSogcHJpdiA9IGxheWVyLT5wcml2OworICAgIHByaXYtPmxheWVy
VHlwZSA9IGxheWVyVHlwZTsKK30KKwordm9pZCBncmFwaGljc19sYXllcl9hY3Rvcl9zZXRfdHJh
bnNsYXRlX3goR3JhcGhpY3NMYXllckFjdG9yKiBsYXllciwgZmxvYXQgdmFsdWUpCit7CisgICAg
R3JhcGhpY3NMYXllckFjdG9yUHJpdmF0ZSogcHJpdiA9IGxheWVyLT5wcml2OworICAgIHByaXYt
PnRyYW5zbGF0ZV94ID0gdmFsdWU7CisgICAgY2x1dHRlcl9hY3Rvcl9xdWV1ZV9yZWRyYXcoQ0xV
VFRFUl9BQ1RPUihsYXllcikpOworfQorCitmbG9hdCBncmFwaGljc19sYXllcl9hY3Rvcl9nZXRf
dHJhbnNsYXRlX3goR3JhcGhpY3NMYXllckFjdG9yKiBsYXllcikKK3sKKyAgICBHcmFwaGljc0xh
eWVyQWN0b3JQcml2YXRlKiBwcml2ID0gbGF5ZXItPnByaXY7CisgICAgcmV0dXJuIHByaXYtPnRy
YW5zbGF0ZV94OworfQorCit2b2lkIGdyYXBoaWNzX2xheWVyX2FjdG9yX3NldF90cmFuc2xhdGVf
eShHcmFwaGljc0xheWVyQWN0b3IqIGxheWVyLCBmbG9hdCB2YWx1ZSkKK3sKKyAgICBHcmFwaGlj
c0xheWVyQWN0b3JQcml2YXRlKiBwcml2ID0gbGF5ZXItPnByaXY7CisgICAgcHJpdi0+dHJhbnNs
YXRlX3kgPSB2YWx1ZTsKKyAgICBjbHV0dGVyX2FjdG9yX3F1ZXVlX3JlZHJhdyhDTFVUVEVSX0FD
VE9SKGxheWVyKSk7Cit9CisKK2Zsb2F0IGdyYXBoaWNzX2xheWVyX2FjdG9yX2dldF90cmFuc2xh
dGVfeShHcmFwaGljc0xheWVyQWN0b3IqIGxheWVyKQoreworICAgIEdyYXBoaWNzTGF5ZXJBY3Rv
clByaXZhdGUqIHByaXYgPSBsYXllci0+cHJpdjsKKyAgICByZXR1cm4gcHJpdi0+dHJhbnNsYXRl
X3k7Cit9CisKKwordm9pZCBncmFwaGljc19sYXllcl9hY3Rvcl9zZXRfZHJhd3NfY29udGVudChH
cmFwaGljc0xheWVyQWN0b3IqIGxheWVyLCBnYm9vbGVhbiBkcmF3c0NvbnRlbnQpCit7CisgICAg
R3JhcGhpY3NMYXllckFjdG9yUHJpdmF0ZSogcHJpdiA9IGxheWVyLT5wcml2OworCisgICAgaWYg
KGRyYXdzQ29udGVudCA9PSBwcml2LT5kcmF3c0NvbnRlbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHByaXYtPmRyYXdzQ29udGVudCA9IGRyYXdzQ29udGVudDsKKworICAgIHVwZGF0ZVRleHR1
cmUobGF5ZXIpOworfQorCitnYm9vbGVhbiBncmFwaGljc19sYXllcl9hY3Rvcl9nZXRfZHJhd3Nf
Y29udGVudChHcmFwaGljc0xheWVyQWN0b3IqIGxheWVyKQoreworICAgIHJldHVybiBsYXllci0+
cHJpdi0+ZHJhd3NDb250ZW50OworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1
dHRlci9HcmFwaGljc0xheWVyQWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckFjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNGM1YzFhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckFjdG9yLmgKQEAgLTAsMCArMSwx
MTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxMCBDb2xsYWJvcmEgTGltaXRlZAorICoKKyAqIFRo
aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMi4xLCBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dy
YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRI
T1VUIEFOWQorICogV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUworICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJv
Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICog
SW5jLiwgNTEgRnJhbmtsaW4gU3QgLSBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAx
IFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBfR1JBUEhJQ1NfTEFZRVJfQUNUT1JfSAorI2RlZmlu
ZSBfR1JBUEhJQ1NfTEFZRVJfQUNUT1JfSAorCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2x1
dHRlci5oIgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Y2x1dHRlci9jbHV0
dGVyLmg+CisjaW5jbHVkZSA8Y29nbC9jb2dsLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmlu
ZSBHUkFQSElDU19MQVlFUl9UWVBFX0FDVE9SIGdyYXBoaWNzX2xheWVyX2FjdG9yX2dldF90eXBl
KCkKKworI2RlZmluZSBHUkFQSElDU19MQVlFUl9BQ1RPUihvYmopIFwKKyAgKEdfVFlQRV9DSEVD
S19JTlNUQU5DRV9DQVNUICgob2JqKSwgXAorICBHUkFQSElDU19MQVlFUl9UWVBFX0FDVE9SLCBH
cmFwaGljc0xheWVyQWN0b3IpKQorCisjZGVmaW5lIEdSQVBISUNTX0xBWUVSX0FDVE9SX0NMQVNT
KGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgXAorICBHUkFQ
SElDU19MQVlFUl9UWVBFX0FDVE9SLCBHcmFwaGljc0xheWVyQWN0b3JDbGFzcykpCisKKyNkZWZp
bmUgR1JBUEhJQ1NfTEFZRVJfSVNfQUNUT1Iob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFO
Q0VfVFlQRSAoKG9iaiksIFwKKyAgR1JBUEhJQ1NfTEFZRVJfVFlQRV9BQ1RPUikpCisKKyNkZWZp
bmUgR1JBUEhJQ1NfTEFZRVJfSVNfQUNUT1JfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVD
S19DTEFTU19UWVBFICgoa2xhc3MpLCBcCisgIEdSQVBISUNTX0xBWUVSX1RZUEVfQUNUT1IpKQor
CisjZGVmaW5lIEdSQVBISUNTX0xBWUVSX0FDVE9SX0dFVF9DTEFTUyhvYmopIFwKKyAgKEdfVFlQ
RV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBcCisgIEdSQVBISUNTX0xBWUVSX1RZUEVfQUNU
T1IsIEdyYXBoaWNzTGF5ZXJBY3RvckNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0dyYXBoaWNz
TGF5ZXJBY3RvciBHcmFwaGljc0xheWVyQWN0b3I7Cit0eXBlZGVmIHN0cnVjdCBfR3JhcGhpY3NM
YXllckFjdG9yQ2xhc3MgR3JhcGhpY3NMYXllckFjdG9yQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBf
R3JhcGhpY3NMYXllckFjdG9yUHJpdmF0ZSBHcmFwaGljc0xheWVyQWN0b3JQcml2YXRlOworCisv
KioKKyAqIEdyYXBoaWNzTGF5ZXJBY3RvcjoKKyAqCisgKiBUaGUgY29udGVudHMgb2YgdGhpcyBz
dHJ1Y3R1cmUgYXJlIHByaXZhdGUgYW5kIHNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkCisgKiB0aHJv
dWdoIHRoZSBwdWJsaWMgQVBJLgorICovCitzdHJ1Y3QgX0dyYXBoaWNzTGF5ZXJBY3Rvcgorewor
ICBDbHV0dGVyUmVjdGFuZ2xlIHBhcmVudDsKKworICBHcmFwaGljc0xheWVyQWN0b3JQcml2YXRl
ICpwcml2OworICBHTGlzdCAqY2hpbGRyZW47Cit9OworCitzdHJ1Y3QgX0dyYXBoaWNzTGF5ZXJB
Y3RvckNsYXNzCit7CisgIENsdXR0ZXJSZWN0YW5nbGVDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAg
LyogcGFkZGluZyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworICB2b2lkICgqX3BhZGRpbmdfMCkg
KHZvaWQpOworICB2b2lkICgqX3BhZGRpbmdfMSkgKHZvaWQpOworICB2b2lkICgqX3BhZGRpbmdf
MikgKHZvaWQpOworICB2b2lkICgqX3BhZGRpbmdfMykgKHZvaWQpOworICB2b2lkICgqX3BhZGRp
bmdfNCkgKHZvaWQpOworfTsKKworR1R5cGUgZ3JhcGhpY3NfbGF5ZXJfYWN0b3JfZ2V0X3R5cGUg
KHZvaWQpIEdfR05VQ19DT05TVDsKKworR3JhcGhpY3NMYXllckFjdG9yKiBncmFwaGljc19sYXll
cl9hY3Rvcl9uZXcoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsdXR0ZXI6OkxheWVyVHlwZSk7CitH
cmFwaGljc0xheWVyQWN0b3IqIGdyYXBoaWNzX2xheWVyX2FjdG9yX25ld193aXRoX2NsaWVudChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9y
bUNsdXR0ZXJMYXllckNsaWVudCopOwordm9pZCBncmFwaGljc19sYXllcl9hY3Rvcl9zZXRfY2xp
ZW50KEdyYXBoaWNzTGF5ZXJBY3RvciosIFdlYkNvcmU6OlBsYXRmb3JtQ2x1dHRlckxheWVyQ2xp
ZW50Kik7CitXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudCogZ3JhcGhpY3NfbGF5
ZXJfYWN0b3JfZ2V0X2NsaWVudChHcmFwaGljc0xheWVyQWN0b3IqKTsKK3ZvaWQgZ3JhcGhpY3Nf
bGF5ZXJfYWN0b3JfcmVtb3ZlX2FsbChHcmFwaGljc0xheWVyQWN0b3IqKTsKK2NhaXJvX3N1cmZh
Y2VfdCogZ3JhcGhpY3NfbGF5ZXJfYWN0b3JfZ2V0X3N1cmZhY2UoR3JhcGhpY3NMYXllckFjdG9y
Kik7Cit2b2lkIGdyYXBoaWNzX2xheWVyX2FjdG9yX3NldF9zdXJmYWNlKEdyYXBoaWNzTGF5ZXJB
Y3RvciosIGNhaXJvX3N1cmZhY2VfdCopOwordm9pZCBncmFwaGljc19sYXllcl9hY3Rvcl9pbnZh
bGlkYXRlX3JlY3RhbmdsZShHcmFwaGljc0xheWVyQWN0b3IqLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKTsKK3ZvaWQgZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jfc2V0X3RyYW5zZm9ybShHcmFwaGlj
c0xheWVyQWN0b3IqLCBjb25zdCBDb2dsTWF0cml4Kik7Cit2b2lkIGdyYXBoaWNzX2xheWVyX2Fj
dG9yX3NldF9hbmNob3JfcG9pbnQoR3JhcGhpY3NMYXllckFjdG9yKiwgZ2Zsb2F0LCBnZmxvYXQs
IGdmbG9hdCk7Cit2b2lkIGdyYXBoaWNzX2xheWVyX2FjdG9yX2dldF9hbmNob3JfcG9pbnQoR3Jh
cGhpY3NMYXllckFjdG9yKiwgZ2Zsb2F0KiwgZ2Zsb2F0KiwgZ2Zsb2F0Kik7Cit2b2lkIGdyYXBo
aWNzX2xheWVyX2FjdG9yX3NldF9zY3JvbGxfcG9zaXRpb24oR3JhcGhpY3NMYXllckFjdG9yKiwg
Z2Zsb2F0LCBnZmxvYXQpOyAKK3ZvaWQgZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jfc2V0X3RyYW5zbGF0
ZV94KEdyYXBoaWNzTGF5ZXJBY3RvciosIGZsb2F0KTsKK2Zsb2F0IGdyYXBoaWNzX2xheWVyX2Fj
dG9yX2dldF90cmFuc2xhdGVfeChHcmFwaGljc0xheWVyQWN0b3IqKTsKK3ZvaWQgZ3JhcGhpY3Nf
bGF5ZXJfYWN0b3Jfc2V0X3RyYW5zbGF0ZV95KEdyYXBoaWNzTGF5ZXJBY3RvciosIGZsb2F0KTsK
K2Zsb2F0IGdyYXBoaWNzX2xheWVyX2FjdG9yX2dldF90cmFuc2xhdGVfeShHcmFwaGljc0xheWVy
QWN0b3IqKTsKK2dpbnQgZ3JhcGhpY3NfbGF5ZXJfYWN0b3JfZ2V0X25fY2hpbGRyZW4oR3JhcGhp
Y3NMYXllckFjdG9yKik7CitXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6TGF5ZXJUeXBl
IGdyYXBoaWNzX2xheWVyX2FjdG9yX2dldF9sYXllcl90eXBlKEdyYXBoaWNzTGF5ZXJBY3Rvciop
Owordm9pZCBncmFwaGljc19sYXllcl9hY3Rvcl9zZXRfbGF5ZXJfdHlwZShHcmFwaGljc0xheWVy
QWN0b3IqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2x1dHRlcjo6TGF5ZXJUeXBlKTsKK3ZvaWQg
Z3JhcGhpY3NfbGF5ZXJfYWN0b3Jfc2V0X3N1YmxheWVycyhHcmFwaGljc0xheWVyQWN0b3IqLCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQWN0b3JMaXN0Jik7CitnYm9vbGVhbiBncmFwaGljc19sYXll
cl9hY3Rvcl9nZXRfZHJhd3NfY29udGVudChHcmFwaGljc0xheWVyQWN0b3IqKTsKK3ZvaWQgZ3Jh
cGhpY3NfbGF5ZXJfYWN0b3Jfc2V0X2RyYXdzX2NvbnRlbnQoR3JhcGhpY3NMYXllckFjdG9yKiwg
Z2Jvb2xlYW4gZHJhd3NDb250ZW50KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2VuZGlmIC8qIF9HUkFQSElDU19MQVlFUl9BQ1RP
Ul9IICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0
dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwCmluZGV4IGVkYTE0ZDAuLjcy
YWY0MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0
ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3BwCkBAIC0yNywxMiArMjcs
MjIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKworI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBY3Rvci5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXJDbHV0dGVyLmgiCiAKKyNpbmNsdWRlICJHUmVmUHRyQ2x1dHRlci5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNpbmNsdWRl
ICJUcmFuc2Zvcm1TdGF0ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBU
aGlzIGlzIHRoZSBob29rIGZvciBXZWJDb3JlIGNvbXBvc2l0b3IgdG8ga25vdyB0aGF0IHRoZSB3
ZWJLaXQgY2x1dHRlciBwb3J0IGltcGxlbWVudHMKKy8vIGNvbXBvc2l0aW5nIHdpdGggR3JhcGhp
Y3NMYXllckNsdXR0ZXIuCisKIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gR3JhcGhpY3NMYXll
cjo6Y3JlYXRlKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKIHsKICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEdyYXBoaWNzTGF5ZXJDbHV0dGVyKGNsaWVudCkpOwpAQCAtNDAsMzEgKzUwLDQw
NCBAQCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFw
aGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAKIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpHcmFwaGlj
c0xheWVyQ2x1dHRlcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBHcmFwaGlj
c0xheWVyKGNsaWVudCkKKyAgICAsIG1fdW5jb21taXR0ZWRDaGFuZ2VzKDApCit7CisgICAgbV9s
YXllciA9IGFkb3B0R1JlZihncmFwaGljc19sYXllcl9hY3Rvcl9uZXdfd2l0aF9jbGllbnQoTGF5
ZXJUeXBlV2ViTGF5ZXIsIHRoaXMpKTsKK30KKworc3RhdGljIGdib29sZWFuIGlkbGVEZXN0cm95
KGdwb2ludGVyIGRhdGEpCiB7Ci0gICAgLy8gQ2x1dHRlclJlY3RhbmdsZSB3aWxsIGJlIHVzZWQg
dG8gc2hvdyB0aGUgZGVidWcgYm9yZGVyLgotICAgIG1fbGF5ZXIgPSBhZG9wdEdSZWYoY2x1dHRl
cl9yZWN0YW5nbGVfbmV3KCkpOworICAgIEdSZWZQdHI8Q2x1dHRlckFjdG9yPiBhY3RvciA9IGFk
b3B0R1JlZihDTFVUVEVSX0FDVE9SKGRhdGEpKTsKKyAgICBDbHV0dGVyQWN0b3IqIHBhcmVudCA9
IGNsdXR0ZXJfYWN0b3JfZ2V0X3BhcmVudChhY3Rvci5nZXQoKSk7CisKKyAgICAvLyBXZSBzaG91
bGQgcmVtb3ZlIGNoaWxkIGFjdG9ycyBtYW51YWxseSBiZWNhdXNlIHRoZSBjb250YWluZXIgb2Yg
Q2x1dHRlciAKKyAgICAvLyBzZWVtcyB0byBoYXZlIGEgYnVnIHRvIHJlbW92ZSBpdHMgY2hpbGQg
YWN0b3JzIHdoZW4gaXQgaXMgcmVtb3ZlZC4gCisgICAgaWYgKEdSQVBISUNTX0xBWUVSX0lTX0FD
VE9SKEdSQVBISUNTX0xBWUVSX0FDVE9SKGFjdG9yLmdldCgpKSkpCisgICAgICAgIGdyYXBoaWNz
X2xheWVyX2FjdG9yX3JlbW92ZV9hbGwoR1JBUEhJQ1NfTEFZRVJfQUNUT1IoYWN0b3IuZ2V0KCkp
KTsKKworICAgIGlmIChwYXJlbnQpCisgICAgICAgIGNsdXR0ZXJfY29udGFpbmVyX3JlbW92ZV9h
Y3RvcihDTFVUVEVSX0NPTlRBSU5FUihwYXJlbnQpLCBhY3Rvci5nZXQoKSk7CisKKyAgICAvLyBG
SVhNRTogd2Ugc2hvdWxkIGFzc2VydCB0aGF0IHRoZSBhY3RvcidzIHJlZiBjb3VudCBpcyAxIGhl
cmUsIGJ1dCBzb21lCisgICAgLy8gb2YgdGhlbSBhcmUgZ2V0dGluZyBoZXJlIHdpdGggMiEKKyAg
ICAvLyBBU1NFUlQoKEdfT0JKRUNUKGFjdG9yLmdldCgpKSktPnJlZl9jb3VudCA9PSAxKTsKKwor
ICAgIHJldHVybiBGQUxTRTsKIH0KIAogR3JhcGhpY3NMYXllckNsdXR0ZXI6On5HcmFwaGljc0xh
eWVyQ2x1dHRlcigpCiB7Ci0gICAgd2lsbEJlRGVzdHJveWVkKCk7CisgICAgLy8gVGhlIHJvb3Qg
bGF5ZXIgaXMgcmVtb3ZlZCBpbiB3ZWJraXRfaXdlYl92aWV3X2RldGFjaF9yb290X2dyYXBoaWNz
X2xheWVyLgorICAgIGlmIChncmFwaGljc19sYXllcl9hY3Rvcl9nZXRfbGF5ZXJfdHlwZShtX2xh
eWVyLmdldCgpKSA9PSBHcmFwaGljc0xheWVyQ2x1dHRlcjo6TGF5ZXJUeXBlUm9vdExheWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSBkZXN0cm95IHRoZSBhY3RvcnMgb24gYW4gaWRs
ZSBzbyB0aGF0IHRoZSBtYWluIGxvb3AgY2FuIHJ1biBlbm91Z2ggdG8KKyAgICAvLyByZXBhaW50
IHRoZSBiYWNrZ3JvdW5kIHRoYXQgd2lsbCByZXBsYWNlIHRoZSBhY3Rvci4KKyAgICBpZiAobV9s
YXllcikgeworICAgICAgICBncmFwaGljc19sYXllcl9hY3Rvcl9zZXRfY2xpZW50KG1fbGF5ZXIu
Z2V0KCksIDApOworICAgICAgICBnX2lkbGVfYWRkKGlkbGVEZXN0cm95LCBtX2xheWVyLmxlYWtS
ZWYoKSk7CisgICAgfQorfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXROYW1lKGNv
bnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBTdHJpbmcgbG9uZ05hbWUgPSBTdHJpbmc6OmZvcm1h
dCgiQWN0b3IoJXApIEdyYXBoaWNzTGF5ZXIoJXApICIsIG1fbGF5ZXIuZ2V0KCksIHRoaXMpICsg
bmFtZTsKKyAgICBHcmFwaGljc0xheWVyOjpzZXROYW1lKGxvbmdOYW1lKTsKKyAgICBub3RlTGF5
ZXJQcm9wZXJ0eUNoYW5nZWQoTmFtZUNoYW5nZWQpOwogfQogCiBDbHV0dGVyQWN0b3IqIEdyYXBo
aWNzTGF5ZXJDbHV0dGVyOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9s
YXllci5nZXQoKTsKKyAgICByZXR1cm4gQ0xVVFRFUl9BQ1RPUihtX2xheWVyLmdldCgpKTsKIH0K
IAogdm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIEZsb2F0UmVjdCBodWdlUmVjdChGbG9hdFBvaW50KDAsIDAp
LCBzaXplKCkpOworICAgIHNldE5lZWRzRGlzcGxheUluUmVjdChodWdlUmVjdCk7Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldE5lZWRzRGlzcGxheUluUmVjdChjb25zdCBGbG9h
dFJlY3QmIHIpCit7CisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRmxvYXRSZWN0IHJlY3Qocik7CisgICAgRmxvYXRSZWN0IGxheWVyQm91bmRzKEZsb2F0
UG9pbnQoKSwgbV9zaXplKTsKKyAgICByZWN0LmludGVyc2VjdChsYXllckJvdW5kcyk7CisgICAg
aWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBzaXplX3Qg
bWF4RGlydHlSZWN0cyA9IDMyOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RpcnR5
UmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fZGlydHlSZWN0c1tpXS5jb250YWlu
cyhyZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobV9kaXJ0eVJl
Y3RzLnNpemUoKSA8IG1heERpcnR5UmVjdHMpCisgICAgICAgIG1fZGlydHlSZWN0cy5hcHBlbmQo
cmVjdCk7CisgICAgZWxzZQorICAgICAgICBtX2RpcnR5UmVjdHNbMF0udW5pdGUocmVjdCk7CisK
KyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoRGlydHlSZWN0c0NoYW5nZWQpOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXRBbmNob3JQb2ludChjb25zdCBGbG9hdFBvaW50
M0QmIHBvaW50KQoreworICAgIGlmIChwb2ludCA9PSBtX2FuY2hvclBvaW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBHcmFwaGljc0xheWVyOjpzZXRBbmNob3JQb2ludChwb2ludCk7CisgICAg
bm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKEdlb21ldHJ5Q2hhbmdlZCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNsdXR0ZXI6OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQor
eworICAgIGlmIChwb2ludCA9PSBtX3Bvc2l0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBH
cmFwaGljc0xheWVyOjpzZXRQb3NpdGlvbihwb2ludCk7CisgICAgbm90ZUxheWVyUHJvcGVydHlD
aGFuZ2VkKEdlb21ldHJ5Q2hhbmdlZCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6
OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQoreworICAgIGlmIChzaXplID09IG1fc2l6
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0U2l6ZShzaXplKTsK
KyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQoR2VvbWV0cnlDaGFuZ2VkKTsKK30KK3ZvaWQg
R3JhcGhpY3NMYXllckNsdXR0ZXI6OnNldFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdCkKK3sKKyAgICBpZiAodCA9PSBtX3RyYW5zZm9ybSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR3JhcGhpY3NMYXllcjo6c2V0VHJhbnNmb3JtKHQpOworICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZChUcmFuc2Zvcm1DaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ2x1
dHRlcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQoreworICAgIGlmIChkcmF3
c0NvbnRlbnQgPT0gbV9kcmF3c0NvbnRlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBo
aWNzTGF5ZXI6OnNldERyYXdzQ29udGVudChkcmF3c0NvbnRlbnQpOworICAgIG5vdGVMYXllclBy
b3BlcnR5Q2hhbmdlZChEcmF3c0NvbnRlbnRDaGFuZ2VkKTsKIH0KIAotdm9pZCBHcmFwaGljc0xh
eWVyQ2x1dHRlcjo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYpCit2b2lk
IEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXRQYXJlbnQoR3JhcGhpY3NMYXllciogY2hpbGRMYXll
cikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworCisgICAgR3JhcGhpY3NMYXllcjo6c2V0UGFy
ZW50KGNoaWxkTGF5ZXIpOworfQorCitib29sIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzZXRDaGls
ZHJlbihjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+JiBjaGlsZHJlbikKK3sKKyAgICBib29s
IGNoaWxkcmVuQ2hhbmdlZCA9IEdyYXBoaWNzTGF5ZXI6OnNldENoaWxkcmVuKGNoaWxkcmVuKTsK
KyAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkKQorICAgICAgICBub3RlU3VibGF5ZXJzQ2hhbmdlZCgp
OworCisgICAgcmV0dXJuIGNoaWxkcmVuQ2hhbmdlZDsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
Q2x1dHRlcjo6YWRkQ2hpbGQoR3JhcGhpY3NMYXllciogY2hpbGRMYXllcikKK3sKKyAgICBHcmFw
aGljc0xheWVyOjphZGRDaGlsZChjaGlsZExheWVyKTsKKyAgICBub3RlU3VibGF5ZXJzQ2hhbmdl
ZCgpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjphZGRDaGlsZEF0SW5kZXgoR3Jh
cGhpY3NMYXllciogY2hpbGRMYXllciwgaW50IGluZGV4KQoreworICAgIEdyYXBoaWNzTGF5ZXI6
OmFkZENoaWxkQXRJbmRleChjaGlsZExheWVyLCBpbmRleCk7CisgICAgbm90ZVN1YmxheWVyc0No
YW5nZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6YWRkQ2hpbGRCZWxvdyhH
cmFwaGljc0xheWVyKiBjaGlsZExheWVyLCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKQoreworICAg
IEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQmVsb3coY2hpbGRMYXllciwgc2libGluZyk7CisgICAg
bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6
YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xheWVyKiBjaGlsZExheWVyLCBHcmFwaGljc0xheWVyKiBz
aWJsaW5nKQoreworICAgIEdyYXBoaWNzTGF5ZXI6OmFkZENoaWxkQWJvdmUoY2hpbGRMYXllciwg
c2libGluZyk7CisgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKK30KKworYm9vbCBHcmFwaGlj
c0xheWVyQ2x1dHRlcjo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFw
aGljc0xheWVyKiBuZXdDaGlsZCkKK3sKKyAgICBpZiAoR3JhcGhpY3NMYXllcjo6cmVwbGFjZUNo
aWxkKG9sZENoaWxkLCBuZXdDaGlsZCkpIHsKKyAgICAgICAgbm90ZVN1YmxheWVyc0NoYW5nZWQo
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6cmVtb3ZlRnJvbVBhcmVudCgpCit7CisgICAgaWYg
KG1fcGFyZW50KQorICAgICAgICBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ2x1dHRlcio+KG1f
cGFyZW50KS0+bm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKyAgICBHcmFwaGljc0xheWVyOjpyZW1v
dmVGcm9tUGFyZW50KCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnBsYXRmb3Jt
Q2x1dHRlckxheWVyUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGNsaXApCit7CisgICAgcGFpbnRHcmFwaGljc0xheWVyQ29udGVudHMoY29udGV4
dCwgY2xpcCk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnBsYXRmb3JtQ2x1dHRl
ckxheWVyQW5pbWF0aW9uU3RhcnRlZChkb3VibGUgc3RhcnRUaW1lKQoreworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQodGhpcywgc3Rh
cnRUaW1lKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6cmVwYWludExheWVyRGly
dHlSZWN0cygpCit7CisgICAgaWYgKCFtX2RpcnR5UmVjdHMuc2l6ZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGlydHlSZWN0cy5zaXplKCk7ICsr
aSkKKyAgICAgICAgZ3JhcGhpY3NfbGF5ZXJfYWN0b3JfaW52YWxpZGF0ZV9yZWN0YW5nbGUobV9s
YXllci5nZXQoKSwgbV9kaXJ0eVJlY3RzW2ldKTsKKworICAgIG1fZGlydHlSZWN0cy5jbGVhcigp
OworfQorCitGbG9hdFBvaW50IEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpjb21wdXRlUG9zaXRpb25S
ZWxhdGl2ZVRvQmFzZShmbG9hdCYgcGFnZVNjYWxlKSBjb25zdAoreworICAgIHBhZ2VTY2FsZSA9
IDE7CisKKyAgICBGbG9hdFBvaW50IG9mZnNldDsKKyAgICBmb3IgKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqIGN1cnJMYXllciA9IHRoaXM7IGN1cnJMYXllcjsgY3VyckxheWVyID0gY3VyckxheWVyLT5w
YXJlbnQoKSkgeworICAgICAgICBpZiAoY3VyckxheWVyLT5hcHBsaWVzUGFnZVNjYWxlKCkpIHsK
KyAgICAgICAgICAgIGlmIChjdXJyTGF5ZXItPmNsaWVudCgpKQorICAgICAgICAgICAgICAgIHBh
Z2VTY2FsZSA9IGN1cnJMYXllci0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICByZXR1
cm4gb2Zmc2V0OworICAgICAgICB9CisKKyAgICAgICAgb2Zmc2V0ICs9IGN1cnJMYXllci0+cG9z
aXRpb24oKTsKKyAgICB9CisKKyAgICByZXR1cm4gRmxvYXRQb2ludCgpOworfQorCisvLyBjYWxs
ZWQgZnJvbSB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFu
Z2VzCit2b2lkIEdyYXBoaWNzTGF5ZXJDbHV0dGVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZShjb25z
dCBGbG9hdFJlY3QmIGNsaXBSZWN0KQoreworICAgIFRyYW5zZm9ybVN0YXRlIHN0YXRlKFRyYW5z
Zm9ybVN0YXRlOjpVbmFwcGx5SW52ZXJzZVRyYW5zZm9ybURpcmVjdGlvbiwgRmxvYXRRdWFkKGNs
aXBSZWN0KSk7CisgICAgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhzdGF0ZSk7Cit9CisKK3ZvaWQg
R3JhcGhpY3NMYXllckNsdXR0ZXI6OnJlY3Vyc2l2ZUNvbW1pdENoYW5nZXMoY29uc3QgVHJhbnNm
b3JtU3RhdGUmIHN0YXRlLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IEZsb2F0UG9pbnQm
IHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UsIGJvb2wgYWZmZWN0ZWRCeVBhZ2VTY2FsZSkKK3sKKyAg
ICAvLyBGSVhNRTogU2F2ZSB0aGUgc3RhdGUgYmVmb3JlIHNlbmRpbmcgZG93biB0byBraWRzIGFu
ZCByZXN0b3JlIGl0IGFmdGVyCisgICAgVHJhbnNmb3JtU3RhdGUgbG9jYWxTdGF0ZSA9IHN0YXRl
OworCisgICAgaWYgKGFwcGxpZXNQYWdlU2NhbGUoKSkgeworICAgICAgICBwYWdlU2NhbGVGYWN0
b3IgPSB0aGlzLT5wYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAgICAgYWZmZWN0ZWRCeVBhZ2VTY2Fs
ZSA9IHRydWU7CisgICAgfQorCisgICAgLy8gQWNjdW11bGF0ZSBhbiBvZmZzZXQgZnJvbSB0aGUg
YW5jZXN0cmFsIHBpeGVsLWFsaWduZWQgbGF5ZXIuCisgICAgRmxvYXRQb2ludCBiYXNlUmVsYXRp
dmVQb3NpdGlvbiA9IHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2U7CisgICAgaWYgKGFmZmVjdGVkQnlQ
YWdlU2NhbGUpCisgICAgICAgIGJhc2VSZWxhdGl2ZVBvc2l0aW9uICs9IG1fcG9zaXRpb247CisK
KyAgICBjb21taXRMYXllckNoYW5nZXNCZWZvcmVTdWJsYXllcnMocGFnZVNjYWxlRmFjdG9yLCBi
YXNlUmVsYXRpdmVQb3NpdGlvbik7CisKKyAgICBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcio+
JiBjaGlsZExheWVycyA9IGNoaWxkcmVuKCk7CisgICAgc2l6ZV90IG51bUNoaWxkcmVuID0gY2hp
bGRMYXllcnMuc2l6ZSgpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJl
bjsgKytpKSB7CisgICAgICAgIEdyYXBoaWNzTGF5ZXJDbHV0dGVyKiBjdXJDaGlsZCA9IHN0YXRp
Y19jYXN0PEdyYXBoaWNzTGF5ZXJDbHV0dGVyKj4oY2hpbGRMYXllcnNbaV0pOworICAgICAgICBj
dXJDaGlsZC0+cmVjdXJzaXZlQ29tbWl0Q2hhbmdlcyhsb2NhbFN0YXRlLCBwYWdlU2NhbGVGYWN0
b3IsIGJhc2VSZWxhdGl2ZVBvc2l0aW9uLCBhZmZlY3RlZEJ5UGFnZVNjYWxlKTsKKyAgICB9CisK
KyAgICBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOworfQorCit2b2lkIEdyYXBo
aWNzTGF5ZXJDbHV0dGVyOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQor
eworICAgIGZsb2F0IHBhZ2VTY2FsZUZhY3RvcjsKKyAgICBGbG9hdFBvaW50IG9mZnNldCA9IGNv
bXB1dGVQb3NpdGlvblJlbGF0aXZlVG9CYXNlKHBhZ2VTY2FsZUZhY3Rvcik7CisgICAgY29tbWl0
TGF5ZXJDaGFuZ2VzQmVmb3JlU3VibGF5ZXJzKHBhZ2VTY2FsZUZhY3Rvciwgb2Zmc2V0KTsKKyAg
ICBjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpOworfQorCit2b2lkIEdyYXBoaWNz
TGF5ZXJDbHV0dGVyOjpjb21taXRMYXllckNoYW5nZXNBZnRlclN1YmxheWVycygpCit7CisgICAg
aWYgKCFtX3VuY29tbWl0dGVkQ2hhbmdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV91bmNv
bW1pdHRlZENoYW5nZXMgPSBOb0NoYW5nZTsKK30KK3ZvaWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6
Om5vdGVTdWJsYXllcnNDaGFuZ2VkKCkKK3sKKyAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWQo
Q2hpbGRyZW5DaGFuZ2VkKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ2x1dHRlcjo6bm90ZUxh
eWVyUHJvcGVydHlDaGFuZ2VkKExheWVyQ2hhbmdlRmxhZ3MgZmxhZ3MpCit7CisgICAgaWYgKCFt
X3VuY29tbWl0dGVkQ2hhbmdlcyAmJiBtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPm5vdGlm
eVN5bmNSZXF1aXJlZCh0aGlzKTsgLy8gY2FsbCBSZW5kZXJMYXllckJhY2tpbmc6Om5vdGlmeVN5
bmNSZXF1aXJlZAorCisgICAgbV91bmNvbW1pdHRlZENoYW5nZXMgfD0gZmxhZ3M7Cit9CisKK3Zv
aWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6OmNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVy
cyhmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uUmVsYXRp
dmVUb0Jhc2UpCit7CisgICAgaWYgKCFtX3VuY29tbWl0dGVkQ2hhbmdlcykKKyAgICAgICAgIHJl
dHVybjsKKworICAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBOYW1lQ2hhbmdlZCkKKyAg
ICAgICAgIHVwZGF0ZUxheWVyTmFtZXMoKTsKKworICAgICBpZiAobV91bmNvbW1pdHRlZENoYW5n
ZXMgJiBDaGlsZHJlbkNoYW5nZWQpCisgICAgICAgICB1cGRhdGVTdWJsYXllckxpc3QoKTsKKwor
ICAgIGlmIChtX3VuY29tbWl0dGVkQ2hhbmdlcyAmIEdlb21ldHJ5Q2hhbmdlZCkKKyAgICAgICAg
ICAgdXBkYXRlR2VvbWV0cnkocGFnZVNjYWxlRmFjdG9yLCBwb3NpdGlvblJlbGF0aXZlVG9CYXNl
KTsKKworICAgICBpZiAobV91bmNvbW1pdHRlZENoYW5nZXMgJiBUcmFuc2Zvcm1DaGFuZ2VkKQor
ICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7CisKKyAgICAgaWYgKG1fdW5jb21taXR0ZWRDaGFu
Z2VzICYgRHJhd3NDb250ZW50Q2hhbmdlZCkKKyAgICAgICAgIHVwZGF0ZUxheWVyRHJhd3NDb250
ZW50KHBhZ2VTY2FsZUZhY3RvciwgcG9zaXRpb25SZWxhdGl2ZVRvQmFzZSk7CisKKyAgICAgaWYg
KG1fdW5jb21taXR0ZWRDaGFuZ2VzICYgRGlydHlSZWN0c0NoYW5nZWQpCisgICAgICAgICByZXBh
aW50TGF5ZXJEaXJ0eVJlY3RzKCk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnVw
ZGF0ZUdlb21ldHJ5KGZsb2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgRmxvYXRQb2ludCYgcG9z
aXRpb25SZWxhdGl2ZVRvQmFzZSkKK3sKKyAgICBGbG9hdFBvaW50IHNjYWxlZFBvc2l0aW9uOwor
ICAgIEZsb2F0UG9pbnQzRCBzY2FsZWRBbmNob3JQb2ludDsKKyAgICBGbG9hdFNpemUgc2NhbGVk
U2l6ZTsKKworICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFsaWduIGNvbXBvc2l0aW5nIGxheWVycyB0
byBwaXhlbCBib3VuZGFyaWVzIHdoZW4gcGFnZSBzY2FsZSBjaGFuZ2VzCisKKyAgICAvLyBGSVhN
RTogTmVlZCB0byBzdXBwb3J0IHNjYWxpbmcKKyAgICBzY2FsZWRQb3NpdGlvbiA9IG1fcG9zaXRp
b247CisgICAgc2NhbGVkQW5jaG9yUG9pbnQgPSBtX2FuY2hvclBvaW50OworICAgIHNjYWxlZFNp
emUgPSBtX3NpemU7CisKKyAgICBGbG9hdFJlY3QgYWRqdXN0ZWRCb3VuZHMobV9ib3VuZHNPcmln
aW4gLCBzY2FsZWRTaXplKTsKKworICAgIC8vIFVwZGF0ZSBwb3NpdGlvbi4KKyAgICBGbG9hdFBv
aW50IGFkanVzdGVkUG9zaXRpb24oc2NhbGVkUG9zaXRpb24ueCgpICsgc2NhbGVkQW5jaG9yUG9p
bnQueCgpICogc2NhbGVkU2l6ZS53aWR0aCgpLCBzY2FsZWRQb3NpdGlvbi55KCkgKyBzY2FsZWRB
bmNob3JQb2ludC55KCkgKiBzY2FsZWRTaXplLmhlaWdodCgpKTsKKworICAgCisgICAgLy8gc2V0
Qm91bmRzCisgICAgY2x1dHRlcl9hY3Rvcl9zZXRfc2l6ZShDTFVUVEVSX0FDVE9SKG1fbGF5ZXIu
Z2V0KCkpLCBhZGp1c3RlZEJvdW5kcy53aWR0aCgpLCBhZGp1c3RlZEJvdW5kcy5oZWlnaHQoKSk7
CisKKyAgICAvLyBzZXRQb3NpdGlvbgorICAgIGNsdXR0ZXJfYWN0b3Jfc2V0X3Bvc2l0aW9uKENM
VVRURVJfQUNUT1IobV9sYXllci5nZXQoKSksIGFkanVzdGVkUG9zaXRpb24ueCgpLCBhZGp1c3Rl
ZFBvc2l0aW9uLnkoKSk7CisKKyAgICAvLyBzZXRBbmNob3JQb2ludAorICAgIGdyYXBoaWNzX2xh
eWVyX2FjdG9yX3NldF9hbmNob3JfcG9pbnQobV9sYXllci5nZXQoKSwgc2NhbGVkQW5jaG9yUG9p
bnQueCgpLCBzY2FsZWRBbmNob3JQb2ludC55KCksIHNjYWxlZEFuY2hvclBvaW50LnooKSk7Cit9
CisKKy8vIEFwcGx5IHRoZSB0cmVlIG9mIEdyYXBoaWNzTGF5ZXJzIHRvIHRoZSB0cmVlIG9mIENs
dXR0ZXJBY3RvcnMKKy8vIEVhY2ggR3JhcGhpY3NMYXllciBoYXMgdGhlIGNvcnJlc3BvbmRpbmcg
bGF5ZXIgaW4gdGhlIHBsYXRmb3JtIHBvcnQgKENsdXR0ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJD
bHV0dGVyOjp1cGRhdGVTdWJsYXllckxpc3QoKQoreworICAgIEdyYXBoaWNzTGF5ZXJBY3Rvckxp
c3QgbmV3U3VibGF5ZXJzOworICAgIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxk
TGF5ZXJzID0gY2hpbGRyZW4oKTsKKworICAgIGlmIChjaGlsZExheWVycy5zaXplKCkgPiAwKSB7
CisgICAgICAgIHNpemVfdCBudW1DaGlsZHJlbiA9IGNoaWxkTGF5ZXJzLnNpemUoKTsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7CisgICAgICAgICAg
ICBHcmFwaGljc0xheWVyQ2x1dHRlciogY3VyQ2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xh
eWVyQ2x1dHRlcio+KGNoaWxkTGF5ZXJzW2ldKTsKKyAgICAgICAgICAgIEdyYXBoaWNzTGF5ZXJB
Y3RvciogY2hpbGRMYXllciA9IGN1ckNoaWxkLT5sYXllckZvclN1cGVybGF5ZXIoKTsKKyAgICAg
ICAgICAgIGdfYXNzZXJ0KEdSQVBISUNTX0xBWUVSX0lTX0FDVE9SKGNoaWxkTGF5ZXIpKTsKKyAg
ICAgICAgICAgIG5ld1N1YmxheWVycy5hcHBlbmQoY2hpbGRMYXllcik7CisgICAgICAgIH0KKwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld1N1YmxheWVycy5zaXplKCk7IGkrKykg
eworICAgICAgICAgICAgQ2x1dHRlckFjdG9yKiBsYXllckFjdG9yID0gQ0xVVFRFUl9BQ1RPUihu
ZXdTdWJsYXllcnNbaV0uZ2V0KCkpOworICAgICAgICAgICAgQ2x1dHRlckFjdG9yKiBwYXJlbnRB
Y3RvciA9IGNsdXR0ZXJfYWN0b3JfZ2V0X3BhcmVudChsYXllckFjdG9yKTsKKyAgICAgICAgICAg
IGlmIChwYXJlbnRBY3RvcikKKyAgICAgICAgICAgICAgICBjbHV0dGVyX2NvbnRhaW5lcl9yZW1v
dmVfYWN0b3IoQ0xVVFRFUl9DT05UQUlORVIocGFyZW50QWN0b3IpLCBsYXllckFjdG9yKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGdyYXBoaWNzX2xheWVyX2FjdG9yX3NldF9zdWJsYXllcnMo
bV9sYXllci5nZXQoKSwgbmV3U3VibGF5ZXJzKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ2x1
dHRlcjo6dXBkYXRlTGF5ZXJOYW1lcygpCit7CisgICAgY2x1dHRlcl9hY3Rvcl9zZXRfbmFtZShD
TFVUVEVSX0FDVE9SKG1fbGF5ZXIuZ2V0KCkpLCBuYW1lKCkudXRmOCgpLmRhdGEoKSk7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNsdXR0ZXI6OnVwZGF0ZVRyYW5zZm9ybSgpCit7CisgICAgQ29n
bE1hdHJpeCBtYXRyaXggPSBtX3RyYW5zZm9ybTsKKyAgICBncmFwaGljc19sYXllcl9hY3Rvcl9z
ZXRfdHJhbnNmb3JtKHByaW1hcnlMYXllcigpLCAmbWF0cml4KTsKK30KKwordm9pZCBHcmFwaGlj
c0xheWVyQ2x1dHRlcjo6dXBkYXRlTGF5ZXJEcmF3c0NvbnRlbnQoZmxvYXQgcGFnZVNjYWxlRmFj
dG9yLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvblJlbGF0aXZlVG9CYXNlKQoreworICAgIGlm
IChtX2RyYXdzQ29udGVudCkgeworICAgICAgICAvLyBGSVhNRTogSXQgbmVlZHMgdG8gcGFpbnQg
Y29udGVudCBpbnNpZGUgYSBsYXllci4KKyAgICAgICAgZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jfc2V0
X2RyYXdzX2NvbnRlbnQobV9sYXllci5nZXQoKSwgVFJVRSk7CisKKyAgICAgICAgc2V0TmVlZHNE
aXNwbGF5KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ3JhcGhpY3NfbGF5ZXJfYWN0b3Jfc2V0
X2RyYXdzX2NvbnRlbnQobV9sYXllci5nZXQoKSwgRkFMU0UpOworICAgICAgICBncmFwaGljc19s
YXllcl9hY3Rvcl9zZXRfc3VyZmFjZShtX2xheWVyLmdldCgpLCAwKTsKKyAgICB9CisKKyAgICB1
cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKK30KKworR3JhcGhpY3NMYXllckFjdG9yKiBHcmFwaGlj
c0xheWVyQ2x1dHRlcjo6bGF5ZXJGb3JTdXBlcmxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9sYXllci5nZXQoKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVy
LmgKaW5kZXggNDJmNmI3Ni4uNDQ1ODQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIu
aApAQCAtMjksMjQgKzI5LDExMiBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogCisjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgIkdSZWZQdHJDbHV0dGVyLmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIK
KyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCi0jaW5jbHVkZSA8Y2x1dHRlci9jbHV0dGVyLmg+Cit0eXBlZGVmIHN0cnVjdCBfR3JhcGhp
Y3NMYXllckFjdG9yIEdyYXBoaWNzTGF5ZXJBY3RvcjsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBHcmFwaGljc0xheWVyQ2x1dHRlciA6IHB1YmxpYyBHcmFwaGljc0xheWVyIHsKK2Ns
YXNzIFRyYW5zZm9ybVN0YXRlOworCit0eXBlZGVmIFZlY3RvcjxHUmVmUHRyPEdyYXBoaWNzTGF5
ZXJBY3Rvcj4gPiBHcmFwaGljc0xheWVyQWN0b3JMaXN0OworCitjbGFzcyBHcmFwaGljc0xheWVy
Q2x1dHRlciA6IHB1YmxpYyBHcmFwaGljc0xheWVyLCBwdWJsaWMgUGxhdGZvcm1DbHV0dGVyTGF5
ZXJDbGllbnQgewogcHVibGljOgorICAgIGVudW0gTGF5ZXJUeXBlIHsgTGF5ZXJUeXBlTGF5ZXIs
IExheWVyVHlwZVdlYkxheWVyLCBMYXllclR5cGVWaWRlb0xheWVyLCBMYXllclR5cGVUcmFuc2Zv
cm1MYXllciwgTGF5ZXJUeXBlUm9vdExheWVyLCBMYXllclR5cGVDdXN0b20gfTsKKwogICAgIEdy
YXBoaWNzTGF5ZXJDbHV0dGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5H
cmFwaGljc0xheWVyQ2x1dHRlcigpOwogCisgICAgLy8gIFJlaW1wbGVtZW50ZWQgZnJvbSBHcmFw
aGljc0xheWVyCiAgICAgdmlydHVhbCBDbHV0dGVyQWN0b3IqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2hpbGQoR3JhcGhpY3NMYXllciopOworICAgIHZpcnR1
YWwgdm9pZCBhZGRDaGlsZEF0SW5kZXgoR3JhcGhpY3NMYXllciosIGludCBpbmRleCk7CisgICAg
dmlydHVhbCB2b2lkIGFkZENoaWxkQWJvdmUoR3JhcGhpY3NMYXllciosIEdyYXBoaWNzTGF5ZXIq
IHNpYmxpbmcpOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZEJlbG93KEdyYXBoaWNzTGF5ZXIq
LCBHcmFwaGljc0xheWVyKiBzaWJsaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRnJvbVBh
cmVudCgpOworICAgIHZpcnR1YWwgYm9vbCByZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xk
Q2hpbGQsIEdyYXBoaWNzTGF5ZXIqIG5ld0NoaWxkKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0Q2hp
bGRyZW4oY29uc3QgVmVjdG9yPEdyYXBoaWNzTGF5ZXIqPiYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRQYXJlbnQoR3JhcGhpY3NMYXllciopOworCisgICAgdmlydHVhbCB2b2lkIHNldERyYXdzQ29u
dGVudChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQ
b2ludDNEJik7CisgICAgdmlydHVhbCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBGbG9hdFNpemUmKTsKKworICAgIHZp
cnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TmFtZShjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheUluUmVj
dChjb25zdCBGbG9hdFJlY3QmKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdT
dGF0ZShjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5n
U3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisKKyAgICB2b2lkIHJlY3Vyc2l2ZUNvbW1pdENoYW5n
ZXMoY29uc3QgVHJhbnNmb3JtU3RhdGUmLCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IgPSAxLCBjb25z
dCBGbG9hdFBvaW50JiBwb3NpdGlvblJlbGF0aXZlVG9CYXNlID0gRmxvYXRQb2ludCgpLCBib29s
IGFmZmVjdGVkQnlQYWdlU2NhbGUgPSBmYWxzZSk7CiBwcml2YXRlOgotICAgIEdSZWZQdHI8Q2x1
dHRlckFjdG9yPiBtX2xheWVyOworCisgICAgRmxvYXRQb2ludCBjb21wdXRlUG9zaXRpb25SZWxh
dGl2ZVRvQmFzZShmbG9hdCYgcGFnZVNjYWxlKSBjb25zdDsKKyAgICB2b2lkIGNvbW1pdExheWVy
Q2hhbmdlc0JlZm9yZVN1YmxheWVycyhmbG9hdCBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uUmVsYXRpdmVUb0Jhc2UpOworICAgIHZvaWQgY29tbWl0TGF5ZXJDaGFu
Z2VzQWZ0ZXJTdWJsYXllcnMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsdXR0ZXJM
YXllckFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIGJlZ2luVGltZSk7CisgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtQ2x1dHRlckxheWVyUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBjbGlwKTsKKworICAgIEdyYXBoaWNzTGF5ZXJBY3RvciogcHJpbWFyeUxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQorICAgIEdyYXBoaWNzTGF5ZXJBY3Rv
ciogbGF5ZXJGb3JTdXBlcmxheWVyKCkgY29uc3Q7CisgICAgZW51bSBMYXllckNoYW5nZSB7Cisg
ICAgICAgIE5vQ2hhbmdlID0gMCwKKyAgICAgICAgTmFtZUNoYW5nZWQgPSAxIDw8IDEsCisgICAg
ICAgIENoaWxkcmVuQ2hhbmdlZCA9IDEgPDwgMiwgLy8gYWxzbyB1c2VkIGZvciBjb250ZW50IGxh
eWVyLCBhbmQgcHJlc2VydmVzLTNkLCBhbmQgc2l6ZSBpZiB0aWxpbmcgY2hhbmdlcz8KKyAgICAg
ICAgR2VvbWV0cnlDaGFuZ2VkID0gMSA8PCAzLAorICAgICAgICBUcmFuc2Zvcm1DaGFuZ2VkID0g
MSA8PCA0LAorICAgICAgICBDaGlsZHJlblRyYW5zZm9ybUNoYW5nZWQgPSAxIDw8IDUsCisgICAg
ICAgIFByZXNlcnZlczNEQ2hhbmdlZCA9IDEgPDwgNiwKKyAgICAgICAgTWFza3NUb0JvdW5kc0No
YW5nZWQgPSAxIDw8IDcsCisgICAgICAgIERyYXdzQ29udGVudENoYW5nZWQgPSAxIDw8IDgsIC8v
IG5lZWQgdGhpcz8KKyAgICAgICAgQmFja2dyb3VuZENvbG9yQ2hhbmdlZCA9IDEgPDwgOSwKKyAg
ICAgICAgQ29udGVudHNPcGFxdWVDaGFuZ2VkID0gMSA8PCAxMCwKKyAgICAgICAgQmFja2ZhY2VW
aXNpYmlsaXR5Q2hhbmdlZCA9IDEgPDwgMTEsCisgICAgICAgIE9wYWNpdHlDaGFuZ2VkID0gMSA8
PCAxMiwKKyAgICAgICAgQW5pbWF0aW9uQ2hhbmdlZCA9IDEgPDwgMTMsCisgICAgICAgIERpcnR5
UmVjdHNDaGFuZ2VkID0gMSA8PCAxNCwKKyAgICAgICAgQ29udGVudHNJbWFnZUNoYW5nZWQgPSAx
IDw8IDE1LAorICAgICAgICBDb250ZW50c01lZGlhTGF5ZXJDaGFuZ2VkID0gMSA8PCAxNiwKKyAg
ICAgICAgQ29udGVudHNDYW52YXNMYXllckNoYW5nZWQgPSAxIDw8IDE3LAorICAgICAgICBDb250
ZW50c1JlY3RDaGFuZ2VkID0gMSA8PCAxOCwKKyAgICAgICAgTWFza0xheWVyQ2hhbmdlZCA9IDEg
PDwgMTksCisgICAgICAgIFJlcGxpY2F0ZWRMYXllckNoYW5nZWQgPSAxIDw8IDIwLAorICAgICAg
ICBDb250ZW50c05lZWRzRGlzcGxheSA9IDEgPDwgMjEsCisgICAgICAgIEFjY2VsZXJhdGVzRHJh
d2luZ0NoYW5nZWQgPSAxIDw8IDIyLAorICAgICAgICBDb250ZW50c1NjYWxlQ2hhbmdlZCA9IDEg
PDwgMjMKKyAgICB9OworCisgICAgdHlwZWRlZiB1bnNpZ25lZCBMYXllckNoYW5nZUZsYWdzOwor
ICAgIHZvaWQgbm90ZUxheWVyUHJvcGVydHlDaGFuZ2VkKExheWVyQ2hhbmdlRmxhZ3MgZmxhZ3Mp
OworICAgIHZvaWQgbm90ZVN1YmxheWVyc0NoYW5nZWQoKTsKKworICAgIHZvaWQgdXBkYXRlQmFj
a2ZhY2VWaXNpYmlsaXR5KCk7CisgICAgdm9pZCB1cGRhdGVMYXllck5hbWVzKCk7CisgICAgdm9p
ZCB1cGRhdGVTdWJsYXllckxpc3QoKTsKKyAgICB2b2lkIHVwZGF0ZUdlb21ldHJ5KGZsb2F0IHBp
eGVsQWxpZ25tZW50U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uUmVsYXRpdmVUb0Jh
c2UpOworICAgIHZvaWQgdXBkYXRlVHJhbnNmb3JtKCk7CisgICAgdm9pZCB1cGRhdGVMYXllckRy
YXdzQ29udGVudChmbG9hdCBwaXhlbEFsaWdubWVudFNjYWxlLCBjb25zdCBGbG9hdFBvaW50JiBw
b3NpdGlvblJlbGF0aXZlVG9CYXNlKTsKKyAgIAorICAgIHZvaWQgcmVwYWludExheWVyRGlydHlS
ZWN0cygpOworCisgICAgR1JlZlB0cjxHcmFwaGljc0xheWVyQWN0b3I+IG1fbGF5ZXI7CisKKyAg
ICBWZWN0b3I8RmxvYXRSZWN0PiBtX2RpcnR5UmVjdHM7CisgICAgTGF5ZXJDaGFuZ2VGbGFncyBt
X3VuY29tbWl0dGVkQ2hhbmdlczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1D
bHV0dGVyTGF5ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Ns
dXR0ZXIvUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43MzA3NDE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9QbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudC5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIENvbGxhYm9yYSBMdGQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50X2gKKyNkZWZpbmUgUGxhdGZvcm1DbHV0dGVy
TGF5ZXJDbGllbnRfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1D
bHV0dGVyTGF5ZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNs
dXR0ZXJMYXllclBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYg
aW5DbGlwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ2x1dHRlckxheWVyQW5pbWF0
aW9uU3RhcnRlZChkb3VibGUgc3RhcnRUaW1lKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIH5QbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudCgpIHsgfQorfTsKKworfQorCisjZW5kaWYg
Ly8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjZW5kaWYgLy8gUGxhdGZvcm1DbHV0
dGVyTGF5ZXJDbGllbnRfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jbHV0dGVyL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2x1dHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2x1
dHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFhZjYxMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIv
VHJhbnNmb3JtYXRpb25NYXRyaXhDbHV0dGVyLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIENvbGxhYm9yYSBMdGQuCisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyIHZlcnNpb24gMi4xIG9mCisgKiAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorICogIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgorCisjaW5jbHVkZSA8Y29nbC9jb2dsLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworVHJhbnNmb3JtYXRpb25NYXRyaXg6Om9wZXJhdG9yIENvZ2xNYXRyaXgoKSBjb25z
dAoreworICAgIENvZ2xNYXRyaXggbWF0cml4OworCisgICAgbWF0cml4Lnh4ID0gKGZsb2F0KW0x
MSgpOworICAgIG1hdHJpeC54eSA9IChmbG9hdCltMjEoKTsKKyAgICBtYXRyaXgueHogPSAoZmxv
YXQpbTMxKCk7CisgICAgbWF0cml4Lnh3ID0gKGZsb2F0KW00MSgpOworCisgICAgbWF0cml4Lnl4
ID0gKGZsb2F0KW0xMigpOworICAgIG1hdHJpeC55eSA9IChmbG9hdCltMjIoKTsKKyAgICBtYXRy
aXgueXogPSAoZmxvYXQpbTMyKCk7CisgICAgbWF0cml4Lnl3ID0gKGZsb2F0KW00MigpOworCisg
ICAgbWF0cml4Lnp4ID0gKGZsb2F0KW0xMygpOworICAgIG1hdHJpeC56eSA9IChmbG9hdCltMjMo
KTsKKyAgICBtYXRyaXguenogPSAoZmxvYXQpbTMzKCk7CisgICAgbWF0cml4Lnp3ID0gKGZsb2F0
KW00MygpOworCisgICAgbWF0cml4Lnd4ID0gKGZsb2F0KW0xNCgpOworICAgIG1hdHJpeC53eSA9
IChmbG9hdCltMjQoKTsKKyAgICBtYXRyaXgud3ogPSAoZmxvYXQpbTM0KCk7CisgICAgbWF0cml4
Lnd3ID0gKGZsb2F0KW00NCgpOworCisgICAgcmV0dXJuIG1hdHJpeDsKK30KKworfQorCisvLyB2
aW06IHRzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2x1dHRlci93ZWJraXRjbHV0dGVyaW5jbHVkZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2x1dHRlci93ZWJraXRjbHV0dGVyaW5jbHVkZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNGVmODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL3dlYmtpdGNsdXR0ZXJpbmNsdWRl
LmgKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgQ29sbGFib3Jh
IEx0ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpZm5kZWYgX19XRUJLSVRf
Q0xVVFRFUl9JTkNMVURFCisjZGVmaW5lIF9fV0VCS0lUX0NMVVRURVJfSU5DTFVERSAxCisKKyNp
bmNsdWRlIDxjbHV0dGVyL2NsdXR0ZXIuaD4KKyNpbmNsdWRlIDxjbHV0dGVyL3gxMS9jbHV0dGVy
LXgxMS5oPgorCisjdW5kZWYgQ3Vyc29yCisjdW5kZWYgTm9uZQorI3VuZGVmIFN0YXR1cworI3Vu
ZGVmIEZvbnQKKyN1bmRlZiBTY3JlZW4KKyN1bmRlZiBBdXRvCisjdW5kZWYgU2ltcGxlCisjdW5k
ZWYgQ29tcGxleAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApp
bmRleCBiMTY0ZDc5Li5lOGRlZGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oCkBAIC0zNSw2ICszNSw5IEBACiAjaWYgVVNFKENBKQogdHlwZWRlZiBzdHJ1Y3QgQ0FUcmFu
c2Zvcm0zRCBDQVRyYW5zZm9ybTNEOwogI2VuZGlmCisjaWYgVVNFKENMVVRURVIpCit0eXBlZGVm
IHN0cnVjdCBfQ29nbE1hdHJpeCBDb2dsTWF0cml4OworI2VuZGlmCiAjaWYgVVNFKENHKQogdHlw
ZWRlZiBzdHJ1Y3QgQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dBZmZpbmVUcmFuc2Zvcm07CiAjZWxpZiBV
U0UoQ0FJUk8pCkBAIC0zMjUsNiArMzI4LDkgQEAgcHVibGljOgogICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4KGNvbnN0IENBVHJhbnNmb3JtM0QmKTsKICAgICBvcGVyYXRvciBDQVRyYW5zZm9ybTNE
KCkgY29uc3Q7CiAjZW5kaWYKKyNpZiBVU0UoQ0xVVFRFUikKKyAgICBvcGVyYXRvciBDb2dsTWF0
cml4KCkgY29uc3Q7CisjZW5kaWYKICNpZiBVU0UoQ0cpCiAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXgoY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBvcGVyYXRvciBDR0FmZmluZVRyYW5z
Zm9ybSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dGdsb2JhbHMuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3Bw
CmluZGV4IDc4YTQ5NDkuLjFkYzFjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRnbG9iYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0Z2xvYmFscy5jcHAKQEAgLTI1LDYgKzI1LDEyIEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAj
aW5jbHVkZSAiQ29udGV4dE1lbnVJdGVtLmgiCiAjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29u
dGV4dEd0ay5oIgorCisjaWYgVVNFKENMVVRURVIpCisjaW5jbHVkZSA8d2Via2l0Y2x1dHRlcmlu
Y2x1ZGUuaD4KKyNpbmNsdWRlIDxjbHV0dGVyLWd0ay9jbHV0dGVyLWd0ay5oPgorI2VuZGlmCisK
ICNpbmNsdWRlICJHdGtVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJJY29uRGF0YWJhc2UuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCkBAIC01NiwxMCArNjIsNiBAQAogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAKLSNpZiBV
U0UoQ0xVVFRFUikKLSNpbmNsdWRlIDxjbHV0dGVyLWd0ay9jbHV0dGVyLWd0ay5oPgotI2VuZGlm
Ci0KIHN0YXRpYyBXZWJLaXRDYWNoZU1vZGVsIGNhY2hlTW9kZWwgPSBXRUJLSVRfQ0FDSEVfTU9E
RUxfREVGQVVMVDsKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CmRpZmYgLS1naXQgYS9Ub29s
cy9ndGsvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcwppbmRleCAz
MzA2ZDc0Li43ZGJjZDAzIDEwMDY0NAotLS0gYS9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCisr
KyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKQEAgLTE4LDYgKzE4LDEwIEBACiAgICAgICA8
ZGVwIHBhY2thZ2U9ImxpYnNvdXAiLz4KICAgICAgIDxkZXAgcGFja2FnZT0iYXQtc3BpMi1jb3Jl
Ii8+CiAgICAgICA8ZGVwIHBhY2thZ2U9ImF0LXNwaTItYXRrIi8+CisgICAgICA8ZGVwIHBhY2th
Z2U9ImNvZ2wiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0ianNvbi1nbGliIi8+CisgICAgICA8ZGVw
IHBhY2thZ2U9ImNsdXR0ZXIiLz4KKyAgICAgIDxkZXAgcGFja2FnZT0iY2x1dHRlci1ndGsiLz4K
ICAgICA8L2RlcGVuZGVuY2llcz4KICAgPC9tZXRhbW9kdWxlPgogCkBAIC0yMDksNCArMjEzLDQ5
IEBACiAgICAgPC9kZXBlbmRlbmNpZXM+CiAgIDwvYXV0b3Rvb2xzPgogCisgPGF1dG90b29scyBp
ZD0iY29nbCIKKyAgICAgICAgICAgYXV0b2dlbi1zaD0iY29uZmlndXJlIgorICAgICAgICAgICBh
dXRvZ2VuYXJncz0iLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iPgorICAgIDxicmFuY2ggaGFzaD0i
c2hhMjU2OmVjMjZmZDkwYzRiYTU2NDM4NzViNWYzYTA0YjRhYjE0YjI0ZjBkNjE4YmEzZDIzOWQ2
MWU3NzNjM2UzY2E4YzciIG1vZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2VzL2NvZ2wvMS44L2NvZ2wt
MS44LjIudGFyLnh6IiByZXBvPSJmdHAuZ25vbWUub3JnIiBzaXplPSIxMDI5MzA0IiB2ZXJzaW9u
PSIxLjguMiIvPgorICAgIDxwa2ctY29uZmlnLz4KKyAgICA8YnJhbmNoIHJldmlzaW9uPSJjb2ds
LTEuOCIvPgorICAgIDxkZXBlbmRlbmNpZXM+CisgICAgICA8ZGVwIHBhY2thZ2U9ImdsaWIiLz4K
KyAgICA8L2RlcGVuZGVuY2llcz4KKyAgPC9hdXRvdG9vbHM+CisKKyAgPGF1dG90b29scyBpZD0i
anNvbi1nbGliIgorICAgICAgICAgICBhdXRvZ2VuLXNoPSJjb25maWd1cmUiCisgICAgICAgICAg
IGF1dG9nZW5hcmdzPSItLWRpc2FibGUtaW50cm9zcGVjdGlvbiI+CisgICAgPGJyYW5jaCBoYXNo
PSJzaGEyNTY6YjgxNmE1ZmEzZTU2NjRiMDg2NzlhNjk3MmE2ZTU2OTNkNmNjMTk5MGZmNGE2Zjk0
YzA3NTU0ZGI5NmJlOTRhNyIgbW9kdWxlPSIvcHViL0dOT01FL3NvdXJjZXMvanNvbi1nbGliLzAu
MTQvanNvbi1nbGliLTAuMTQuMi50YXIueHoiIHJlcG89ImZ0cC5nbm9tZS5vcmciIHNpemU9IjQ0
NTM5NiIgdmVyc2lvbj0iMC4xNC4yIi8+CisgICAgPGJyYW5jaCByZXZpc2lvbj0ianNvbi1nbGli
LTAtMTQiLz4KKyAgICA8ZGVwZW5kZW5jaWVzPgorICAgICAgPGRlcCBwYWNrYWdlPSJnbGliIi8+
CisgICAgPC9kZXBlbmRlbmNpZXM+CisgIDwvYXV0b3Rvb2xzPgorCisgIDxhdXRvdG9vbHMgaWQ9
ImNsdXR0ZXIiCisgICAgICAgICAgIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSIKKyAgICAgICAgICAg
YXV0b2dlbmFyZ3M9Ii0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIj4KKyAgICA8YnJhbmNoIGhhc2g9
InNoYTI1NjpkYzg5OWYyNjQ0OGYzMWNiMzFlNzJkODA2NTBiOGM4YWUwNWFjYWNkNWI1ZDVhNDQ3
OThlYWJhY2EwZGRmYTJmIiBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9jbHV0dGVyLzEuOC9j
bHV0dGVyLTEuOC4yLnRhci54eiIgcmVwbz0iZnRwLmdub21lLm9yZyIgc2l6ZT0iNDQ1NzQ0MCIg
dmVyc2lvbj0iMS44LjIiLz4KKyAgICA8YnJhbmNoIHJldmlzaW9uPSJjbHV0dGVyLTEuOCIvPgor
ICAgIDxkZXBlbmRlbmNpZXM+CisgICAgICA8ZGVwIHBhY2thZ2U9ImNvZ2wiLz4KKyAgICAgIDxk
ZXAgcGFja2FnZT0iZ2xpYiIvPgorICAgICAgPGRlcCBwYWNrYWdlPSJjYWlybyIvPgorICAgICAg
PGRlcCBwYWNrYWdlPSJwYW5nbyIvPgorICAgICAgPGRlcCBwYWNrYWdlPSJqc29uLWdsaWIiLz4K
KyAgICA8L2RlcGVuZGVuY2llcz4KKyAgPC9hdXRvdG9vbHM+CisKKyAgPGF1dG90b29scyBpZD0i
Y2x1dHRlci1ndGsiCisgICAgICAgICAgIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSIKKyAgICAgICAg
ICAgYXV0b2dlbmFyZ3M9Ii0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIj4KKyAgICA8YnJhbmNoIGhh
c2g9InNoYTI1NjowNDRlNDZiNGIzNmU3MWJkMDVmNjc3NjM5YmJjNWY4YzZkZWJkNjU1ZTJjZTY5
YThkOTM3ZWQxYjRlNzlkMTkyIiBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9jbHV0dGVyLWd0
ay8xLjAvY2x1dHRlci1ndGstMS4wLjIudGFyLnh6IiByZXBvPSJmdHAuZ25vbWUub3JnIiBzaXpl
PSIzMDUyMTIiIHZlcnNpb249IjEuMC4yIi8+CisgICAgPGJyYW5jaCByZXZpc2lvbj0iY2x1dHRl
ci1ndGstMS4wIi8+CisgICAgPGRlcGVuZGVuY2llcz4KKyAgICAgIDxkZXAgcGFja2FnZT0iY2x1
dHRlciIvPgorICAgICAgPGRlcCBwYWNrYWdlPSJndGsrIi8+CisgICAgPC9kZXBlbmRlbmNpZXM+
CisgIDwvYXV0b3Rvb2xzPgogPC9tb2R1bGVzZXQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>149961</attachid>
            <date>2012-06-28 08:57:59 -0700</date>
            <delta_ts>2012-06-28 08:57:59 -0700</delta_ts>
            <desc>test case (rotate3d)</desc>
            <filename>transform3d-rotate.html</filename>
            <type>text/html</type>
            <size>413</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFs
Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25h
bC5kdGQiPgo8aHRtbD4KPGhlYWQ+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVl
biI+CiNza2V3IHsKCS13ZWJraXQtdHJhbnNmb3JtOiAgcm90YXRlM2QoMCwwLDAsIDMwZGVnKTsJ
CiAgICBsZWZ0OiAxMDBweDsKICAgIHRvcDogMTAwcHg7CiAgICB3aWR0aDogMTAwcHg7CiAgICBo
ZWlnaHQ6IDEwMHB4OwogICAgYmFja2dyb3VuZDogZ3JlZW47Cn0KPC9zdHlsZT4KPC9oZWFkPgo8
Ym9keT4KCjxkaXYgaWQ9c2tldz4KVGhpcyBpcyBhIHRyYW5zZm9ybSBkZW1vLgo8L2Rpdj4KCjwv
Ym9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159320</attachid>
            <date>2012-08-19 19:38:03 -0700</date>
            <delta_ts>2012-08-20 02:17:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73767-20120820113721.patch</filename>
            <type>text/plain</type>
            <size>16095</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1OTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU3NjkzMTE3YmE0NmM3
OTY2MTJkODFkODYzMDk1OWNmYzcyNjIyZi4uZjI0OGQ1OTFlNjhjNzcxZWI4ZGVmYWE0Y2EwZmFl
MDlmODFlMzg3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA4LTE5ICBKb29u
ZSBIdXIgIDxqb29uZS5odXJAaW50ZWwuY29tPiwgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3Vz
dGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEdy
YXBoaWNzTGF5ZXIgdXNpbmcgQ2x1dHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgbmVlZGVkIGZvciBlbmFibGlu
ZyBBY2NlbGVyYXRlZCBDb21wb3NpdGluZyhDbHV0dGVyIGJhY2tlbmQpIAorICAgICAgICB3aXRo
IHRoZSBwYXRjaGVzIHN1Ym1pdHRlZCBpbiBidWcgOTIwNDUgYW5kIDkxOTQwLgorICAgICAgICAK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGlzIHdpbGwgYmUgY292ZXJlZCBieSBwaXhlbCB0ZXN0
cyBmb3IgUXQvR1RLKyBhY2NlbGVyYXRlZAorICAgICAgICBjb21wb3NpdGluZyBhbmQgM0QgdHJh
bnNmb3Jtcy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogcGxh
dGZvcm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRlci5jcHA6CisgICAgICAgIChXVEY6OmFkb3B0R1Jl
Zik6CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpHcmFwaGljc0xheWVyQWN0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaDogQWRkIEdSZWZQdHIg
c3VwcG9ydCBmb3IgR3JhcGhpY3NMYXllckFjdG9yIHR5cGUgdG8gV2ViQ29yZS4KKyAgICAgICAg
KFdURik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9QbGF0Zm9ybUNsdXR0
ZXJMYXllckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUGxh
dGZvcm1DbHV0dGVyTGF5ZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1DbHV0
dGVyTGF5ZXJDbGllbnQ6On5QbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9UcmFuc2Zvcm1hdGlvbk1hdHJpeENsdXR0ZXIuY3Bw
OiBBZGRlZCB0byBjb252ZXJ0IENvZ2xNYXRyaXggdG8gCisgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6b3BlcmF0b3IgQ29nbE1hdHJpeCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oOgorICAgICAgICAoVHJhbnNm
b3JtYXRpb25NYXRyaXgpOgorCiAyMDEyLTA4LTE2ICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50
ZWwuY29tPiwgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9y
YS5jb20+CiAKICAgICAgICAgW0dUS10gVXBkYXRlIEdyYXBoaWNzTGF5ZXJDbHV0dGVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggOTczODU0ODM0ZjM0MmIxYWZhNTNlYjRmOTAzNDU3MmM5ZWY4NTUyNS4uOWE5OTVh
OGVjYzBmYWUxZWYwODI0MTU3MTc4NThmMzZmM2ExYWRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDEyLTA4LTE5ICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50ZWwuY29tPiwgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jb20+CisKKyAg
ICAgICAgW0dUS10gSW1wbGVtZW50IEdyYXBoaWNzTGF5ZXIgdXNpbmcgQ2x1dHRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBsaW5rIGVycm9y
cyBieSBhZGRpbmcgQ2x1dHRlciBsaWJyYXJ5IGFuZCBoZWFkZXIgdG8gV2ViS2l0MiBidWlsZC4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL0dOVW1ha2VmaWxlLmFtOgorCiAyMDEyLTA4LTE4ICBNaWtoYWlsIFBvemRueWFrb3Yg
IDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gZXdr
X2JhY2tfZm9yd2FyZF9saXN0X2l0ZW0gcHJvcGVydGllcyBzaG91bGQgYmUgaW4gc3luYyB3aXRo
IFdlYlByb2Nlc3NQcm94eTo6bV9iYWNrRm9yd2FyZExpc3RJdGVtTWFwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQppbmRleCBiMmQ4ZDNjZTRiMmU5YzA1MjA3NWRhZGE0YzdjMGViN2RhY2I2
NGUxLi4xNmI1OTFlZGY5OTA3YTU4MDlmYzgyMGQ4YTUwYmNhZjJlNDYyMjRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTYxNDUsNyArNjE0NSw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGlj
c0xheWVyQWN0b3IuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0
dGVyL0dyYXBoaWNzTGF5ZXJBY3Rvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5oCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1RyYW5zZm9ybWF0
aW9uTWF0cml4Q2x1dHRlci5jcHAKIGVuZGlmICAjIEVORCBVU0VfQ0xVVFRFUgogCiBpZiBVU0Vf
VEVYVFVSRV9NQVBQRVJfQ0FJUk8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2x1
dHRlci9HUmVmUHRyQ2x1dHRlci5jcHAKaW5kZXggMmEzNDE4NmMyNjE3NmZhNDRlNjAxZDgyYzQ4
OTIzOTUxZjQ5Mzk4ZC4uMGQ5YThjYzEzMjk2MzM3MzgyODgxYzQyYzQ5ZWQ2NmJkMmZiODQ0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRl
ci5jcHAKQEAgLTUwLDQgKzUwLDMwIEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPENsdXR0
ZXJBY3Rvcj4oQ2x1dHRlckFjdG9yKiBwdHIpCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKHB0cik7
CiB9CiAKK3RlbXBsYXRlIDw+IEdSZWZQdHI8R3JhcGhpY3NMYXllckFjdG9yPiBhZG9wdEdSZWYo
R3JhcGhpY3NMYXllckFjdG9yKiBwdHIpCit7CisgICAgaWYgKGdfb2JqZWN0X2lzX2Zsb2F0aW5n
KHB0cikpCisgICAgICAgIGdfb2JqZWN0X3JlZl9zaW5rKHB0cik7CisKKyAgICByZXR1cm4gR1Jl
ZlB0cjxHcmFwaGljc0xheWVyQWN0b3I+KHB0ciwgR1JlZlB0ckFkb3B0KTsKK30KKwordGVtcGxh
dGUgPD4gR3JhcGhpY3NMYXllckFjdG9yKiByZWZHUHRyPEdyYXBoaWNzTGF5ZXJBY3Rvcj4oR3Jh
cGhpY3NMYXllckFjdG9yKiBwdHIpCit7CisgICAgaWYgKHB0cikgeworICAgICAgICBpZiAoZ19v
YmplY3RfaXNfZmxvYXRpbmcocHRyKSkKKyAgICAgICAgICAgIGdfb2JqZWN0X3JlZl9zaW5rKHB0
cik7CisKKyAgICAgICAgZ19vYmplY3RfcmVmKHB0cik7CisgICAgfQorCisgICAgcmV0dXJuIHB0
cjsKK30KKwordGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHI8R3JhcGhpY3NMYXllckFjdG9yPihH
cmFwaGljc0xheWVyQWN0b3IqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAgICBnX29iamVj
dF91bnJlZihwdHIpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jbHV0
dGVyL0dSZWZQdHJDbHV0dGVyLmgKaW5kZXggYmRlYzY1NDgxYTAxOWIxYzM2N2I0MDBjYzVlM2U5
OTQyYmM2ZmYxOC4uMzVmZjg5ZTFlMzI2NDUyYzg1MDUyNmJiMTlhNzFkYWI1ZTcyNzk3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaApA
QCAtMjMsMTIgKzIzLDE2IEBACiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogCiB0
eXBlZGVmIHN0cnVjdCBfQ2x1dHRlckFjdG9yIENsdXR0ZXJBY3RvcjsKK3R5cGVkZWYgc3RydWN0
IF9HcmFwaGljc0xheWVyQWN0b3IgR3JhcGhpY3NMYXllckFjdG9yOwogCiBuYW1lc3BhY2UgV1RG
IHsKIAogdGVtcGxhdGU8PiBDbHV0dGVyQWN0b3IqIHJlZkdQdHI8Q2x1dHRlckFjdG9yPihDbHV0
dGVyQWN0b3IqIHB0cik7CiB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPENsdXR0ZXJBY3Rvcj4o
Q2x1dHRlckFjdG9yKiBwdHIpOwogCit0ZW1wbGF0ZTw+IEdyYXBoaWNzTGF5ZXJBY3RvciogcmVm
R1B0cjxHcmFwaGljc0xheWVyQWN0b3I+KEdyYXBoaWNzTGF5ZXJBY3RvciogcHRyKTsKK3RlbXBs
YXRlPD4gdm9pZCBkZXJlZkdQdHI8R3JhcGhpY3NMYXllckFjdG9yPihHcmFwaGljc0xheWVyQWN0
b3IqIHB0cik7CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRlckxheWVy
Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNzMwNzQxODRiYWE3ZWM2OTI5MDdmMmNmZWU3OTQwOWM1MjY5
NTljYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGllbnQuaApAQCAtMCwwICsxLDU4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9ybUNsdXR0
ZXJMYXllckNsaWVudF9oCisjZGVmaW5lIFBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50X2gKKwor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbHV0dGVyTGF5ZXJQYWludENv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGluQ2xpcCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsdXR0ZXJMYXllckFuaW1hdGlvblN0YXJ0ZWQoZG91Ymxl
IHN0YXJ0VGltZSkgPSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+UGxhdGZvcm1DbHV0
dGVyTGF5ZXJDbGllbnQoKSB7IH0KK307CisKK30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKKworI2VuZGlmIC8vIFBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50X2gK
KwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9U
cmFuc2Zvcm1hdGlvbk1hdHJpeENsdXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2x1dHRlci9UcmFuc2Zvcm1hdGlvbk1hdHJpeENsdXR0ZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmYxYWY2MTEyZGYxYmIzY2VkMTEzMmI0ODYxODE2ODg4ZWE4NTYzNzIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1RyYW5zZm9y
bWF0aW9uTWF0cml4Q2x1dHRlci5jcHAKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBDb2xsYWJvcmEgTHRkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2
ZXJzaW9uIDIuMSBvZgorICogIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKKworI2luY2x1ZGUgPGNvZ2wvY29nbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1RyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvciBDb2dsTWF0cml4KCkgY29uc3QKK3sKKyAg
ICBDb2dsTWF0cml4IG1hdHJpeDsKKworICAgIG1hdHJpeC54eCA9IChmbG9hdCltMTEoKTsKKyAg
ICBtYXRyaXgueHkgPSAoZmxvYXQpbTIxKCk7CisgICAgbWF0cml4Lnh6ID0gKGZsb2F0KW0zMSgp
OworICAgIG1hdHJpeC54dyA9IChmbG9hdCltNDEoKTsKKworICAgIG1hdHJpeC55eCA9IChmbG9h
dCltMTIoKTsKKyAgICBtYXRyaXgueXkgPSAoZmxvYXQpbTIyKCk7CisgICAgbWF0cml4Lnl6ID0g
KGZsb2F0KW0zMigpOworICAgIG1hdHJpeC55dyA9IChmbG9hdCltNDIoKTsKKworICAgIG1hdHJp
eC56eCA9IChmbG9hdCltMTMoKTsKKyAgICBtYXRyaXguenkgPSAoZmxvYXQpbTIzKCk7CisgICAg
bWF0cml4Lnp6ID0gKGZsb2F0KW0zMygpOworICAgIG1hdHJpeC56dyA9IChmbG9hdCltNDMoKTsK
KworICAgIG1hdHJpeC53eCA9IChmbG9hdCltMTQoKTsKKyAgICBtYXRyaXgud3kgPSAoZmxvYXQp
bTI0KCk7CisgICAgbWF0cml4Lnd6ID0gKGZsb2F0KW0zNCgpOworICAgIG1hdHJpeC53dyA9IChm
bG9hdCltNDQoKTsKKworICAgIHJldHVybiBtYXRyaXg7Cit9CisKK30KKworLy8gdmltOiB0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAppbmRleCBjYTY4YzU3
YWEyZDRiY2NhYTI1MTBlNTdhY2Y3ZTEwNDhkNzllNzY1Li43ZWY5ZGRhYThkNDZmMTRiNTMzZDgz
YzBkMWQ3OTEzMTQyZDg1NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
CkBAIC0zNSw2ICszNSw5IEBACiAjaWYgVVNFKENBKQogdHlwZWRlZiBzdHJ1Y3QgQ0FUcmFuc2Zv
cm0zRCBDQVRyYW5zZm9ybTNEOwogI2VuZGlmCisjaWYgVVNFKENMVVRURVIpCit0eXBlZGVmIHN0
cnVjdCBfQ29nbE1hdHJpeCBDb2dsTWF0cml4OworI2VuZGlmCiAjaWYgVVNFKENHKQogdHlwZWRl
ZiBzdHJ1Y3QgQ0dBZmZpbmVUcmFuc2Zvcm0gQ0dBZmZpbmVUcmFuc2Zvcm07CiAjZWxpZiBVU0Uo
Q0FJUk8pCkBAIC0zMjUsNiArMzI4LDkgQEAgcHVibGljOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4KGNvbnN0IENBVHJhbnNmb3JtM0QmKTsKICAgICBvcGVyYXRvciBDQVRyYW5zZm9ybTNEKCkg
Y29uc3Q7CiAjZW5kaWYKKyNpZiBVU0UoQ0xVVFRFUikKKyAgICBvcGVyYXRvciBDb2dsTWF0cml4
KCkgY29uc3Q7CisjZW5kaWYKICNpZiBVU0UoQ0cpCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgo
Y29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBvcGVyYXRvciBDR0FmZmluZVRyYW5zZm9y
bSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9T
b3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCAzZWRjZTBhYTJmMjFmZDY4YjI5M2Qx
MGM2OTVhZWRkYjk3MDZkZmQ2Li45MWYxYTk0MTllOGZiNWJlZGUzYzVhM2VkODg5MmMyNzNmZmJj
YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMzUxLDYgKzM1MSw3IEBAIFByb2dyYW1zX1dl
YktpdFdlYlByb2Nlc3NfQ1BQRkxBR1MgPSBcCiBQcm9ncmFtc19XZWJLaXRXZWJQcm9jZXNzX0NG
TEFHUyA9IFwKIAkkKGdsb2JhbF9jZmxhZ3MpIFwKIAkkKENBSVJPX0NGTEFHUykgXAorCSQoQ0xV
VFRFUl9DRkxBR1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChH
VEtfVU5JWF9QUklOVElOR19DRkxBR1MpIFwKQEAgLTM2Myw2ICszNjQsNyBAQCBQcm9ncmFtc19X
ZWJLaXRXZWJQcm9jZXNzX1NPVVJDRVMgPSBcCiBQcm9ncmFtc19XZWJLaXRXZWJQcm9jZXNzX0xE
QUREID0gXAogCWxpYmphdmFzY3JpcHRjb3JlZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJ
T05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKIAlsaWJ3ZWJraXQyZ3RrLUBX
RUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05A
LmxhIFwKKwkkKENMVVRURVJfTElCUykgXAogCSQoR0xJQl9MSUJTKSBcCiAJJChHVEtfTElCUykg
XAogCSQoR1RLX1VOSVhfUFJJTlRJTkdfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQppbmRleCAzZmFkZjQwYjRj
ZDNlNTA1MjE3OTk0ZDQ4ODlmZGUwNGJiOTY5ZmY5Li5lYjQxY2U1MWZhNmM5ZWEwNjhiYzI5ZTRi
MTdkZmYzM2JhOGYxNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQpAQCAtMzgsNiArMzgsNyBAQCB3ZWJraXQyX3Rl
c3RzX2NwcGZsYWdzID0gXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktp
dDIvd2Via2l0Mmd0ay9pbmNsdWRlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ayBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKKwkkKENMVVRURVJfQ0ZMQUdT
KSBcCiAJJChHTElCX0NGTEFHUykgXAogCSQoR1RLX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxB
R1MpCkBAIC00Niw2ICs0Nyw3IEBAIHdlYmtpdDJfdGVzdHNfbGRhZGQgPSBcCiAJTGlicmFyaWVz
L2xpYldlYktpdDJBUElUZXN0Q29yZS5sYSBcCiAJbGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJ
VEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEg
XAogCWxpYndlYmtpdDJndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdU
S19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAorCSQoQ0xVVFRFUl9MSUJTKSBcCiAJJChHRU9DTFVF
X0xJQlMpIFwKIAkkKEdMSUJfTElCUykgXAogCSQoR1RLX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhM2U2YWNjNGEwMWFjMmRlMjA0
OGFkMmZhOTYyMzk1NWU3ZjExMDY1Li5kMTBkYThjMTExYjkyNTZhODc5YWY0NGJlY2VkZGI3OWQw
NGM3NjYwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMTkgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBpbnRl
bC5jb20+LCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3Jh
LmNvbT4KKworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgR3JhcGhpY3NMYXllciB1c2luZyBDbHV0
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzc2
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVk
IGxpbmsgZXJyb3JzIGJ5IGFkZGluZyBDbHV0dGVyIGxpYnJhcnkgYW5kIGhlYWRlciB0byBNaW5p
QnJvd2VzciwKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciwgYW5kIFRlc3RXZWJLaXRBUEkgYnVp
bGRzLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9HTlVtYWtlZmlsZS5hbToKKwogMjAxMi0wOC0xNyAgS2lyYW4gTXVwcGFsYSAgPGNtdXBw
YWxhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2VsZiB0byB3ZWJraXQgY29udHJpYnV0b3Jz
IGxpc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbSBi
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCA1MDk3NGFlMmY2ZGUz
Y2I2Zjg3NzlkMjhjMzNhZGE4MTU4YzY1YjFlLi4yNjA3OTkxMWMxMTUwMDYyMWYxMTNjNjg1MDE2
NDI0ZjNiNmJlYzc3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZp
bGUuYW0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0xMSw2
ICsxMSw3IEBAIFByb2dyYW1zX01pbmlCcm93c2VyX0NQUEZMQUdTID0gXAogCS1EV0VCS0lUX0VY
RUNfUEFUSD1cIiR7c2hlbGwgcHdkfS8kKHRvcF9idWlsZGRpcikvUHJvZ3JhbXMvXCIgXAogCSQo
Z2xvYmFsX2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXAorCSQoQ0xV
VFRFUl9DRkxBR1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKQogCkBAIC0z
Myw2ICszNCw3IEBAIG5vZGlzdF9Qcm9ncmFtc19NaW5pQnJvd3Nlcl9TT1VSQ0VTID0gXAogCiBQ
cm9ncmFtc19NaW5pQnJvd3Nlcl9MREFERCA9IFwKIAlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtf
QVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKKwkk
KENMVVRURVJfTElCUykgXAogCSQoR0xJQl9MSUJTKSBcCiAJJChHVEtfTElCUykgXAogCSQoTElC
U09VUF9MSUJTKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5h
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KaW5kZXggMjU1YTgzODU2ZGZm
ZWU4YWNmODEwYTQ0ZTBkNGZjMWFhNWFlYzI3OC4uOGJhZDEzMDVjYzhlNGJhMDBjOGFlMzMxZDE1
ZjFiNTQxODVlZmY5MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmls
ZS5hbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCkBAIC0zMiw3ICsz
Miw4IEBAIG5vaW5zdF9QUk9HUkFNUyArPSBcCiAKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfVGVz
dFdURl9DUFBGTEFHUyA9IFwKIAkkKExpYnJhcmllc19saWJUZXN0V2ViS2l0QVBJTWFpbl9sYV9D
UFBGTEFHUykgXAotCSQoR0xJQl9MSUJTKSBcCisJJChHTElCX0NGTEFHUykgXAorCSQoQ0xVVFRF
Ul9DRkxBR1MpIFwKIAkkKENBSVJPX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpCiAKQEAg
LTQxLDYgKzQyLDcgQEAgUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V1RGX0xEQUREID0gXAog
CUxpYnJhcmllcy9saWJndGVzdC5sYSBcCiAJbGliV1RGLmxhIFwKIAkkKENBSVJPX0xJQlMpIFwK
KwkkKENMVVRURVJfTElCUykgXAogCSQoR0xJQl9MSUJTKSBcCiAJJChHVEtfTElCUykgXAogCSQo
TElCU09VUF9MSUJTKQpAQCAtOTcsMTIgKzk5LDE0IEBAIG5vaW5zdF9QUk9HUkFNUyArPSBcCiAK
IFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfVGVzdFdlYktpdDJfQ1BQRkxBR1MgPSBcCiAJJChQcm9n
cmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXVEZfQ1BQRkxBR1MpIFwKLQktSSQodG9wX2J1aWxkZGly
KS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUgXAorCSQoQ0xVVFRFUl9DRkxBR1MpCiAKIFByb2dy
YW1zX1Rlc3RXZWJLaXRBUElfVGVzdFdlYktpdDJfTERBREQgPSBcCiAJJChQcm9ncmFtc19UZXN0
V2ViS2l0QVBJX1Rlc3RXVEZfTERBREQpIFwKIAlsaWJqYXZhc2NyaXB0Y29yZWd0ay1AV0VCS0lU
R1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBc
Ci0JbGlid2Via2l0Mmd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RL
X0FQSV9NSU5PUl9WRVJTSU9OQC5sYQorCWxpYndlYmtpdDJndGstQFdFQktJVEdUS19BUElfTUFK
T1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAorCSQoQ0xVVFRF
Ul9MSUJTKQogCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXZWJLaXQyX0xERkxBR1MgPSBc
CiAJJChQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXVEZfTERGTEFHUykKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDg1YWQ0MjdkZTYxOWJmMWMwMTE5ZDc0ODkwZTU0
ZjUwNTc0ZDNiOWIuLmFmZjY4NDkzZDU5M2FjNTM0MTA2YWU2MDBkMjVhODhjZmMxOTAxNDIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQpAQCAtMzgsNiArMzgsNyBAQCBQcm9n
cmFtc19XZWJLaXRUZXN0UnVubmVyX0NQUEZMQUdTID0gXAogCSQoamF2YXNjcmlwdGNvcmVfY3Bw
ZmxhZ3MpIFwKIAkkKEdMT0JBTERFUFNfQ0ZMQUdTKSBcCiAJJChDQUlST19DRkxBR1MpIFwKKwkk
KENMVVRURVJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChMSUJTT1VQX0NGTEFHUykK
IFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfQ1hYRkxBR1MgPSAkKGdsb2JhbF9jeHhmbGFncykK
QEAgLTQ4LDYgKzQ5LDcgQEAgUHJvZ3JhbXNfV2ViS2l0VGVzdFJ1bm5lcl9MREFERCA9IFwKIAls
aWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJ
X01JTk9SX1ZFUlNJT05ALmxhIFwKIAkkKEdMT0JBTERFUFNfTElCUykgXAogCSQoQ0FJUk9fTElC
UykgXAorCSQoQ0xVVFRFUl9MSUJTKSBcCiAJJChHVEtfTElCUykgXAogCSQoR0xJQl9MSUJTKSBc
CiAJJChMSUJTT1VQX0xJQlMpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>159362</attachid>
            <date>2012-08-20 01:29:44 -0700</date>
            <delta_ts>2012-08-20 01:29:44 -0700</delta_ts>
            <desc>Extra jhbuild modulesets for building Clutter and its dependencies</desc>
            <filename>jhbuild_clutter.modules</filename>
            <type>application/octet-stream</type>
            <size>6370</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">PD94bWwgdmVyc2lvbj0iMS4wIj8+CjwhRE9DVFlQRSBtb2R1bGVzZXQgU1lTVEVNICJtb2R1bGVz
ZXQuZHRkIj4KPD94bWwtc3R5bGVzaGVldCB0eXBlPSJ0ZXh0L3hzbCIgaHJlZj0ibW9kdWxlc2V0
LnhzbCI/Pgo8bW9kdWxlc2V0PgoKICA8bWV0YW1vZHVsZSBpZD0id2Via2l0Z3RrLWNsdXR0ZXIt
ZGVwZW5kZW5jaWVzIj4KICAgIDxkZXBlbmRlbmNpZXM+CiAgICAgIDxkZXAgcGFja2FnZT0iY2Fp
cm8iLz4KICAgICAgPGRlcCBwYWNrYWdlPSJmcmVldHlwZTYiLz4KICAgICAgPGRlcCBwYWNrYWdl
PSJnZGstcGl4YnVmIi8+CiAgICAgIDxkZXAgcGFja2FnZT0iZ3RrKyIvPgogICAgICA8ZGVwIHBh
Y2thZ2U9ImdsaWIiLz4KICAgICAgPGRlcCBwYWNrYWdlPSJjb2dsIi8+CiAgICAgIDxkZXAgcGFj
a2FnZT0ianNvbi1nbGliIi8+CiAgICAgIDxkZXAgcGFja2FnZT0iY2x1dHRlciIvPgogICAgICA8
ZGVwIHBhY2thZ2U9ImNsdXR0ZXItZ3RrIi8+CiAgICA8L2RlcGVuZGVuY2llcz4KICA8L21ldGFt
b2R1bGU+CgogIDxyZXBvc2l0b3J5IHR5cGU9InRhcmJhbGwiIG5hbWU9ImZ0cC5nbnUub3JnIgog
ICAgICBocmVmPSJmdHA6Ly9mdHAuZ251Lm9yZy9nbnUvIi8+CiAgPHJlcG9zaXRvcnkgdHlwZT0i
dGFyYmFsbCIgbmFtZT0iZ2l0aHViLmNvbSIKICAgICAgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29t
Ii8+CiAgPHJlcG9zaXRvcnkgdHlwZT0idGFyYmFsbCIgbmFtZT0ic291cmNld2FyZS5vcmciCiAg
ICAgIGhyZWY9ImZ0cDovL3NvdXJjZXdhcmUub3JnIi8+CiAgPHJlcG9zaXRvcnkgdHlwZT0idGFy
YmFsbCIgbmFtZT0iZnRwLmdub21lLm9yZyIKICAgICAgaHJlZj0iaHR0cDovL2Z0cC5nbm9tZS5v
cmciLz4KICA8cmVwb3NpdG9yeSB0eXBlPSJnaXQiIG5hbWU9ImdpdC5nbm9tZS5vcmciCiAgICAg
IGhyZWY9ImdpdDovL2dpdC5nbm9tZS5vcmcvIi8+CiAgPHJlcG9zaXRvcnkgdHlwZT0idGFyYmFs
bCIgbmFtZT0iY2Fpcm9ncmFwaGljcy5vcmciCiAgICAgIGhyZWY9Imh0dHA6Ly9jYWlyb2dyYXBo
aWNzLm9yZyIvPgogIDxyZXBvc2l0b3J5IHR5cGU9InRhcmJhbGwiIG5hbWU9ImZyZWVkZXNrdG9w
Lm9yZyIKICAgICAgaHJlZj0iaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmciLz4KCiAgPGF1dG90
b29scyBpZD0iY2Fpcm8iIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSI+CiAgICA8ZGVwZW5kZW5jaWVz
PgogICAgICA8ZGVwIHBhY2thZ2U9InBpeG1hbiIvPgogICAgPC9kZXBlbmRlbmNpZXM+CiAgICA8
YnJhbmNoIG1vZHVsZT0icmVsZWFzZXMvY2Fpcm8tMS4xMC4yLnRhci5neiIgdmVyc2lvbj0iMS4x
MC4yIgogICAgICAgICAgICByZXBvPSJjYWlyb2dyYXBoaWNzLm9yZyIKICAgICAgICAgICAgaGFz
aD0ic2hhMjU2OjMyMDE4Yzc5OTgzNThlZWJjMmFkNTc4ZmY4ZDg1NTlkMzRmYzgwMjUyMDk1ZjEx
MGE1NzJlZDIzZDk4OWZjNDEiCiAgICAgICAgICAgIG1kNXN1bT0iZjEwMWE5ZTg4Yjc4MzMzN2Iy
MGIyZTI2ZGZkMjZkNWYiPgogICAgPC9icmFuY2g+CiAgPC9hdXRvdG9vbHM+CgogIDxhdXRvdG9v
bHMgaWQ9InBpeG1hbiIgYXV0b2dlbi1zaD0iY29uZmlndXJlIgogICAgICAgICAgICAgYXV0b2dl
bmFyZ3M9Ii0tZW5hYmxlLWd0az1ubyI+CiAgICA8YnJhbmNoIG1vZHVsZT0icmVsZWFzZXMvcGl4
bWFuLTAuMjQuMC50YXIuZ3oiIHZlcnNpb249IjAuMjQuMCIKICAgICAgICAgICAgcmVwbz0iY2Fp
cm9ncmFwaGljcy5vcmciCiAgICAgICAgICAgIGhhc2g9InNoYTI1NjphNTY0N2M3MTU4ZjEwM2Vl
ZGZmNWZiYTc5OTAxOGY0MTY5ZjZiMjZiNTczYWI3Njg1ODEyZWJjOWExYzVkMmU0IgogICAgICAg
ICAgICBtZDVzdW09ImEyZDBiMTIwNTA5YmRjY2IxMGFhN2Y0YmVjMzczMGU0Ij4KICAgIDwvYnJh
bmNoPgogIDwvYXV0b3Rvb2xzPgoKICA8dGFyYmFsbCBpZD0iZnJlZXR5cGU2Ij4KICAgIDxzb3Vy
Y2UgaHJlZj0iZG93bmxvYWQuc2F2YW5uYWguZ251Lm9yZy9yZWxlYXNlcy9mcmVldHlwZS9mcmVl
dHlwZS0yLjQuMi50YXIuYnoyIiB2ZXJzaW9uPSIyLjQuMiIKICAgICAgICAgICAgaGFzaD0ic2hh
MjU2OjlhOTg3YWVmOGM1MGQ5YmNmZGZkYzlmMDEyZjhiZDBkZTYwOTVjYzFhNTUyNGU2MmMxYTAz
N2RlYjhkYWNiZmUiCiAgICAgICAgICAgIG1kNXN1bT0iNjQ3ZWU4ZWQyNjZmOWE0MTE3YzhkMGE0
ODU1YjNkM2UiLz4KICA8L3RhcmJhbGw+CgogIDxhdXRvdG9vbHMgaWQ9ImxpYmZmaSIgYXV0b2dl
bi1zaD0iY29uZmlndXJlIj4KICAgIDxicmFuY2ggbW9kdWxlPSIvcHViL2xpYmZmaS9saWJmZmkt
My4wLjEwLnRhci5neiIgdmVyc2lvbj0iMy4wLjEwIgogICAgICAgICAgICAgcmVwbz0ic291cmNl
d2FyZS5vcmciCiAgICAgICAgICAgICBoYXNoPSJzaGEyNTY6ZjAxZWI5MDI3ZTllYjU2YWVhZWVm
NjM2NjQ5ODc3NzU2ZDQ3NWQ3MTRlZjhiNDdmNjI3ZjY1YmM1ZjNiNDkyZiIKICAgICAgICAgICAg
IG1kNXN1bT0iNzkzOTA2NzNmNWQwN2E4ZmIzNDJiYzA5YjUwNTViNmYiLz4KICA8L2F1dG90b29s
cz4KCiAgPGF1dG90b29scyBpZD0iZ2RrLXBpeGJ1ZiIgYXV0b2dlbi1zaD0iY29uZmlndXJlIgog
ICAgICAgICAgICAgYXV0b2dlbmFyZ3M9Ii0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIj4KICAgIDxk
ZXBlbmRlbmNpZXM+CiAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYiIvPgogICAgPC9kZXBlbmRlbmNp
ZXM+CiAgICA8YnJhbmNoIG1vZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2VzL2dkay1waXhidWYvMi4y
Ni9nZGstcGl4YnVmLTIuMjYuMC50YXIueHoiIHZlcnNpb249IjIuMjYuMCIKICAgICAgICAgICAg
cmVwbz0iZnRwLmdub21lLm9yZyIKICAgICAgICAgICAgaGFzaD0ic2hhMjU2OmE1MDI4ZDNhMzM3
MTBjYmI2YzYyNjRiYzU2MWI2ZTI1MmIzN2YwNjdkZmY3YjViNTI0NzM2MjFlMDY0ZjI1NGQiCiAg
ICAgICAgICAgIG1kNXN1bT0iMWMxODZmOTkwM2EyMGU5NjU4N2I5YWZiMjc5NDRiNDAiLz4KICA8
L2F1dG90b29scz4KCiAgPGF1dG90b29scyBpZD0icGFuZ28iCiAgICAgICAgICAgICBhdXRvZ2Vu
YXJncz0iLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iPgogICAgPGRlcGVuZGVuY2llcz4KICAgICAg
PGRlcCBwYWNrYWdlPSJnbGliIi8+CiAgICAgIDxkZXAgcGFja2FnZT0iZnJlZXR5cGU2Ii8+CiAg
ICAgIDxkZXAgcGFja2FnZT0iY2Fpcm8iLz4KICAgIDwvZGVwZW5kZW5jaWVzPgogICAgPGJyYW5j
aCBtb2R1bGU9Ii9wdWIvR05PTUUvc291cmNlcy9wYW5nby8xLjMwL3BhbmdvLTEuMzAuMC50YXIu
eHoiIHZlcnNpb249IjEuMzAuMCIKICAgICAgICAgICAgcmVwbz0iZnRwLmdub21lLm9yZyIKICAg
ICAgICAgICAgaGFzaD0ic2hhMjU2OjdjNmQyYWIwMjRhZmZhZWQwZTk0MmY5Mjc5YjgxODIzNWY5
YzZhMzZkOWZjNTA2ODhmNDhkMzg3ZjQxMDJkZmYiCiAgICAgICAgICAgIG1kNXN1bT0iMmE3MDYy
N2ZmZDlmNDNjNTJjMDRjYzBiMDVmZTM1OWYiLz4KICA8L2F1dG90b29scz4KCiAgPGF1dG90b29s
cyBpZD0iZ3RrKyIgYXV0b2dlbi1zaD0iY29uZmlndXJlIgogICAgICAgICAgICAgYXV0b2dlbmFy
Z3M9Ii0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIj4KICAgIDxkZXBlbmRlbmNpZXM+CiAgICAgIDxk
ZXAgcGFja2FnZT0iZ2xpYiIvPgogICAgICA8ZGVwIHBhY2thZ2U9ImNhaXJvIi8+CiAgICAgIDxk
ZXAgcGFja2FnZT0icGFuZ28iLz4KICAgICAgPGRlcCBwYWNrYWdlPSJnZGstcGl4YnVmIi8+CiAg
ICA8L2RlcGVuZGVuY2llcz4KICAgIDxicmFuY2ggbW9kdWxlPSIvcHViL0dOT01FL3NvdXJjZXMv
Z3RrKy8zLjQvZ3RrKy0zLjQuMC50YXIueHoiIHZlcnNpb249IjMuNC4wIgogICAgICAgICAgICBy
ZXBvPSJmdHAuZ25vbWUub3JnIgogICAgICAgICAgICBoYXNoPSJzaGEyNTY6MDBhZjhiZThiYzYw
MzU1ZTA4YThmNTdlM2U3NTAzYzkxNmNlYzVjZDVjNmFjYjNlYWVkYjAxMzMwYjgxZjNlMCIKICAg
ICAgICAgICAgbWQ1c3VtPSJmOWEwYmM4NzVjZjk1YzA0NjI5MTBkMmQzMjUyODQ2NCIvPgogIDwv
YXV0b3Rvb2xzPgoKICA8YXV0b3Rvb2xzIGlkPSJnbGliIgogICAgICAgICAgICAgYXV0b2dlbmFy
Z3M9Ii0tZGlzYWJsZS1kdHJhY2UiPgogICAgPGRlcGVuZGVuY2llcz4KICAgICAgPGRlcCBwYWNr
YWdlPSJsaWJmZmkiLz4KICAgIDwvZGVwZW5kZW5jaWVzPgogICAgPGJyYW5jaCBtb2R1bGU9Ii9w
dWIvR05PTUUvc291cmNlcy9nbGliLzIuMzMvZ2xpYi0yLjMzLjIudGFyLnh6IiB2ZXJzaW9uPSIy
LjMzLjIiCiAgICAgICAgICAgIHJlcG89ImZ0cC5nbm9tZS5vcmciCiAgICAgICAgICAgIGhhc2g9
InNoYTI1NjpiNzE2M2U5ZjE1OTc3NWQxM2VjZmI0MzNkNjdjM2YwODgzZTBlNTE4ZTg1YjJlOTcw
ZDRhZDk3NzNkN2NkMGI0IgogICAgICAgICAgICBtZDVzdW09IjA2ZWYwMDk5ZmVkMjJhZmNmMzRh
ZGUzOWRkZmY5YTViIi8+CiAgPC9hdXRvdG9vbHM+CgogPGF1dG90b29scyBpZD0iY29nbCIKICAg
ICAgICAgICBhdXRvZ2VuLXNoPSJjb25maWd1cmUiCiAgICAgICAgICAgYXV0b2dlbmFyZ3M9Ii0t
ZGlzYWJsZS1pbnRyb3NwZWN0aW9uIj4KICAgIDxicmFuY2ggaGFzaD0ic2hhMjU2OjBiNWM5OTg5
ZjFkMDdkYmRhMDAwYTY4NjQwZWI3ZWJmNzM0NTEzZDUyZTM3MDc2NjhjNDFlZWQxOTk5MWFkZjki
IG1vZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2VzL2NvZ2wvMS4xMC9jb2dsLTEuMTAuNC50YXIueHoi
IHJlcG89ImZ0cC5nbm9tZS5vcmciIHNpemU9IjEyNTM3MDgiIHZlcnNpb249IjEuMTAuNCIvPgog
ICAgPHBrZy1jb25maWcvPgogICAgPGJyYW5jaCByZXZpc2lvbj0iY29nbC0xLjEwLjQiLz4KICAg
IDxkZXBlbmRlbmNpZXM+CiAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYiIvPgogICAgPC9kZXBlbmRl
bmNpZXM+CiAgPC9hdXRvdG9vbHM+CgogIDxhdXRvdG9vbHMgaWQ9Impzb24tZ2xpYiIKICAgICAg
ICAgICBhdXRvZ2VuLXNoPSJjb25maWd1cmUiCiAgICAgICAgICAgYXV0b2dlbmFyZ3M9Ii0tZGlz
YWJsZS1pbnRyb3NwZWN0aW9uIj4KICAgIDxicmFuY2ggaGFzaD0ic2hhMjU2OmI4MTZhNWZhM2U1
NjY0YjA4Njc5YTY5NzJhNmU1NjkzZDZjYzE5OTBmZjRhNmY5NGMwNzU1NGRiOTZiZTk0YTciIG1v
ZHVsZT0iL3B1Yi9HTk9NRS9zb3VyY2VzL2pzb24tZ2xpYi8wLjE0L2pzb24tZ2xpYi0wLjE0LjIu
dGFyLnh6IiByZXBvPSJmdHAuZ25vbWUub3JnIiBzaXplPSI0NDUzOTYiIHZlcnNpb249IjAuMTQu
MiIvPgogICAgPGJyYW5jaCByZXZpc2lvbj0ianNvbi1nbGliLTAtMTQiLz4KICAgIDxkZXBlbmRl
bmNpZXM+CiAgICAgIDxkZXAgcGFja2FnZT0iZ2xpYiIvPgogICAgPC9kZXBlbmRlbmNpZXM+CiAg
PC9hdXRvdG9vbHM+CgogIDxhdXRvdG9vbHMgaWQ9ImNsdXR0ZXIiCiAgICAgICAgICAgYXV0b2dl
bi1zaD0iY29uZmlndXJlIgogICAgICAgICAgIGF1dG9nZW5hcmdzPSItLWRpc2FibGUtaW50cm9z
cGVjdGlvbiI+CiAgICA8YnJhbmNoIGhhc2g9InNoYTI1Njo2YjJjZjQ5ZTcxYjVkMGU0NjQ5M2Vk
NTFlNGQxOWRkNWI2NmQxYWVjNTZkZmY5MTc3NWFjYmMzMGMyNDFiNGRiIiBtb2R1bGU9Ii9wdWIv
R05PTUUvc291cmNlcy9jbHV0dGVyLzEuMTEvY2x1dHRlci0xLjExLjYudGFyLnh6IiByZXBvPSJm
dHAuZ25vbWUub3JnIiBzaXplPSI0ODgyMDE2IiB2ZXJzaW9uPSIxLjExLjYiLz4KICAgIDxicmFu
Y2ggcmV2aXNpb249ImNsdXR0ZXItMS4xMS42Ii8+CiAgICA8ZGVwZW5kZW5jaWVzPgogICAgICA8
ZGVwIHBhY2thZ2U9ImNvZ2wiLz4KICAgICAgPGRlcCBwYWNrYWdlPSJnbGliIi8+CiAgICAgIDxk
ZXAgcGFja2FnZT0iY2Fpcm8iLz4KICAgICAgPGRlcCBwYWNrYWdlPSJwYW5nbyIvPgogICAgICA8
ZGVwIHBhY2thZ2U9Impzb24tZ2xpYiIvPgogICAgPC9kZXBlbmRlbmNpZXM+CiAgPC9hdXRvdG9v
bHM+CgogIDxhdXRvdG9vbHMgaWQ9ImNsdXR0ZXItZ3RrIgogICAgICAgICAgIGF1dG9nZW4tc2g9
ImNvbmZpZ3VyZSIKICAgICAgICAgICBhdXRvZ2VuYXJncz0iLS1kaXNhYmxlLWludHJvc3BlY3Rp
b24iPgogICAgPGJyYW5jaCBoYXNoPSJzaGEyNTY6ZWU1MDUzOGRhY2E5NDQ3YmU2YWQxZWQwZDA0
OWZiYjJkYzVhMWJjYWVjZDEzZmRhODQ3YjliNjZmOTIyZWUzNyIgbW9kdWxlPSIvcHViL0dOT01F
L3NvdXJjZXMvY2x1dHRlci1ndGsvMS4zL2NsdXR0ZXItZ3RrLTEuMy4yLnRhci54eiIgcmVwbz0i
ZnRwLmdub21lLm9yZyIgc2l6ZT0iMzA5NjY4IiB2ZXJzaW9uPSIxLjMuMiIvPgogICAgPGJyYW5j
aCByZXZpc2lvbj0iY2x1dHRlci1ndGstMS4wIi8+CiAgICA8ZGVwZW5kZW5jaWVzPgogICAgICA8
ZGVwIHBhY2thZ2U9ImNsdXR0ZXIiLz4KICAgICAgPGRlcCBwYWNrYWdlPSJndGsrIi8+CiAgICA8
L2RlcGVuZGVuY2llcz4KICA8L2F1dG90b29scz4KPC9tb2R1bGVzZXQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159374</attachid>
            <date>2012-08-20 02:17:51 -0700</date>
            <delta_ts>2012-09-21 14:46:38 -0700</delta_ts>
            <desc>Patch2</desc>
            <filename>Patch2</filename>
            <type>text/plain</type>
            <size>15729</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlYTIwY2FkLi44ZTA3ZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYg
QEAKIDIwMTItMDgtMTkgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBpbnRlbC5jb20+LCBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KIAorICAgICAg
ICBbR1RLXSBJbXBsZW1lbnQgR3JhcGhpY3NMYXllciB1c2luZyBDbHV0dGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzc2NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBwYXRjaCBp
cyBuZWVkZWQgZm9yIGVuYWJsaW5nIEFjY2VsZXJhdGVkIENvbXBvc2l0aW5nKENsdXR0ZXIgYmFj
a2VuZCkgCisgICAgICAgIHdpdGggdGhlIHBhdGNoZXMgc3VibWl0dGVkIGluIGJ1ZyA5MjA0NSBh
bmQgOTE5NDAuCisgICAgICAgIAorICAgICAgICBObyBuZXcgdGVzdHMuIFRoaXMgd2lsbCBiZSBj
b3ZlcmVkIGJ5IHBpeGVsIHRlc3RzIGZvciBRdC9HVEsrIGFjY2VsZXJhdGVkCisgICAgICAgIGNv
bXBvc2l0aW5nIGFuZCAzRCB0cmFuc2Zvcm1zLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmNwcDoKKyAg
ICAgICAgKFdURjo6YWRvcHRHUmVmKToKKyAgICAgICAgKFdURik6CisgICAgICAgIChXVEY6Okdy
YXBoaWNzTGF5ZXJBY3Rvcik6CisgICAgICAgICogcGxhdGZvcm0vY2x1dHRlci9HUmVmUHRyQ2x1
dHRlci5oOiBBZGQgR1JlZlB0ciBzdXBwb3J0IGZvciBHcmFwaGljc0xheWVyQWN0b3IgdHlwZSB0
byBXZWJDb3JlLgorICAgICAgICAoV1RGKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
bHV0dGVyL1BsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChQbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudDo6flBsYXRmb3JtQ2x1dHRlckxheWVy
Q2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1RyYW5zZm9ybWF0
aW9uTWF0cml4Q2x1dHRlci5jcHA6IEFkZGVkIHRvIGNvbnZlcnQgQ29nbE1hdHJpeCB0byAKKyAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvciBDb2dsTWF0cml4KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
Lmg6CisgICAgICAgIChUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisKKzIwMTItMDgtMTkgIEpvb25l
IEh1ciAgPGpvb25lLmh1ckBpbnRlbC5jb20+LCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0
YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKwogICAgICAgICBbR1RLXSBVcGRhdGUgR3JhcGhp
Y3NMYXllckNsdXR0ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkyMDQ1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGIyZDhkM2Mu
LjE2YjU5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjE0NSw3ICs2MTQ1
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJBY3Rvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckFjdG9yLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5
ZXJDbHV0dGVyLmgKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dy
YXBoaWNzTGF5ZXJDbHV0dGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NsdXR0ZXIvVHJhbnNmb3JtYXRpb25NYXRyaXhDbHV0dGVyLmNwcAogZW5kaWYgICMgRU5EIFVT
RV9DTFVUVEVSCiAKIGlmIFVTRV9URVhUVVJFX01BUFBFUl9DQUlSTwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmNwcAppbmRleCAyYTM0MTg2
Li4wZDlhOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jbHV0dGVyL0dS
ZWZQdHJDbHV0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jbHV0dGVyL0dS
ZWZQdHJDbHV0dGVyLmNwcApAQCAtNTAsNCArNTAsMzAgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJl
ZkdQdHI8Q2x1dHRlckFjdG9yPihDbHV0dGVyQWN0b3IqIHB0cikKICAgICAgICAgZ19vYmplY3Rf
dW5yZWYocHRyKTsKIH0KIAordGVtcGxhdGUgPD4gR1JlZlB0cjxHcmFwaGljc0xheWVyQWN0b3I+
IGFkb3B0R1JlZihHcmFwaGljc0xheWVyQWN0b3IqIHB0cikKK3sKKyAgICBpZiAoZ19vYmplY3Rf
aXNfZmxvYXRpbmcocHRyKSkKKyAgICAgICAgZ19vYmplY3RfcmVmX3NpbmsocHRyKTsKKworICAg
IHJldHVybiBHUmVmUHRyPEdyYXBoaWNzTGF5ZXJBY3Rvcj4ocHRyLCBHUmVmUHRyQWRvcHQpOwor
fQorCit0ZW1wbGF0ZSA8PiBHcmFwaGljc0xheWVyQWN0b3IqIHJlZkdQdHI8R3JhcGhpY3NMYXll
ckFjdG9yPihHcmFwaGljc0xheWVyQWN0b3IqIHB0cikKK3sKKyAgICBpZiAocHRyKSB7CisgICAg
ICAgIGlmIChnX29iamVjdF9pc19mbG9hdGluZyhwdHIpKQorICAgICAgICAgICAgZ19vYmplY3Rf
cmVmX3NpbmsocHRyKTsKKworICAgICAgICBnX29iamVjdF9yZWYocHRyKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gcHRyOworfQorCit0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cjxHcmFwaGljc0xh
eWVyQWN0b3I+KEdyYXBoaWNzTGF5ZXJBY3RvciogcHRyKQoreworICAgIGlmIChwdHIpCisgICAg
ICAgIGdfb2JqZWN0X3VucmVmKHB0cik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaAppbmRleCBiZGVjNjU0Li4zNWZmODllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRlci5o
CkBAIC0yMywxMiArMjMsMTYgQEAKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiAK
IHR5cGVkZWYgc3RydWN0IF9DbHV0dGVyQWN0b3IgQ2x1dHRlckFjdG9yOwordHlwZWRlZiBzdHJ1
Y3QgX0dyYXBoaWNzTGF5ZXJBY3RvciBHcmFwaGljc0xheWVyQWN0b3I7CiAKIG5hbWVzcGFjZSBX
VEYgewogCiB0ZW1wbGF0ZTw+IENsdXR0ZXJBY3RvciogcmVmR1B0cjxDbHV0dGVyQWN0b3I+KENs
dXR0ZXJBY3RvciogcHRyKTsKIHRlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8Q2x1dHRlckFjdG9y
PihDbHV0dGVyQWN0b3IqIHB0cik7CiAKK3RlbXBsYXRlPD4gR3JhcGhpY3NMYXllckFjdG9yKiBy
ZWZHUHRyPEdyYXBoaWNzTGF5ZXJBY3Rvcj4oR3JhcGhpY3NMYXllckFjdG9yKiBwdHIpOwordGVt
cGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHcmFwaGljc0xheWVyQWN0b3I+KEdyYXBoaWNzTGF5ZXJB
Y3RvciogcHRyKTsKKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyTGF5
ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzA3NDE4Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRl
ci9QbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIENvbGxhYm9yYSBMdGQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRmb3JtQ2x1dHRlckxheWVy
Q2xpZW50X2gKKyNkZWZpbmUgUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGllbnRfaAorCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNsdXR0ZXJMYXllclBhaW50Q29udGVudHMo
R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgaW5DbGlwKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtQ2x1dHRlckxheWVyQW5pbWF0aW9uU3RhcnRlZChkb3VibGUgc3RhcnRU
aW1lKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5QbGF0Zm9ybUNsdXR0ZXJMYXll
ckNsaWVudCgpIHsgfQorfTsKKworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorCisjZW5kaWYgLy8gUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGllbnRfaAorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1RyYW5zZm9y
bWF0aW9uTWF0cml4Q2x1dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jbHV0dGVyL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2x1dHRlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZjFhZjYxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvVHJhbnNmb3JtYXRpb25NYXRyaXhDbHV0
dGVyLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIENvbGxh
Ym9yYSBMdGQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mCisg
KiAgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZQorICogIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorCisjaW5jbHVk
ZSA8Y29nbC9jb2dsLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om9wZXJhdG9yIENvZ2xNYXRyaXgoKSBjb25zdAoreworICAgIENvZ2xNYXRyaXggbWF0
cml4OworCisgICAgbWF0cml4Lnh4ID0gKGZsb2F0KW0xMSgpOworICAgIG1hdHJpeC54eSA9IChm
bG9hdCltMjEoKTsKKyAgICBtYXRyaXgueHogPSAoZmxvYXQpbTMxKCk7CisgICAgbWF0cml4Lnh3
ID0gKGZsb2F0KW00MSgpOworCisgICAgbWF0cml4Lnl4ID0gKGZsb2F0KW0xMigpOworICAgIG1h
dHJpeC55eSA9IChmbG9hdCltMjIoKTsKKyAgICBtYXRyaXgueXogPSAoZmxvYXQpbTMyKCk7Cisg
ICAgbWF0cml4Lnl3ID0gKGZsb2F0KW00MigpOworCisgICAgbWF0cml4Lnp4ID0gKGZsb2F0KW0x
MygpOworICAgIG1hdHJpeC56eSA9IChmbG9hdCltMjMoKTsKKyAgICBtYXRyaXguenogPSAoZmxv
YXQpbTMzKCk7CisgICAgbWF0cml4Lnp3ID0gKGZsb2F0KW00MygpOworCisgICAgbWF0cml4Lnd4
ID0gKGZsb2F0KW0xNCgpOworICAgIG1hdHJpeC53eSA9IChmbG9hdCltMjQoKTsKKyAgICBtYXRy
aXgud3ogPSAoZmxvYXQpbTM0KCk7CisgICAgbWF0cml4Lnd3ID0gKGZsb2F0KW00NCgpOworCisg
ICAgcmV0dXJuIG1hdHJpeDsKK30KKworfQorCisvLyB2aW06IHRzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IGNhNjhjNTcuLjdlZjlkZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTM1LDYgKzM1LDkgQEAKICNpZiBV
U0UoQ0EpCiB0eXBlZGVmIHN0cnVjdCBDQVRyYW5zZm9ybTNEIENBVHJhbnNmb3JtM0Q7CiAjZW5k
aWYKKyNpZiBVU0UoQ0xVVFRFUikKK3R5cGVkZWYgc3RydWN0IF9Db2dsTWF0cml4IENvZ2xNYXRy
aXg7CisjZW5kaWYKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0FmZmluZVRyYW5zZm9y
bSBDR0FmZmluZVRyYW5zZm9ybTsKICNlbGlmIFVTRShDQUlSTykKQEAgLTMyNSw2ICszMjgsOSBA
QCBwdWJsaWM6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgQ0FUcmFuc2Zvcm0zRCYp
OwogICAgIG9wZXJhdG9yIENBVHJhbnNmb3JtM0QoKSBjb25zdDsKICNlbmRpZgorI2lmIFVTRShD
TFVUVEVSKQorICAgIG9wZXJhdG9yIENvZ2xNYXRyaXgoKSBjb25zdDsKKyNlbmRpZgogI2lmIFVT
RShDRykKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBDR0FmZmluZVRyYW5zZm9ybSYp
OwogICAgIG9wZXJhdG9yIENHQWZmaW5lVHJhbnNmb3JtKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
OWRhMTg3ZC4uOTAxYTM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTE5
ICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50ZWwuY29tPiwgR3VzdGF2byBOb3JvbmhhIFNpbHZh
ICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVt
ZW50IEdyYXBoaWNzTGF5ZXIgdXNpbmcgQ2x1dHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBsaW5rIGVycm9ycyBieSBhZGRpbmcgQ2x1dHRl
ciBsaWJyYXJ5IGFuZCBoZWFkZXIgdG8gV2ViS2l0MiBidWlsZC4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxl
LmFtOgorCiAyMDEyLTA4LTE5ICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViUGFnZVByb3h5OjpzZXRDdXJzb3IgZG9lcyBub3QgY2hlY2sgdGhhdCB0aGUgdmll
dyBpcyBzdGlsbCBpbiBhbiBhY3RpdmUgd2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDNl
ZGNlMGEuLmVjNzlkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC0xMDEsNiArMTAxLDcgQEAg
bGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQ
SV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAkkKHdlYmNvcmVfY3BwZmxhZ3MpIFwKIAkkKHdlYmNv
cmVndGtfY3BwZmxhZ3MpIFwKIAkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKSBcCisJJChDTFVU
VEVSX0NGTEFHUykgXAogCSQoQ09WRVJBR0VfQ0ZMQUdTKSBcCiAJJChHRU9DTFVFX0NGTEFHUykg
XAogCSQoR0xJQl9DRkxBR1MpIFwKQEAgLTE2MSw2ICsxNjIsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BX
RUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05A
X2xhX0xJQgogCWxpYmphdmFzY3JpcHRjb3JlZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJ
T05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKIAlsaWJXZWJDb3JlR3RrLmxh
IFwKIAkkKENBSVJPX0xJQlMpIFwKKwkkKENMVVRURVJfTElCUykgXAogCSQoQ09WRVJBR0VfTERG
TEFHUykgXAogCSQoRkFSU1RSRUFNX0xJQlMpIFwKIAkkKEdBSUxfTElCUykgXApAQCAtMzUxLDYg
KzM1Myw3IEBAIFByb2dyYW1zX1dlYktpdFdlYlByb2Nlc3NfQ1BQRkxBR1MgPSBcCiBQcm9ncmFt
c19XZWJLaXRXZWJQcm9jZXNzX0NGTEFHUyA9IFwKIAkkKGdsb2JhbF9jZmxhZ3MpIFwKIAkkKENB
SVJPX0NGTEFHUykgXAorCSQoQ0xVVFRFUl9DRkxBR1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJ
JChHVEtfQ0ZMQUdTKSBcCiAJJChHVEtfVU5JWF9QUklOVElOR19DRkxBR1MpIFwKQEAgLTM2Myw2
ICszNjYsNyBAQCBQcm9ncmFtc19XZWJLaXRXZWJQcm9jZXNzX1NPVVJDRVMgPSBcCiBQcm9ncmFt
c19XZWJLaXRXZWJQcm9jZXNzX0xEQUREID0gXAogCWxpYmphdmFzY3JpcHRjb3JlZ3RrLUBXRUJL
SVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxh
IFwKIAlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRH
VEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKKwkkKENMVVRURVJfTElCUykgXAogCSQoR0xJQl9M
SUJTKSBcCiAJJChHVEtfTElCUykgXAogCSQoR1RLX1VOSVhfUFJJTlRJTkdfTElCUykgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmls
ZS5hbQppbmRleCAzZmFkZjQwLi5lYjQxY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQpAQCAtMzgsNiArMzgsNyBA
QCB3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzID0gXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRT
b3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0ay9pbmNsdWRlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ayBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwKKwkkKENM
VVRURVJfQ0ZMQUdTKSBcCiAJJChHTElCX0NGTEFHUykgXAogCSQoR1RLX0NGTEFHUykgXAogCSQo
TElCU09VUF9DRkxBR1MpCkBAIC00Niw2ICs0Nyw3IEBAIHdlYmtpdDJfdGVzdHNfbGRhZGQgPSBc
CiAJTGlicmFyaWVzL2xpYldlYktpdDJBUElUZXN0Q29yZS5sYSBcCiAJbGliamF2YXNjcmlwdGNv
cmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1Jf
VkVSU0lPTkAubGEgXAogCWxpYndlYmtpdDJndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lP
TkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAorCSQoQ0xVVFRFUl9MSUJTKSBc
CiAJJChHRU9DTFVFX0xJQlMpIFwKIAkkKEdMSUJfTElCUykgXAogCSQoR1RLX0xJQlMpIFwKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhM2U2YWNj
Li5kMTBkYThjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDgtMTkgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBp
bnRlbC5jb20+LCBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFi
b3JhLmNvbT4KKworICAgICAgICBbR1RLXSBJbXBsZW1lbnQgR3JhcGhpY3NMYXllciB1c2luZyBD
bHV0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Mzc2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eGVkIGxpbmsgZXJyb3JzIGJ5IGFkZGluZyBDbHV0dGVyIGxpYnJhcnkgYW5kIGhlYWRlciB0byBN
aW5pQnJvd2VzciwKKyAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciwgYW5kIFRlc3RXZWJLaXRBUEkg
YnVpbGRzLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9HTlVtYWtlZmlsZS5hbToKKwogMjAxMi0wOC0xNyAgS2lyYW4gTXVwcGFsYSAgPGNt
dXBwYWxhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgc2VsZiB0byB3ZWJraXQgY29udHJpYnV0
b3JzIGxpc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5h
bSBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQppbmRleCA1MDk3NGFlLi4y
NjA3OTkxIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0K
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCkBAIC0xMSw2ICsxMSw3
IEBAIFByb2dyYW1zX01pbmlCcm93c2VyX0NQUEZMQUdTID0gXAogCS1EV0VCS0lUX0VYRUNfUEFU
SD1cIiR7c2hlbGwgcHdkfS8kKHRvcF9idWlsZGRpcikvUHJvZ3JhbXMvXCIgXAogCSQoZ2xvYmFs
X2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXAorCSQoQ0xVVFRFUl9D
RkxBR1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKQogCkBAIC0zMyw2ICsz
NCw3IEBAIG5vZGlzdF9Qcm9ncmFtc19NaW5pQnJvd3Nlcl9TT1VSQ0VTID0gXAogCiBQcm9ncmFt
c19NaW5pQnJvd3Nlcl9MREFERCA9IFwKIAlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01B
Sk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKKwkkKENMVVRU
RVJfTElCUykgXAogCSQoR0xJQl9MSUJTKSBcCiAJJChHVEtfTElCUykgXAogCSQoTElCU09VUF9M
SUJTKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KaW5kZXggMjU1YTgzOC4uOGJhZDEzMCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCkBAIC0zMiw3ICszMiw4IEBAIG5vaW5zdF9Q
Uk9HUkFNUyArPSBcCiAKIFByb2dyYW1zX1Rlc3RXZWJLaXRBUElfVGVzdFdURl9DUFBGTEFHUyA9
IFwKIAkkKExpYnJhcmllc19saWJUZXN0V2ViS2l0QVBJTWFpbl9sYV9DUFBGTEFHUykgXAotCSQo
R0xJQl9MSUJTKSBcCisJJChHTElCX0NGTEFHUykgXAorCSQoQ0xVVFRFUl9DRkxBR1MpIFwKIAkk
KENBSVJPX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpCiAKQEAgLTQxLDYgKzQyLDcgQEAg
UHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V1RGX0xEQUREID0gXAogCUxpYnJhcmllcy9saWJn
dGVzdC5sYSBcCiAJbGliV1RGLmxhIFwKIAkkKENBSVJPX0xJQlMpIFwKKwkkKENMVVRURVJfTElC
UykgXAogCSQoR0xJQl9MSUJTKSBcCiAJJChHVEtfTElCUykgXAogCSQoTElCU09VUF9MSUJTKQpA
QCAtOTcsMTIgKzk5LDE0IEBAIG5vaW5zdF9QUk9HUkFNUyArPSBcCiAKIFByb2dyYW1zX1Rlc3RX
ZWJLaXRBUElfVGVzdFdlYktpdDJfQ1BQRkxBR1MgPSBcCiAJJChQcm9ncmFtc19UZXN0V2ViS2l0
QVBJX1Rlc3RXVEZfQ1BQRkxBR1MpIFwKLQktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyL2luY2x1ZGUKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJL
aXQyL2luY2x1ZGUgXAorCSQoQ0xVVFRFUl9DRkxBR1MpCiAKIFByb2dyYW1zX1Rlc3RXZWJLaXRB
UElfVGVzdFdlYktpdDJfTERBREQgPSBcCiAJJChQcm9ncmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RX
VEZfTERBREQpIFwKIAlsaWJqYXZhc2NyaXB0Y29yZWd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9W
RVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBcCi0JbGlid2Via2l0Mmd0
ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJT
SU9OQC5sYQorCWxpYndlYmtpdDJndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdF
QktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAorCSQoQ0xVVFRFUl9MSUJTKQogCiBQcm9n
cmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXZWJLaXQyX0xERkxBR1MgPSBcCiAJJChQcm9ncmFtc19U
ZXN0V2ViS2l0QVBJX1Rlc3RXVEZfTERGTEFHUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2Vm
aWxlLmFtCmluZGV4IDg1YWQ0MjcuLmFmZjY4NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVt
YWtlZmlsZS5hbQpAQCAtMzgsNiArMzgsNyBAQCBQcm9ncmFtc19XZWJLaXRUZXN0UnVubmVyX0NQ
UEZMQUdTID0gXAogCSQoamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MpIFwKIAkkKEdMT0JBTERFUFNf
Q0ZMQUdTKSBcCiAJJChDQUlST19DRkxBR1MpIFwKKwkkKENMVVRURVJfQ0ZMQUdTKSBcCiAJJChH
VEtfQ0ZMQUdTKSBcCiAJJChMSUJTT1VQX0NGTEFHUykKIFByb2dyYW1zX1dlYktpdFRlc3RSdW5u
ZXJfQ1hYRkxBR1MgPSAkKGdsb2JhbF9jeHhmbGFncykKQEAgLTQ4LDYgKzQ5LDcgQEAgUHJvZ3Jh
bXNfV2ViS2l0VGVzdFJ1bm5lcl9MREFERCA9IFwKIAlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtf
QVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKIAkk
KEdMT0JBTERFUFNfTElCUykgXAogCSQoQ0FJUk9fTElCUykgXAorCSQoQ0xVVFRFUl9MSUJTKSBc
CiAJJChHVEtfTElCUykgXAogCSQoR0xJQl9MSUJTKSBcCiAJJChMSUJTT1VQX0xJQlMpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165193</attachid>
            <date>2012-09-21 14:46:42 -0700</date>
            <delta_ts>2012-09-23 09:39:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73767-20120922064606.patch</filename>
            <type>text/plain</type>
            <size>21550</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0YmY2ZmQ1MzVhZTk0ZmUxODg1NjBk
NDc2ZDA4OTZjY2RhOTdjMzAuLjk1MGM4ZGNjYTE4ZTJjOTNkYmI1NWY0MGUzZjhjMGQ2ZDE3NDQ2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMjEgIEpvb25lIEh1ciAgPGpvb25lLmh1
ckBpbnRlbC5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEdyYXBoaWNzTGF5ZXIgdXNp
bmcgQ2x1dHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzM3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgQ2x1dHRlckFjdG9yIGFuZCBHcmFwaGljc0xheWVyQWN0b3IgdG8gR1R5cGVkZWZzLmgu
CisKKyAgICAgICAgKiB3dGYvZ29iamVjdC9HVHlwZWRlZnMuaDoKKwogMjAxMi0wOS0xNCAgVG9y
IEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0
XSBNYWtlIGZvcmNlX3N0YXRpY19saWJzX2FzX3NoYXJlZCB3b3JrIG9uIE1hYyBPUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGE4MjA2YzJiZWFlZGU3MTdmNWU4ZTMwOTBlNmU5Yzg2OWM0ZDY5ODUuLjMyNzM1Yzll
MDVmNTM3MjNhMWVmMjI2MWI3NjQwYmI2NzU5ZWJmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MCBAQAorMjAxMi0wOS0yMSAgSm9vbmUgSHVyICA8am9vbmUuaHVyQGludGVsLmNvbT4sIEd1c3Rh
dm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29tPgorCisgICAg
ICAgIFtHVEtdIEltcGxlbWVudCBHcmFwaGljc0xheWVyIHVzaW5nIENsdXR0ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNzY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNo
IGlzIG5lZWRlZCBmb3IgZW5hYmxpbmcgQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmcoQ2x1dHRlciBi
YWNrZW5kKSAKKyAgICAgICAgd2l0aCB0aGUgcGF0Y2hlcyBzdWJtaXR0ZWQgaW4gYnVnIDkyMDQ1
IGFuZCA5MTk0MC4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyB3aWxsIGJl
IGNvdmVyZWQgYnkgcGl4ZWwgdGVzdHMgZm9yIFF0L0dUSysgYWNjZWxlcmF0ZWQKKyAgICAgICAg
Y29tcG9zaXRpbmcgYW5kIDNEIHRyYW5zZm9ybXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIHBsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRl
ckxheWVyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQbGF0
Zm9ybUNsdXR0ZXJMYXllckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0
ZXJMYXllckNsaWVudDo6flBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2x1dHRlci5jcHA6
IEFkZGVkIHRvIGNvbnZlcnQgQ29nbE1hdHJpeCB0byAKKyAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpvcGVyYXRvciBDb2dsTWF0cml4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgIChUcmFuc2Zv
cm1hdGlvbk1hdHJpeCk6CisKIDIwMTItMDktMTQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGEgd29ya2Fyb3VuZCBmb3IgYSBteXN0ZXJp
b3VzIGNyYXNoIG9uIEFwcGxlIFdpbmRvd3MgcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA1N2Ni
OTRhYmJkNDQzZmI3ODczMDQxOWMyOWNmYWUzODgyMTI0YTBmLi45ZGI1ZTc3ZGVhYzA3MzQ4MjMw
ZGRmYmUwNmNmOTllZDRkYWIyMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMDktMjEgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBpbnRlbC5jb20+CisKKyAgICAgICAg
W0dUS10gSW1wbGVtZW50IEdyYXBoaWNzTGF5ZXIgdXNpbmcgQ2x1dHRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NjcKKworICAgICAgICBUaGlz
IHBhdGNoIGlzIG5lZWRlZCBmb3IgZW5hYmxpbmcgQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmcoQ2x1
dHRlciBiYWNrZW5kKQorICAgICAgICB3aXRoIHRoZSBwYXRjaGVzIHN1Ym1pdHRlZCBpbiBidWcg
OTIwNDUgYW5kIDkxOTQwLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRDbHV0dGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyk6IEFkZGVk
IHRvIGZpeCBidWxpZCBicmVhay4KKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDktMTQgIFph
biBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBDbGVh
ciBhcHBsaWNhdGlvbiBjYWNoZSBiZXR3ZWVuIHRlc3RzIGluIER1bXBSZW5kZXJUcmVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMWYzOWZkMjllOTFhNDE3NzAyN2JjNTg3MDliNWUxNmViMWI2NWMyMi4uZDQ5MWRk
YjFhNTVjN2IxZGU1ZTg3ZDM3OTA0YmE5ZTdhNjhhODMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDEyLTA5LTIxICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50ZWwuY29tPiwgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jb20+CisKKyAg
ICAgICAgW0dUS10gSW1wbGVtZW50IEdyYXBoaWNzTGF5ZXIgdXNpbmcgQ2x1dHRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBsaW5rIGVycm9y
cyBieSBhZGRpbmcgQ2x1dHRlciBsaWJyYXJ5IGFuZCBoZWFkZXIgdG8gV2ViS2l0MiBidWlsZC4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL0dOVW1ha2VmaWxlLmFtOgorCiAyMDEyLTA5LTE0ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBu
ZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRGF0YWJhc2VDYWxsYmFja3MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmggYi9Tb3VyY2UvV1RGL3d0Zi9n
b2JqZWN0L0dUeXBlZGVmcy5oCmluZGV4IDJlZmMwNzIzM2UxODAyODA1NzVmZWRmZWYyMTRmNjBh
MjRiOTk4OGIuLjc3ODU4ZDVlOWNkODgwNmY2OTQ1MDMwNTBkZGMzOTlmZjUyN2YxYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvZ29iamVjdC9HVHlwZWRlZnMuaApAQCAtNzEsNiArNzEsMTEgQEAgdHlwZWRlZiBzdHJ1
Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwogdHlwZWRlZiBzdHJ1Y3QgX2NhaXJv
X3JlY3RhbmdsZV9pbnQgY2Fpcm9fcmVjdGFuZ2xlX2ludF90OwogI2VuZGlmCiAKKyNpZiBVU0Uo
Q0xVVFRFUikKK3R5cGVkZWYgc3RydWN0IF9DbHV0dGVyQWN0b3IgQ2x1dHRlckFjdG9yOwordHlw
ZWRlZiBzdHJ1Y3QgX0dyYXBoaWNzTGF5ZXJBY3RvciBHcmFwaGljc0xheWVyQWN0b3I7CisjZW5k
aWYKKwogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgc3RydWN0IF9HdGtBY3Rpb24gR3RrQWN0
aW9uOwogdHlwZWRlZiBzdHJ1Y3QgX0d0a0FkanVzdG1lbnQgR3RrQWRqdXN0bWVudDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGFlMzBhNDM4ZWJjMWE2ZjFlZWZjYmVkMjBlOTUz
YjZjM2JmZDhiMTguLjVkMDc4MzNhZTg0YTEzM2NjNDVjMTliNzZjOWJhYjU2OWY1MjAyYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjIzMywxMCArNjIzMyw5IEBAIGVuZGlm
ICAjIEVORCBFTkFCTEVfV0VCR0wKIGlmIFVTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORwogaWYg
VVNFX0NMVVRURVIKIHdlYmNvcmVfc291cmNlcyArPSBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAgXAotCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIu
aCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9UcmFuc2Zvcm1h
dGlvbk1hdHJpeENsdXR0ZXIuY3BwCiBlbmRpZiAgIyBFTkQgVVNFX0NMVVRURVIKIAogaWYgVVNF
X1RFWFRVUkVfTUFQUEVSX0NBSVJPCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Ns
dXR0ZXIvR1JlZlB0ckNsdXR0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
YTM0MTg2YzI2MTc2ZmE0NGU2MDFkODJjNDg5MjM5NTFmNDkzOThkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Ns
dXR0ZXIvR1JlZlB0ckNsdXR0ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAot
LyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTEgQ29sbGFib3JhIEx0ZC4KLSAqCi0gKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw
LTEzMDEgIFVTQQotICovCi0KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdSZWZQ
dHJDbHV0dGVyLmgiCi0KLSNpbmNsdWRlIDxjbHV0dGVyL2NsdXR0ZXIuaD4KLQotbmFtZXNwYWNl
IFdURiB7Ci0KLXRlbXBsYXRlIDw+IEdSZWZQdHI8Q2x1dHRlckFjdG9yPiBhZG9wdEdSZWYoQ2x1
dHRlckFjdG9yKiBwdHIpCi17Ci0gICAgaWYgKGdfb2JqZWN0X2lzX2Zsb2F0aW5nKHB0cikpCi0g
ICAgICAgIGdfb2JqZWN0X3JlZl9zaW5rKHB0cik7Ci0KLSAgICByZXR1cm4gR1JlZlB0cjxDbHV0
dGVyQWN0b3I+KHB0ciwgR1JlZlB0ckFkb3B0KTsKLX0KLQotdGVtcGxhdGUgPD4gQ2x1dHRlckFj
dG9yKiByZWZHUHRyPENsdXR0ZXJBY3Rvcj4oQ2x1dHRlckFjdG9yKiBwdHIpCi17Ci0gICAgaWYg
KHB0cikgewotICAgICAgICBpZiAoZ19vYmplY3RfaXNfZmxvYXRpbmcocHRyKSkKLSAgICAgICAg
ICAgIGdfb2JqZWN0X3JlZl9zaW5rKHB0cik7Ci0KLSAgICAgICAgZ19vYmplY3RfcmVmKHB0cik7
Ci0gICAgfQotCi0gICAgcmV0dXJuIHB0cjsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQ
dHI8Q2x1dHRlckFjdG9yPihDbHV0dGVyQWN0b3IqIHB0cikKLXsKLSAgICBpZiAocHRyKQotICAg
ICAgICBnX29iamVjdF91bnJlZihwdHIpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGJkZWM2NTQ4MWEwMTliMWMzNjdiNDAwY2M1ZTNlOTk0MmJjNmZmMTguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTEgQ29sbGFib3JhIEx0ZC4KLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2lmbmRlZiBHUmVmUHRyQ2x1dHRlcl9oCi0jZGVmaW5lIEdSZWZQdHJDbHV0dGVyX2gKLQot
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KLQotdHlwZWRlZiBzdHJ1Y3QgX0NsdXR0
ZXJBY3RvciBDbHV0dGVyQWN0b3I7Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTw+IENs
dXR0ZXJBY3RvciogcmVmR1B0cjxDbHV0dGVyQWN0b3I+KENsdXR0ZXJBY3RvciogcHRyKTsKLXRl
bXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8Q2x1dHRlckFjdG9yPihDbHV0dGVyQWN0b3IqIHB0cik7
Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmgKaW5kZXggNDJmNmI3
NmY5YzdkMjU0ZjEwZjcwZTYyOTIyOGMzZWQzZGIyYWQ1Zi4uM2UxNDJlNDg3ZGU1MGVjZjhmZWQx
NDFkNDU2NjU0NjRkNDc0MzkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaApAQCAt
MjksMTAgKzI5LDEwIEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNp
bmNsdWRlICJHUmVmUHRyQ2x1dHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKIAog
I2luY2x1ZGUgPGNsdXR0ZXIvY2x1dHRlci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRl
ckxheWVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY2NTJmYWU4N2UxZTk2ZmIwM2ZhOTEyODVhYzkx
ZWQwOWMwZWJiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGllbnQuaApAQCAtMCwwICsxLDU3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQbGF0Zm9y
bUNsdXR0ZXJMYXllckNsaWVudF9oCisjZGVmaW5lIFBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50
X2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlIDxnbGli
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBQbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVh
bCB2b2lkIHBsYXRmb3JtQ2x1dHRlckxheWVyUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiBpbkNsaXApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
bHV0dGVyTGF5ZXJBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpID0gMDsKKworcHJv
dGVjdGVkOgorICAgIHZpcnR1YWwgflBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50KCkgeyB9Cit9
OworCit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNlbmRp
ZiAvLyBQbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvVHJhbnNmb3JtYXRpb25NYXRyaXhDbHV0
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvVHJhbnNm
b3JtYXRpb25NYXRyaXhDbHV0dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDhkNmMzNWEwOWM0YmIxOWFh
ODIyMzA5NTA4N2I0YWM3ZTYxNzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9UcmFuc2Zvcm1hdGlvbk1hdHJpeENsdXR0ZXIuY3Bw
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQ29sbGFib3JhIEx0
ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YKKyAqICB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisgKiAg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisKKyNpbmNsdWRlIDxjb2ds
L2NvZ2wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6
b3BlcmF0b3IgQ29nbE1hdHJpeCgpIGNvbnN0Cit7CisgICAgQ29nbE1hdHJpeCBtYXRyaXg7CisK
KyAgICBtYXRyaXgueHggPSAoZmxvYXQpbTExKCk7CisgICAgbWF0cml4Lnh5ID0gKGZsb2F0KW0y
MSgpOworICAgIG1hdHJpeC54eiA9IChmbG9hdCltMzEoKTsKKyAgICBtYXRyaXgueHcgPSAoZmxv
YXQpbTQxKCk7CisKKyAgICBtYXRyaXgueXggPSAoZmxvYXQpbTEyKCk7CisgICAgbWF0cml4Lnl5
ID0gKGZsb2F0KW0yMigpOworICAgIG1hdHJpeC55eiA9IChmbG9hdCltMzIoKTsKKyAgICBtYXRy
aXgueXcgPSAoZmxvYXQpbTQyKCk7CisKKyAgICBtYXRyaXguenggPSAoZmxvYXQpbTEzKCk7Cisg
ICAgbWF0cml4Lnp5ID0gKGZsb2F0KW0yMygpOworICAgIG1hdHJpeC56eiA9IChmbG9hdCltMzMo
KTsKKyAgICBtYXRyaXguencgPSAoZmxvYXQpbTQzKCk7CisKKyAgICBtYXRyaXgud3ggPSAoZmxv
YXQpbTE0KCk7CisgICAgbWF0cml4Lnd5ID0gKGZsb2F0KW0yNCgpOworICAgIG1hdHJpeC53eiA9
IChmbG9hdCltMzQoKTsKKyAgICBtYXRyaXgud3cgPSAoZmxvYXQpbTQ0KCk7CisKKyAgICByZXR1
cm4gbWF0cml4OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5k
ZXggY2QxZGI1ZTAzMGIzNjY1MjMyMGJjODVkNzZiNjdkMTA0MmM4NzBhYy4uOWVkYTc0NjA4ZmNi
MmZiMDQzZjQ0NmMxYzk2NzYzZTgzMWRkMmI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguaApAQCAtMzQsNiArMzQsOSBAQAogI2lmIFVTRShDQSkKIHR5cGVkZWYgc3RydWN0
IENBVHJhbnNmb3JtM0QgQ0FUcmFuc2Zvcm0zRDsKICNlbmRpZgorI2lmIFVTRShDTFVUVEVSKQor
dHlwZWRlZiBzdHJ1Y3QgX0NvZ2xNYXRyaXggQ29nbE1hdHJpeDsKKyNlbmRpZgogI2lmIFVTRShD
RykKIHR5cGVkZWYgc3RydWN0IENHQWZmaW5lVHJhbnNmb3JtIENHQWZmaW5lVHJhbnNmb3JtOwog
I2VsaWYgVVNFKENBSVJPKQpAQCAtMzI0LDYgKzMyNyw5IEBAIHB1YmxpYzoKICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeChjb25zdCBDQVRyYW5zZm9ybTNEJik7CiAgICAgb3BlcmF0b3IgQ0FUcmFu
c2Zvcm0zRCgpIGNvbnN0OwogI2VuZGlmCisjaWYgVVNFKENMVVRURVIpCisgICAgb3BlcmF0b3Ig
Q29nbE1hdHJpeCgpIGNvbnN0OworI2VuZGlmCiAjaWYgVVNFKENHKQogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4KGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgb3BlcmF0b3IgQ0dBZmZp
bmVUcmFuc2Zvcm0oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dENsdXR0ZXIuY3BwCmluZGV4IDQ1MTExN2E4MmRhY2M1MzUxOWVjOTM3ZGY5MzA3OTEzNDkzOTE1
NWEuLmM1MjNiYjU0NTkwODY2MzRhZDIzMWRiNTk3YTQ3YjA3YTdlYWQ0OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdD
b250ZXh0Q2x1dHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRDbHV0dGVyLmNwcApAQCAtMTEyLDYgKzExMiwx
MSBAQCB2b2lkIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpyZXNpemVSb290TGF5ZXIo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBndGtfd2lkZ2V0X3NpemVfYWxsb2NhdGUoR1RLX1dJ
REdFVChtX3Jvb3RMYXllckVtYmVkZGVyKSwgJmFsbG9jYXRpb24pOwogfQogCit2b2lkIEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0OjpzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29u
c3QgSW50UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiBmbHVzaEFuZFJlbmRl
ckxheWVyc0NhbGxiYWNrKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KiBjb250ZXh0KQog
ewogICAgIGNvbnRleHQtPmZsdXNoQW5kUmVuZGVyTGF5ZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
CmluZGV4IGJhMGFjNjk1NTMwMTY4NTQyMzE3M2VhYzg5OTdkY2RmOGM1ZDNmYTkuLjUyNTExMTJi
YmMxNjM4ZWQ1OWU5MTIxZGIxYTNmODRkMjg4ZTMwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBA
IC0xMDEsNiArMTAxLDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJT
SU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9DUFAKIAkkKHdlYmNvcmVfY3Bw
ZmxhZ3MpIFwKIAkkKHdlYmNvcmVndGtfY3BwZmxhZ3MpIFwKIAkkKGphdmFzY3JpcHRjb3JlX2Nw
cGZsYWdzKSBcCisJJChDTFVUVEVSX0NGTEFHUykgXAogCSQoQ09WRVJBR0VfQ0ZMQUdTKSBcCiAJ
JChHRU9DTFVFX0NGTEFHUykgXAogCSQoR0xJQl9DRkxBR1MpIFwKQEAgLTE2Miw2ICsxNjMsNyBA
QCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJLSVRHVEtf
QVBJX01JTk9SX1ZFUlNJT05AX2xhX0xJQgogCWxpYmphdmFzY3JpcHRjb3JlZ3RrLUBXRUJLSVRH
VEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwK
IAlsaWJXZWJDb3JlR3RrLmxhIFwKIAkkKENBSVJPX0xJQlMpIFwKKwkkKENMVVRURVJfTElCUykg
XAogCSQoQ09WRVJBR0VfTERGTEFHUykgXAogCSQoRkFSU1RSRUFNX0xJQlMpIFwKIAkkKEdBSUxf
TElCUykgXApAQCAtMzUzLDYgKzM1NSw3IEBAIFByb2dyYW1zX1dlYktpdFdlYlByb2Nlc3NfQ1BQ
RkxBR1MgPSBcCiBQcm9ncmFtc19XZWJLaXRXZWJQcm9jZXNzX0NGTEFHUyA9IFwKIAkkKGdsb2Jh
bF9jZmxhZ3MpIFwKIAkkKENBSVJPX0NGTEFHUykgXAorCSQoQ0xVVFRFUl9DRkxBR1MpIFwKIAkk
KEdMSUJfQ0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChHVEtfVU5JWF9QUklOVElOR19D
RkxBR1MpIFwKQEAgLTM2NSw2ICszNjgsNyBAQCBQcm9ncmFtc19XZWJLaXRXZWJQcm9jZXNzX1NP
VVJDRVMgPSBcCiBQcm9ncmFtc19XZWJLaXRXZWJQcm9jZXNzX0xEQUREID0gXAogCWxpYmphdmFz
Y3JpcHRjb3JlZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJ
X01JTk9SX1ZFUlNJT05ALmxhIFwKIAlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9S
X1ZFUlNJT05ALkBXRUJLSVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKKwkkKENMVVRURVJf
TElCUykgXAogCSQoR0xJQl9MSUJTKSBcCiAJJChHVEtfTElCUykgXAogCSQoR1RLX1VOSVhfUFJJ
TlRJTkdfTElCUykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQppbmRleCAzZmFkZjQwYjRjZDNlNTA1MjE3OTk0ZDQ4ODlm
ZGUwNGJiOTY5ZmY5Li5lYjQxY2U1MWZhNmM5ZWEwNjhiYzI5ZTRiMTdkZmYzM2JhOGYxNTM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtl
ZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVt
YWtlZmlsZS5hbQpAQCAtMzgsNiArMzgsNyBAQCB3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzID0gXAog
CS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvd2Via2l0Mmd0ay9pbmNs
dWRlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ayBcCiAJ
JChnbG9iYWxfY3BwZmxhZ3MpIFwKKwkkKENMVVRURVJfQ0ZMQUdTKSBcCiAJJChHTElCX0NGTEFH
UykgXAogCSQoR1RLX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpCkBAIC00Niw2ICs0Nyw3
IEBAIHdlYmtpdDJfdGVzdHNfbGRhZGQgPSBcCiAJTGlicmFyaWVzL2xpYldlYktpdDJBUElUZXN0
Q29yZS5sYSBcCiAJbGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAogCWxpYndlYmtpdDJndGst
QFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lP
TkAubGEgXAorCSQoQ0xVVFRFUl9MSUJTKSBcCiAJJChHRU9DTFVFX0xJQlMpIFwKIAkkKEdMSUJf
TElCUykgXAogCSQoR1RLX0xJQlMpIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBmZGEyMzViYWQ0NGI2M2JmOGJhNTM1NzJiYjhkMTkwNzA4Yzk1
MTI0Li4wZWE5YzYxYTk5ZmU4ODBhMTBiYmM2NDlmMTUwOTY5Mzg1ZDk5ZTgyIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTItMDktMjEgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBpbnRlbC5jb20+LCBHdXN0YXZvIE5v
cm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvbT4KKworICAgICAgICBb
R1RLXSBJbXBsZW1lbnQgR3JhcGhpY3NMYXllciB1c2luZyBDbHV0dGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzc2NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeGVkIGxpbmsgZXJyb3JzIGJ5IGFk
ZGluZyBDbHV0dGVyIGxpYnJhcnkgYW5kIGhlYWRlciB0byBNaW5pQnJvd2VzciwKKyAgICAgICAg
V2ViS2l0VGVzdFJ1bm5lciwgYW5kIFRlc3RXZWJLaXRBUEkgYnVpbGRzLgorCisgICAgICAgICog
TWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5h
bToKKwogMjAxMi0wOS0xNCAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW0Nocm9taXVtXSBTdXBwb3J0IHRoZSAtLXtpbixvdXQsZXJyfS1maWZvIGFyZ3Vt
ZW50cyBvbiBUZXN0V2ViS2l0QVBJIGFuZCB3ZWJraXRfdW5pdF90ZXN0cwpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IDUwOTc0YWUyZjZkZTNjYjZmODc3OWQyOGMzM2FkYTgx
NThjNjViMWUuLjI2MDc5OTExYzExNTAwNjIxZjExM2M2ODUwMTY0MjRmM2I2YmVjNzcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTExLDYgKzExLDcgQEAgUHJvZ3JhbXNf
TWluaUJyb3dzZXJfQ1BQRkxBR1MgPSBcCiAJLURXRUJLSVRfRVhFQ19QQVRIPVwiJHtzaGVsbCBw
d2R9LyQodG9wX2J1aWxkZGlyKS9Qcm9ncmFtcy9cIiBcCiAJJChnbG9iYWxfY3BwZmxhZ3MpIFwK
IAkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKSBcCisJJChDTFVUVEVSX0NGTEFHUykgXAogCSQo
R0xJQl9DRkxBR1MpIFwKIAkkKEdUS19DRkxBR1MpCiAKQEAgLTMzLDYgKzM0LDcgQEAgbm9kaXN0
X1Byb2dyYW1zX01pbmlCcm93c2VyX1NPVVJDRVMgPSBcCiAKIFByb2dyYW1zX01pbmlCcm93c2Vy
X0xEQUREID0gXAogCWxpYndlYmtpdDJndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAu
QFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAorCSQoQ0xVVFRFUl9MSUJTKSBcCiAJ
JChHTElCX0xJQlMpIFwKIAkkKEdUS19MSUJTKSBcCiAJJChMSUJTT1VQX0xJQlMpCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9HTlVtYWtlZmlsZS5hbQppbmRleCA4ZTJmMTk2NzQ0NmRiN2Y3Yjg2MDg4ZDljNmVkYjZh
YTc1NTZmYjg3Li5iZDc3YjlhODkzMjY3MzM2ZTg0NjI2MTM1NTZlMzk0ODRhZTFkNTYwIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvR05VbWFrZWZpbGUuYW0KQEAgLTMyLDcgKzMyLDggQEAgbm9pbnN0X1BST0dS
QU1TICs9IFwKIAogUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V1RGX0NQUEZMQUdTID0gXAog
CSQoTGlicmFyaWVzX2xpYlRlc3RXZWJLaXRBUElNYWluX2xhX0NQUEZMQUdTKSBcCi0JJChHTElC
X0xJQlMpIFwKKwkkKEdMSUJfQ0ZMQUdTKSBcCisJJChDTFVUVEVSX0NGTEFHUykgXAogCSQoQ0FJ
Uk9fQ0ZMQUdTKSBcCiAJJChMSUJTT1VQX0NGTEFHUykKIApAQCAtNDEsNiArNDIsNyBAQCBQcm9n
cmFtc19UZXN0V2ViS2l0QVBJX1Rlc3RXVEZfTERBREQgPSBcCiAJTGlicmFyaWVzL2xpYmd0ZXN0
LmxhIFwKIAlsaWJXVEYubGEgXAogCSQoQ0FJUk9fTElCUykgXAorCSQoQ0xVVFRFUl9MSUJTKSBc
CiAJJChHTElCX0xJQlMpIFwKIAkkKEdUS19MSUJTKSBcCiAJJChMSUJTT1VQX0xJQlMpCkBAIC0x
MDEsMTIgKzEwMywxNCBAQCBub2luc3RfUFJPR1JBTVMgKz0gXAogCiBQcm9ncmFtc19UZXN0V2Vi
S2l0QVBJX1Rlc3RXZWJLaXQyX0NQUEZMQUdTID0gXAogCSQoUHJvZ3JhbXNfVGVzdFdlYktpdEFQ
SV9UZXN0V1RGX0NQUEZMQUdTKSBcCi0JLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMv
V2ViS2l0Mi9pbmNsdWRlCisJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0
Mi9pbmNsdWRlIFwKKwkkKENMVVRURVJfQ0ZMQUdTKQogCiBQcm9ncmFtc19UZXN0V2ViS2l0QVBJ
X1Rlc3RXZWJLaXQyX0xEQUREID0gXAogCSQoUHJvZ3JhbXNfVGVzdFdlYktpdEFQSV9UZXN0V1RG
X0xEQUREKSBcCiAJbGliamF2YXNjcmlwdGNvcmVndGstQFdFQktJVEdUS19BUElfTUFKT1JfVkVS
U0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkAubGEgXAotCWxpYndlYmtpdDJndGst
QFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkAuQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lP
TkAubGEKKwlsaWJ3ZWJraXQyZ3RrLUBXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05ALkBXRUJL
SVRHVEtfQVBJX01JTk9SX1ZFUlNJT05ALmxhIFwKKwkkKENMVVRURVJfTElCUykKIAogUHJvZ3Jh
bXNfVGVzdFdlYktpdEFQSV9UZXN0V2ViS2l0Ml9MREZMQUdTID0gXAogCSQoUHJvZ3JhbXNfVGVz
dFdlYktpdEFQSV9UZXN0V1RGX0xERkxBR1MpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmls
ZS5hbQppbmRleCBjOGRhY2EyY2NhMjNhY2I3ZmM4MjY4MzJkNzBlOTg2NjJmOGMxMmUxLi45NWVl
M2M2YjNhMTgxODIyZjY5ZmQ3ZjI3MWY3M2FlODc1ZDkxYzg4IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvR05VbWFrZWZpbGUuYW0KQEAgLTQwLDYgKzQwLDcgQEAgUHJvZ3JhbXNfV2ViS2l0VGVzdFJ1
bm5lcl9DUFBGTEFHUyA9IFwKIAkkKGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzKSBcCiAJJChHTE9C
QUxERVBTX0NGTEFHUykgXAogCSQoQ0FJUk9fQ0ZMQUdTKSBcCisJJChDTFVUVEVSX0NGTEFHUykg
XAogCSQoR1RLX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpCiBQcm9ncmFtc19XZWJLaXRU
ZXN0UnVubmVyX0NYWEZMQUdTID0gJChnbG9iYWxfY3h4ZmxhZ3MpCkBAIC01MCw2ICs1MSw3IEBA
IFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfTERBREQgPSBcCiAJbGlid2Via2l0Mmd0ay1AV0VC
S0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5s
YSBcCiAJJChHTE9CQUxERVBTX0xJQlMpIFwKIAkkKENBSVJPX0xJQlMpIFwKKwkkKENMVVRURVJf
TElCUykgXAogCSQoR1RLX0xJQlMpIFwKIAkkKEdMSUJfTElCUykgXAogCSQoTElCU09VUF9MSUJT
KSBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165285</attachid>
            <date>2012-09-23 09:39:18 -0700</date>
            <delta_ts>2012-09-24 09:56:17 -0700</delta_ts>
            <desc>Martin &amp; Carlos, thanks for the review</desc>
            <filename>bug-73767-20120924013838.patch</filename>
            <type>text/plain</type>
            <size>16410</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA0YmY2ZmQ1MzVhZTk0ZmUxODg1NjBk
NDc2ZDA4OTZjY2RhOTdjMzAuLjk1MGM4ZGNjYTE4ZTJjOTNkYmI1NWY0MGUzZjhjMGQ2ZDE3NDQ2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMjEgIEpvb25lIEh1ciAgPGpvb25lLmh1
ckBpbnRlbC5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEdyYXBoaWNzTGF5ZXIgdXNp
bmcgQ2x1dHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzM3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgQ2x1dHRlckFjdG9yIGFuZCBHcmFwaGljc0xheWVyQWN0b3IgdG8gR1R5cGVkZWZzLmgu
CisKKyAgICAgICAgKiB3dGYvZ29iamVjdC9HVHlwZWRlZnMuaDoKKwogMjAxMi0wOS0xNCAgVG9y
IEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0
XSBNYWtlIGZvcmNlX3N0YXRpY19saWJzX2FzX3NoYXJlZCB3b3JrIG9uIE1hYyBPUwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGE4MjA2YzJiZWFlZGU3MTdmNWU4ZTMwOTBlNmU5Yzg2OWM0ZDY5ODUuLjMyNzM1Yzll
MDVmNTM3MjNhMWVmMjI2MWI3NjQwYmI2NzU5ZWJmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MCBAQAorMjAxMi0wOS0yMSAgSm9vbmUgSHVyICA8am9vbmUuaHVyQGludGVsLmNvbT4sIEd1c3Rh
dm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY29tPgorCisgICAg
ICAgIFtHVEtdIEltcGxlbWVudCBHcmFwaGljc0xheWVyIHVzaW5nIENsdXR0ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczNzY3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNo
IGlzIG5lZWRlZCBmb3IgZW5hYmxpbmcgQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmcoQ2x1dHRlciBi
YWNrZW5kKSAKKyAgICAgICAgd2l0aCB0aGUgcGF0Y2hlcyBzdWJtaXR0ZWQgaW4gYnVnIDkyMDQ1
IGFuZCA5MTk0MC4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyB3aWxsIGJl
IGNvdmVyZWQgYnkgcGl4ZWwgdGVzdHMgZm9yIFF0L0dUSysgYWNjZWxlcmF0ZWQKKyAgICAgICAg
Y29tcG9zaXRpbmcgYW5kIDNEIHRyYW5zZm9ybXMuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIHBsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRl
ckxheWVyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChQbGF0
Zm9ybUNsdXR0ZXJMYXllckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNsdXR0
ZXJMYXllckNsaWVudDo6flBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1RyYW5zZm9ybWF0aW9uTWF0cml4Q2x1dHRlci5jcHA6
IEFkZGVkIHRvIGNvbnZlcnQgQ29nbE1hdHJpeCB0byAKKyAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4OjpvcGVyYXRvciBDb2dsTWF0cml4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgIChUcmFuc2Zv
cm1hdGlvbk1hdHJpeCk6CisKIDIwMTItMDktMTQgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGEgd29ya2Fyb3VuZCBmb3IgYSBteXN0ZXJp
b3VzIGNyYXNoIG9uIEFwcGxlIFdpbmRvd3MgcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA1N2Ni
OTRhYmJkNDQzZmI3ODczMDQxOWMyOWNmYWUzODgyMTI0YTBmLi45ZGI1ZTc3ZGVhYzA3MzQ4MjMw
ZGRmYmUwNmNmOTllZDRkYWIyMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMDktMjEgIEpvb25lIEh1ciAgPGpvb25lLmh1ckBpbnRlbC5jb20+CisKKyAgICAgICAg
W0dUS10gSW1wbGVtZW50IEdyYXBoaWNzTGF5ZXIgdXNpbmcgQ2x1dHRlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NjcKKworICAgICAgICBUaGlz
IHBhdGNoIGlzIG5lZWRlZCBmb3IgZW5hYmxpbmcgQWNjZWxlcmF0ZWQgQ29tcG9zaXRpbmcoQ2x1
dHRlciBiYWNrZW5kKQorICAgICAgICB3aXRoIHRoZSBwYXRjaGVzIHN1Ym1pdHRlZCBpbiBidWcg
OTIwNDUgYW5kIDkxOTQwLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0NvbnRleHRDbHV0dGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyk6IEFkZGVk
IHRvIGZpeCBidWxpZCBicmVhay4KKyAgICAgICAgKFdlYktpdCk6CisKIDIwMTItMDktMTQgIFph
biBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBDbGVh
ciBhcHBsaWNhdGlvbiBjYWNoZSBiZXR3ZWVuIHRlc3RzIGluIER1bXBSZW5kZXJUcmVlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMWYzOWZkMjllOTFhNDE3NzAyN2JjNTg3MDliNWUxNmViMWI2NWMyMi4uMTFkZjhm
YjQwYTdmYWU1MzljMzUwMTQ4MTAyOWYwZTEyYjUxMWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTA5LTIxICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50ZWwuY29tPiwgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jb20+CisKKyAg
ICAgICAgW0dUS10gSW1wbGVtZW50IEdyYXBoaWNzTGF5ZXIgdXNpbmcgQ2x1dHRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3NjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCBsaW5rIGVycm9y
cyBieSBhZGRpbmcgQ2x1dHRlciBsaWJyYXJ5IGFuZCBoZWFkZXIgdG8gV2ViS2l0MiBidWlsZC4K
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDEyLTA5LTE0ICBDaHJpc3RvcGhlIER1
bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgV2ViS2l0VGVzdFJ1
bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRGF0YWJhc2VDYWxsYmFja3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmggYi9Tb3VyY2UvV1RG
L3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oCmluZGV4IDJlZmMwNzIzM2UxODAyODA1NzVmZWRmZWYy
MTRmNjBhMjRiOTk4OGIuLjc3ODU4ZDVlOWNkODgwNmY2OTQ1MDMwNTBkZGMzOTlmZjUyN2YxYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1R5cGVkZWZzLmgKKysrIGIvU291
cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaApAQCAtNzEsNiArNzEsMTEgQEAgdHlwZWRl
ZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OwogdHlwZWRlZiBzdHJ1Y3Qg
X2NhaXJvX3JlY3RhbmdsZV9pbnQgY2Fpcm9fcmVjdGFuZ2xlX2ludF90OwogI2VuZGlmCiAKKyNp
ZiBVU0UoQ0xVVFRFUikKK3R5cGVkZWYgc3RydWN0IF9DbHV0dGVyQWN0b3IgQ2x1dHRlckFjdG9y
OwordHlwZWRlZiBzdHJ1Y3QgX0dyYXBoaWNzTGF5ZXJBY3RvciBHcmFwaGljc0xheWVyQWN0b3I7
CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKEdUSykKIHR5cGVkZWYgc3RydWN0IF9HdGtBY3Rpb24g
R3RrQWN0aW9uOwogdHlwZWRlZiBzdHJ1Y3QgX0d0a0FkanVzdG1lbnQgR3RrQWRqdXN0bWVudDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGFlMzBhNDM4ZWJjMWE2ZjFlZWZjYmVk
MjBlOTUzYjZjM2JmZDhiMTguLjVkMDc4MzNhZTg0YTEzM2NjNDVjMTliNzZjOWJhYjU2OWY1MjAy
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjIzMywxMCArNjIzMyw5IEBA
IGVuZGlmICAjIEVORCBFTkFCTEVfV0VCR0wKIGlmIFVTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElO
RwogaWYgVVNFX0NMVVRURVIKIHdlYmNvcmVfc291cmNlcyArPSBcCi0JU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRlci5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5jcHAgXAotCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNs
dXR0ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9UcmFu
c2Zvcm1hdGlvbk1hdHJpeENsdXR0ZXIuY3BwCiBlbmRpZiAgIyBFTkQgVVNFX0NMVVRURVIKIAog
aWYgVVNFX1RFWFRVUkVfTUFQUEVSX0NBSVJPCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyYTM0MTg2YzI2MTc2ZmE0NGU2MDFkODJjNDg5MjM5NTFmNDkzOThkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAs
MCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTEgQ29sbGFib3JhIEx0ZC4KLSAqCi0gKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg
IDAyMTEwLTEzMDEgIFVTQQotICovCi0KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkdSZWZQdHJDbHV0dGVyLmgiCi0KLSNpbmNsdWRlIDxjbHV0dGVyL2NsdXR0ZXIuaD4KLQotbmFt
ZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlIDw+IEdSZWZQdHI8Q2x1dHRlckFjdG9yPiBhZG9wdEdS
ZWYoQ2x1dHRlckFjdG9yKiBwdHIpCi17Ci0gICAgaWYgKGdfb2JqZWN0X2lzX2Zsb2F0aW5nKHB0
cikpCi0gICAgICAgIGdfb2JqZWN0X3JlZl9zaW5rKHB0cik7Ci0KLSAgICByZXR1cm4gR1JlZlB0
cjxDbHV0dGVyQWN0b3I+KHB0ciwgR1JlZlB0ckFkb3B0KTsKLX0KLQotdGVtcGxhdGUgPD4gQ2x1
dHRlckFjdG9yKiByZWZHUHRyPENsdXR0ZXJBY3Rvcj4oQ2x1dHRlckFjdG9yKiBwdHIpCi17Ci0g
ICAgaWYgKHB0cikgewotICAgICAgICBpZiAoZ19vYmplY3RfaXNfZmxvYXRpbmcocHRyKSkKLSAg
ICAgICAgICAgIGdfb2JqZWN0X3JlZl9zaW5rKHB0cik7Ci0KLSAgICAgICAgZ19vYmplY3RfcmVm
KHB0cik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHB0cjsKLX0KLQotdGVtcGxhdGUgPD4gdm9pZCBk
ZXJlZkdQdHI8Q2x1dHRlckFjdG9yPihDbHV0dGVyQWN0b3IqIHB0cikKLXsKLSAgICBpZiAocHRy
KQotICAgICAgICBnX29iamVjdF91bnJlZihwdHIpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGJkZWM2NTQ4MWEwMTliMWMzNjdiNDAwY2M1ZTNlOTk0MmJjNmZmMTguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
MzQgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTEgQ29sbGFib3JhIEx0ZC4KLSAq
Ci0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
LSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
Ci0gKi8KLQotI2lmbmRlZiBHUmVmUHRyQ2x1dHRlcl9oCi0jZGVmaW5lIEdSZWZQdHJDbHV0dGVy
X2gKLQotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KLQotdHlwZWRlZiBzdHJ1Y3Qg
X0NsdXR0ZXJBY3RvciBDbHV0dGVyQWN0b3I7Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTw+IENsdXR0ZXJBY3RvciogcmVmR1B0cjxDbHV0dGVyQWN0b3I+KENsdXR0ZXJBY3RvciogcHRy
KTsKLXRlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8Q2x1dHRlckFjdG9yPihDbHV0dGVyQWN0b3Iq
IHB0cik7Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmgKaW5kZXgg
NDJmNmI3NmY5YzdkMjU0ZjEwZjcwZTYyOTIyOGMzZWQzZGIyYWQ1Zi4uM2UxNDJlNDg3ZGU1MGVj
ZjhmZWQxNDFkNDU2NjU0NjRkNDc0MzkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIu
aApAQCAtMjksMTAgKzI5LDEwIEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAKLSNpbmNsdWRlICJHUmVmUHRyQ2x1dHRlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIu
aCIKIAogI2luY2x1ZGUgPGNsdXR0ZXIvY2x1dHRlci5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0
L0dSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3JtQ2x1dHRlckxheWVyQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1BsYXRmb3Jt
Q2x1dHRlckxheWVyQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY2NTJmYWU4N2UxZTk2ZmIwM2ZhOTEy
ODVhYzkxZWQwOWMwZWJiYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGllbnQuaApAQCAtMCww
ICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBDb2xsYWJvcmEgTHRkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQ
bGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudF9oCisjZGVmaW5lIFBsYXRmb3JtQ2x1dHRlckxheWVy
Q2xpZW50X2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRl
IDxnbGliLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBQbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB2b2lkIHBsYXRmb3JtQ2x1dHRlckxheWVyUGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBpbkNsaXApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGxh
dGZvcm1DbHV0dGVyTGF5ZXJBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpID0gMDsK
KworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50KCkg
eyB9Cit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisK
KyNlbmRpZiAvLyBQbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudF9oCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvVHJhbnNmb3JtYXRpb25NYXRy
aXhDbHV0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIv
VHJhbnNmb3JtYXRpb25NYXRyaXhDbHV0dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YjM0NDkxMDQwMTFh
M2Y5MmRkYzI1YTA3M2MyZGVkOGUzMDc1OWZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9UcmFuc2Zvcm1hdGlvbk1hdHJpeENsdXR0
ZXIuY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQ29sbGFi
b3JhIEx0ZC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YKKyAq
ICB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
CisgKiAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisKKyNpbmNsdWRl
IDxjb2dsL2NvZ2wuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitUcmFuc2Zvcm1hdGlvbk1h
dHJpeDo6b3BlcmF0b3IgQ29nbE1hdHJpeCgpIGNvbnN0Cit7CisgICAgQ29nbE1hdHJpeCBtYXRy
aXg7CisKKyAgICBtYXRyaXgueHggPSBzdGF0aWNfY2FzdDxmbG9hdD4obTExKCkpOworICAgIG1h
dHJpeC54eSA9IHN0YXRpY19jYXN0PGZsb2F0PihtMjEoKSk7CisgICAgbWF0cml4Lnh6ID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KG0zMSgpKTsKKyAgICBtYXRyaXgueHcgPSBzdGF0aWNfY2FzdDxmbG9h
dD4obTQxKCkpOworCisgICAgbWF0cml4Lnl4ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG0xMigpKTsK
KyAgICBtYXRyaXgueXkgPSBzdGF0aWNfY2FzdDxmbG9hdD4obTIyKCkpOworICAgIG1hdHJpeC55
eiA9IHN0YXRpY19jYXN0PGZsb2F0PihtMzIoKSk7CisgICAgbWF0cml4Lnl3ID0gc3RhdGljX2Nh
c3Q8ZmxvYXQ+KG00MigpKTsKKworICAgIG1hdHJpeC56eCA9IHN0YXRpY19jYXN0PGZsb2F0Piht
MTMoKSk7CisgICAgbWF0cml4Lnp5ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG0yMygpKTsKKyAgICBt
YXRyaXguenogPSBzdGF0aWNfY2FzdDxmbG9hdD4obTMzKCkpOworICAgIG1hdHJpeC56dyA9IHN0
YXRpY19jYXN0PGZsb2F0PihtNDMoKSk7CisKKyAgICBtYXRyaXgud3ggPSBzdGF0aWNfY2FzdDxm
bG9hdD4obTE0KCkpOworICAgIG1hdHJpeC53eSA9IHN0YXRpY19jYXN0PGZsb2F0PihtMjQoKSk7
CisgICAgbWF0cml4Lnd6ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG0zNCgpKTsKKyAgICBtYXRyaXgu
d3cgPSBzdGF0aWNfY2FzdDxmbG9hdD4obTQ0KCkpOworCisgICAgcmV0dXJuIG1hdHJpeDsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCmluZGV4IGNkMWRiNWUwMzBi
MzY2NTIzMjBiYzg1ZDc2YjY3ZDEwNDJjODcwYWMuLjllZGE3NDYwOGZjYjJmYjA0M2Y0NDZjMWM5
Njc2M2U4MzFkZDJiN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAg
LTM0LDYgKzM0LDkgQEAKICNpZiBVU0UoQ0EpCiB0eXBlZGVmIHN0cnVjdCBDQVRyYW5zZm9ybTNE
IENBVHJhbnNmb3JtM0Q7CiAjZW5kaWYKKyNpZiBVU0UoQ0xVVFRFUikKK3R5cGVkZWYgc3RydWN0
IF9Db2dsTWF0cml4IENvZ2xNYXRyaXg7CisjZW5kaWYKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0
cnVjdCBDR0FmZmluZVRyYW5zZm9ybSBDR0FmZmluZVRyYW5zZm9ybTsKICNlbGlmIFVTRShDQUlS
TykKQEAgLTMyNCw2ICszMjcsOSBAQCBwdWJsaWM6CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgo
Y29uc3QgQ0FUcmFuc2Zvcm0zRCYpOwogICAgIG9wZXJhdG9yIENBVHJhbnNmb3JtM0QoKSBjb25z
dDsKICNlbmRpZgorI2lmIFVTRShDTFVUVEVSKQorICAgIG9wZXJhdG9yIENvZ2xNYXRyaXgoKSBj
b25zdDsKKyNlbmRpZgogI2lmIFVTRShDRykKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25z
dCBDR0FmZmluZVRyYW5zZm9ybSYpOwogICAgIG9wZXJhdG9yIENHQWZmaW5lVHJhbnNmb3JtKCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dENsdXR0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHRDbHV0dGVyLmNwcApp
bmRleCA0NTExMTdhODJkYWNjNTM1MTllYzkzN2RmOTMwNzkxMzQ5MzkxNTVhLi5jNTIzYmI1NDU5
MDg2NjM0YWQyMzFkYjU5N2E0N2IwN2E3ZWFkNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dENsdXR0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHAKQEAgLTExMiw2ICsxMTIsMTEgQEAgdm9pZCBBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVzaXplUm9vdExheWVyKGNvbnN0IEludFNpemUm
IHNpemUpCiAgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRlKEdUS19XSURHRVQobV9yb290TGF5
ZXJFbWJlZGRlciksICZhbGxvY2F0aW9uKTsKIH0KIAordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRlbnRzKGNvbnN0IEludFJlY3QmIHNj
cm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4gZmx1c2hBbmRSZW5kZXJMYXllcnNDYWxsYmFj
ayhBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCogY29udGV4dCkKIHsKICAgICBjb250ZXh0
LT5mbHVzaEFuZFJlbmRlckxheWVycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05V
bWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCBiYTBhYzY5
NTUzMDE2ODU0MjMxNzNlYWM4OTk3ZGNkZjhjNWQzZmE5Li41MjAyMDg2MmZlNjY5NDFmZTgyZmZl
NWQzODEwNDZhODI0YmE1MWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMTAxLDYgKzEwMSw3
IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdU
S19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJJCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3
ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChqYXZhc2NyaXB0Y29yZV9jcHBmbGFncykgXAorCSQo
Q0xVVFRFUl9DRkxBR1MpIFwKIAkkKENPVkVSQUdFX0NGTEFHUykgXAogCSQoR0VPQ0xVRV9DRkxB
R1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCkBAIC0xNjIsNiArMTYzLDcgQEAgbGlid2Via2l0Mmd0
a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJT
SU9OQF9sYV9MSUIKIAlsaWJqYXZhc2NyaXB0Y29yZWd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9W
RVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQC5sYSBcCiAJbGliV2ViQ29yZUd0
ay5sYSBcCiAJJChDQUlST19MSUJTKSBcCisJJChDTFVUVEVSX0xJQlMpIFwKIAkkKENPVkVSQUdF
X0xERkxBR1MpIFwKIAkkKEZBUlNUUkVBTV9MSUJTKSBcCiAJJChHQUlMX0xJQlMpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165404</attachid>
            <date>2012-09-24 09:56:22 -0700</date>
            <delta_ts>2012-09-24 10:44:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73767-20120925015543.patch</filename>
            <type>text/plain</type>
            <size>15981</size>
            <attacher name="Joone Hur">joone</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGUxNjdiYmMwNDYxYjExYzhiM2NlMWUx
MTgxMTE0ZDc0MTIyNGQ3NGMuLjI2OTAzYTZiOWJlMTBmY2M4N2YxZmQ2OWQ0MzY2ZWI3ZmU1Zjk1
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMjQgIEpvb25lIEh1ciAgPGpvb25lLmh1
ckBpbnRlbC5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEdyYXBoaWNzTGF5ZXIgdXNp
bmcgQ2x1dHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzM3NjcKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCisKKyAgICAg
ICAgQWRkIENsdXR0ZXJBY3RvciBhbmQgR3JhcGhpY3NMYXllckFjdG9yIHRvIEdUeXBlZGVmcy5o
LgorCisgICAgICAgICogd3RmL2dvYmplY3QvR1R5cGVkZWZzLmg6CisKIDIwMTItMDktMjIgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgZXhwbGljaXQgY29udmVy
c2lvbiBvcGVyYXRvciB0byBSZXRhaW5QdHIgZm9yIGVhc2llciB1c2UgaW4gQysrMTEgZW52aXJv
bm1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggNTAxZDVhZDY2Zjk5ODE4YmMyZGE5N2RlMzYzZDYxOTE0OTQ2
NmRhYy4uODAyMmI2NTU3NDc1ZjY1NWZkY2EzYTM2MGRjODMyZTAyNzQ1Yjg1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA5LTI0ICBKb29uZSBIdXIgIDxqb29uZS5odXJAaW50
ZWwuY29tPiwgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9y
YS5jb20+CisKKyAgICAgICAgW0dUS10gSW1wbGVtZW50IEdyYXBoaWNzTGF5ZXIgdXNpbmcgQ2x1
dHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM3
NjcKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9iaW5zb24uCisgICAgICAgIAorICAg
ICAgICBUaGlzIHBhdGNoIGlzIG5lZWRlZCBmb3IgZW5hYmxpbmcgQWNjZWxlcmF0ZWQgQ29tcG9z
aXRpbmcoQ2x1dHRlciBiYWNrZW5kKSAKKyAgICAgICAgd2l0aCB0aGUgcGF0Y2hlcyBzdWJtaXR0
ZWQgaW4gYnVnIDkyMDQ1IGFuZCA5MTk0MC4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gVGhpcyB3aWxsIGJlIGNvdmVyZWQgYnkgcGl4ZWwgdGVzdHMgZm9yIFF0L0dUSysgYWNjZWxl
cmF0ZWQKKyAgICAgICAgY29tcG9zaXRpbmcgYW5kIDNEIHRyYW5zZm9ybXMuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0
ckNsdXR0ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0
ckNsdXR0ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVy
L1BsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChQbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudDo6flBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1RyYW5zZm9ybWF0aW9uTWF0
cml4Q2x1dHRlci5jcHA6IEFkZGVkIHRvIGNvbnZlcnQgQ29nbE1hdHJpeCB0byAKKyAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4OjpvcGVyYXRvciBDb2dsTWF0cml4KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6Cisg
ICAgICAgIChUcmFuc2Zvcm1hdGlvbk1hdHJpeCk6CisKIDIwMTItMDktMjMgIE1pa2UgV2VzdCAg
PG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBNZWFzdXJlIHRoZSB1c2FnZSBvZiB0aGUg
IlgtV2ViS2l0LUNTUCIgaGVhZGVyIGluIHRoZSBob3BlcyBvZiBkcm9wcGluZyB0aGUgcHJlZml4
IGNvbXBsZXRlbHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYzFhZmE1M2VkYzliNTBiNTIxZjlkMzBk
YTI3YWZhYmY4OTQ0YTYyZi4uMjE5ZjUxYmIzYjY4ZmVjM2VlMWM0MDBiNjRjNTQzMDcwMmEyMDg5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTI0ICBKb29uZSBI
dXIgIDxqb29uZS5odXJAaW50ZWwuY29tPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBHcmFw
aGljc0xheWVyIHVzaW5nIENsdXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmlu
c29uLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgbmVlZGVkIGZvciBlbmFibGluZyBBY2NlbGVy
YXRlZCBDb21wb3NpdGluZyhDbHV0dGVyIGJhY2tlbmQpCisgICAgICAgIHdpdGggdGhlIHBhdGNo
ZXMgc3VibWl0dGVkIGluIGJ1ZyA5MjA0NSBhbmQgOTE5NDAuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dENsdXR0ZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2Nyb2xsTm9uQ29tcG9z
aXRlZENvbnRlbnRzKTogQWRkZWQgdG8gZml4IGJ1bGlkIGJyZWFrLgorICAgICAgICAoV2ViS2l0
KToKKwogMjAxMi0wOS0xOSAgRGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICA8ZGFuaWxvLmNl
c2FyQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBbZ3RrXSBhZGQgZW5hYmxlLW1lZGlhLXN0
cmVhbSB0byB3ZWJzZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDM4OTQxMjMyM2NkYThlNjkzNDdjODlm
ZTJmMjdhZjQxZWFlMDYyYjAuLjdkNTA3NmFmYWU1NmIwMzc0OWZiNTkwOWYxNTY5ZTdjMmIwZjdi
N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0yNCAgSm9vbmUgSHVyICA8
am9vbmUuaHVyQGludGVsLmNvbT4sIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9y
b25oYUBjb2xsYWJvcmEuY29tPgorCisgICAgICAgIFtHVEtdIEltcGxlbWVudCBHcmFwaGljc0xh
eWVyIHVzaW5nIENsdXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczNzY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgor
CisgICAgICAgIEZpeGVkIGxpbmsgZXJyb3JzIGJ5IGFkZGluZyBDbHV0dGVyIGxpYnJhcnkgYW5k
IGhlYWRlciB0byBXZWJLaXQyIGJ1aWxkLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisK
IDIwMTItMDktMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbnN0
YWxsIFdlYlByb2Nlc3MgWFBDIHNlcnZpY2VzIGludG8gdGhlIHJpZ2h0IHBsYWNlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaCBiL1NvdXJjZS9XVEYvd3Rm
L2dvYmplY3QvR1R5cGVkZWZzLmgKaW5kZXggMmVmYzA3MjMzZTE4MDI4MDU3NWZlZGZlZjIxNGY2
MGEyNGI5OTg4Yi4uNzc4NThkNWU5Y2Q4ODA2ZjY5NDUwMzA1MGRkYzM5OWZmNTI3ZjFhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HVHlwZWRlZnMuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9nb2JqZWN0L0dUeXBlZGVmcy5oCkBAIC03MSw2ICs3MSwxMSBAQCB0eXBlZGVmIHN0
cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CiB0eXBlZGVmIHN0cnVjdCBfY2Fp
cm9fcmVjdGFuZ2xlX2ludCBjYWlyb19yZWN0YW5nbGVfaW50X3Q7CiAjZW5kaWYKIAorI2lmIFVT
RShDTFVUVEVSKQordHlwZWRlZiBzdHJ1Y3QgX0NsdXR0ZXJBY3RvciBDbHV0dGVyQWN0b3I7Cit0
eXBlZGVmIHN0cnVjdCBfR3JhcGhpY3NMYXllckFjdG9yIEdyYXBoaWNzTGF5ZXJBY3RvcjsKKyNl
bmRpZgorCiAjaWYgUExBVEZPUk0oR1RLKQogdHlwZWRlZiBzdHJ1Y3QgX0d0a0FjdGlvbiBHdGtB
Y3Rpb247CiB0eXBlZGVmIHN0cnVjdCBfR3RrQWRqdXN0bWVudCBHdGtBZGp1c3RtZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOGNhOGIyNjhlMzI2YmJmZjg3ZDcxNDU2Zjc3
NDEzYTg4NjQwNzcyNi4uODI5NzcxODM2NWM2MjU5NzI4ZWQ0NmY5YTQ3YWMxNjZiYjlhNDBhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC02MjM4LDEwICs2MjM4LDkgQEAgZW5k
aWYgICMgRU5EIEVOQUJMRV9XRUJHTAogaWYgVVNFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HCiBp
ZiBVU0VfQ0xVVFRFUgogd2ViY29yZV9zb3VyY2VzICs9IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2x1dHRlci9HUmVmUHRyQ2x1dHRlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmNwcCBcCi0JU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5oCisJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRl
ci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1RyYW5zZm9y
bWF0aW9uTWF0cml4Q2x1dHRlci5jcHAKIGVuZGlmICAjIEVORCBVU0VfQ0xVVFRFUgogCiBpZiBV
U0VfVEVYVFVSRV9NQVBQRVJfQ0FJUk8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2x1dHRlci9HUmVmUHRyQ2x1dHRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJhMzQxODZjMjYxNzZmYTQ0ZTYwMWQ4MmM0ODkyMzk1MWY0OTM5OGQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2x1dHRlci9HUmVmUHRyQ2x1dHRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBA
Ci0vKgotICogIENvcHlyaWdodCAoQykgMjAxMSBDb2xsYWJvcmEgTHRkLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCi0gKi8KLQotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR1Jl
ZlB0ckNsdXR0ZXIuaCIKLQotI2luY2x1ZGUgPGNsdXR0ZXIvY2x1dHRlci5oPgotCi1uYW1lc3Bh
Y2UgV1RGIHsKLQotdGVtcGxhdGUgPD4gR1JlZlB0cjxDbHV0dGVyQWN0b3I+IGFkb3B0R1JlZihD
bHV0dGVyQWN0b3IqIHB0cikKLXsKLSAgICBpZiAoZ19vYmplY3RfaXNfZmxvYXRpbmcocHRyKSkK
LSAgICAgICAgZ19vYmplY3RfcmVmX3NpbmsocHRyKTsKLQotICAgIHJldHVybiBHUmVmUHRyPENs
dXR0ZXJBY3Rvcj4ocHRyLCBHUmVmUHRyQWRvcHQpOwotfQotCi10ZW1wbGF0ZSA8PiBDbHV0dGVy
QWN0b3IqIHJlZkdQdHI8Q2x1dHRlckFjdG9yPihDbHV0dGVyQWN0b3IqIHB0cikKLXsKLSAgICBp
ZiAocHRyKSB7Ci0gICAgICAgIGlmIChnX29iamVjdF9pc19mbG9hdGluZyhwdHIpKQotICAgICAg
ICAgICAgZ19vYmplY3RfcmVmX3NpbmsocHRyKTsKLQotICAgICAgICBnX29iamVjdF9yZWYocHRy
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcHRyOwotfQotCi10ZW1wbGF0ZSA8PiB2b2lkIGRlcmVm
R1B0cjxDbHV0dGVyQWN0b3I+KENsdXR0ZXJBY3RvciogcHRyKQotewotICAgIGlmIChwdHIpCi0g
ICAgICAgIGdfb2JqZWN0X3VucmVmKHB0cik7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NsdXR0ZXIvR1JlZlB0ckNsdXR0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmRlYzY1NDgxYTAxOWIxYzM2N2I0MDBjYzVlM2U5OTQyYmM2ZmYxOC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jbHV0dGVyL0dSZWZQdHJDbHV0dGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCAr
MCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAxMSBDb2xsYWJvcmEgTHRkLgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaWZuZGVmIEdSZWZQdHJDbHV0dGVyX2gKLSNkZWZpbmUgR1JlZlB0ckNsdXR0ZXJfaAot
Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgotCi10eXBlZGVmIHN0cnVjdCBfQ2x1
dHRlckFjdG9yIENsdXR0ZXJBY3RvcjsKLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4g
Q2x1dHRlckFjdG9yKiByZWZHUHRyPENsdXR0ZXJBY3Rvcj4oQ2x1dHRlckFjdG9yKiBwdHIpOwot
dGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxDbHV0dGVyQWN0b3I+KENsdXR0ZXJBY3RvciogcHRy
KTsKLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvR3JhcGhpY3NMYXllckNsdXR0ZXIuaAppbmRleCA0MmY2
Yjc2ZjljN2QyNTRmMTBmNzBlNjI5MjI4YzNlZDNkYjJhZDVmLi4zZTE0MmU0ODdkZTUwZWNmOGZl
ZDE0MWQ0NTY2NTQ2NGQ0NzQzOTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jbHV0dGVyL0dyYXBoaWNzTGF5ZXJDbHV0dGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9HcmFwaGljc0xheWVyQ2x1dHRlci5oCkBA
IC0yOSwxMCArMjksMTAgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAot
I2luY2x1ZGUgIkdSZWZQdHJDbHV0dGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgog
CiAjaW5jbHVkZSA8Y2x1dHRlci9jbHV0dGVyLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NsdXR0ZXIvUGxhdGZvcm1DbHV0
dGVyTGF5ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGI1NmFiNmExOGI5ZTMxNjNiNGRiYzg1Njcx
MTkwMjgyODhiNmM1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2x1dHRlci9QbGF0Zm9ybUNsdXR0ZXJMYXllckNsaWVudC5oCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIENvbGxhYm9yYSBMdGQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBsYXRm
b3JtQ2x1dHRlckxheWVyQ2xpZW50X2gKKyNkZWZpbmUgUGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGll
bnRfaAorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1DbHV0dGVyTGF5ZXJQYWludENvbnRlbnRzKEdyYXBo
aWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGluQ2xpcCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybUNsdXR0ZXJMYXllckFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHN0YXJ0VGltZSkg
PSAwOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+UGxhdGZvcm1DbHV0dGVyTGF5ZXJDbGll
bnQoKSB7IH0KK307CisKK30KKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKworI2VuZGlmIC8vIFBsYXRmb3JtQ2x1dHRlckxheWVyQ2xpZW50X2gKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1dHRlci9UcmFuc2Zvcm1hdGlv
bk1hdHJpeENsdXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2x1
dHRlci9UcmFuc2Zvcm1hdGlvbk1hdHJpeENsdXR0ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1YzNmMmFl
NDRjMTIyYmQwOGU3N2ZiMjBkNTAzNDMwNjNmZTQxYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jbHV0dGVyL1RyYW5zZm9ybWF0aW9uTWF0cml4
Q2x1dHRlci5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBD
b2xsYWJvcmEgTHRkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBv
ZgorICogIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUKKyAqICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKworI2lu
Y2x1ZGUgPGNvZ2wvY29nbC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RyYW5zZm9ybWF0
aW9uTWF0cml4OjpvcGVyYXRvciBDb2dsTWF0cml4KCkgY29uc3QKK3sKKyAgICBDb2dsTWF0cml4
IG1hdHJpeDsKKworICAgIG1hdHJpeC54eCA9IG0xMSgpOworICAgIG1hdHJpeC54eSA9IG0yMSgp
OworICAgIG1hdHJpeC54eiA9IG0zMSgpOworICAgIG1hdHJpeC54dyA9IG00MSgpOworCisgICAg
bWF0cml4Lnl4ID0gbTEyKCk7CisgICAgbWF0cml4Lnl5ID0gbTIyKCk7CisgICAgbWF0cml4Lnl6
ID0gbTMyKCk7CisgICAgbWF0cml4Lnl3ID0gbTQyKCk7CisKKyAgICBtYXRyaXguenggPSBtMTMo
KTsKKyAgICBtYXRyaXguenkgPSBtMjMoKTsKKyAgICBtYXRyaXguenogPSBtMzMoKTsKKyAgICBt
YXRyaXguencgPSBtNDMoKTsKKworICAgIG1hdHJpeC53eCA9IG0xNCgpOworICAgIG1hdHJpeC53
eSA9IG0yNCgpOworICAgIG1hdHJpeC53eiA9IG0zNCgpOworICAgIG1hdHJpeC53dyA9IG00NCgp
OworCisgICAgcmV0dXJuIG1hdHJpeDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oCmluZGV4IGNkMWRiNWUwMzBiMzY2NTIzMjBiYzg1ZDc2YjY3ZDEwNDJjODcwYWMu
LjllZGE3NDYwOGZjYjJmYjA0M2Y0NDZjMWM5Njc2M2U4MzFkZDJiN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTM0LDYgKzM0LDkgQEAKICNpZiBVU0UoQ0EpCiB0
eXBlZGVmIHN0cnVjdCBDQVRyYW5zZm9ybTNEIENBVHJhbnNmb3JtM0Q7CiAjZW5kaWYKKyNpZiBV
U0UoQ0xVVFRFUikKK3R5cGVkZWYgc3RydWN0IF9Db2dsTWF0cml4IENvZ2xNYXRyaXg7CisjZW5k
aWYKICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0FmZmluZVRyYW5zZm9ybSBDR0FmZmlu
ZVRyYW5zZm9ybTsKICNlbGlmIFVTRShDQUlSTykKQEAgLTMyNCw2ICszMjcsOSBAQCBwdWJsaWM6
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgQ0FUcmFuc2Zvcm0zRCYpOwogICAgIG9w
ZXJhdG9yIENBVHJhbnNmb3JtM0QoKSBjb25zdDsKICNlbmRpZgorI2lmIFVTRShDTFVUVEVSKQor
ICAgIG9wZXJhdG9yIENvZ2xNYXRyaXgoKSBjb25zdDsKKyNlbmRpZgogI2lmIFVTRShDRykKICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBDR0FmZmluZVRyYW5zZm9ybSYpOwogICAgIG9w
ZXJhdG9yIENHQWZmaW5lVHJhbnNmb3JtKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dENsdXR0
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0NvbnRleHRDbHV0dGVyLmNwcAppbmRleCA0NTExMTdhODJkYWNjNTM1MTllYzkzN2Rm
OTMwNzkxMzQ5MzkxNTVhLi5jNTIzYmI1NDU5MDg2NjM0YWQyMzFkYjU5N2E0N2IwN2E3ZWFkNDhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQ29udGV4dENsdXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Q2x1dHRlci5jcHAKQEAg
LTExMiw2ICsxMTIsMTEgQEAgdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6cmVz
aXplUm9vdExheWVyKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgZ3RrX3dpZGdldF9zaXplX2Fs
bG9jYXRlKEdUS19XSURHRVQobV9yb290TGF5ZXJFbWJlZGRlciksICZhbGxvY2F0aW9uKTsKIH0K
IAordm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6c2Nyb2xsTm9uQ29tcG9zaXRl
ZENvbnRlbnRzKGNvbnN0IEludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IEludFNpemUmIHNjcm9s
bE9mZnNldCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4g
Zmx1c2hBbmRSZW5kZXJMYXllcnNDYWxsYmFjayhBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4
dCogY29udGV4dCkKIHsKICAgICBjb250ZXh0LT5mbHVzaEFuZFJlbmRlckxheWVycygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQppbmRleCBiYTBhYzY5NTUzMDE2ODU0MjMxNzNlYWM4OTk3ZGNkZjhjNWQz
ZmE5Li41MjAyMDg2MmZlNjY5NDFmZTgyZmZlNWQzODEwNDZhODI0YmE1MWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQpAQCAtMTAxLDYgKzEwMSw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19B
UElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJ
JCh3ZWJjb3JlX2NwcGZsYWdzKSBcCiAJJCh3ZWJjb3JlZ3RrX2NwcGZsYWdzKSBcCiAJJChqYXZh
c2NyaXB0Y29yZV9jcHBmbGFncykgXAorCSQoQ0xVVFRFUl9DRkxBR1MpIFwKIAkkKENPVkVSQUdF
X0NGTEFHUykgXAogCSQoR0VPQ0xVRV9DRkxBR1MpIFwKIAkkKEdMSUJfQ0ZMQUdTKSBcCkBAIC0x
NjIsNiArMTYzLDcgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9O
QF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9MSUIKIAlsaWJqYXZhc2NyaXB0Y29y
ZWd0ay1AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQC5AV0VCS0lUR1RLX0FQSV9NSU5PUl9W
RVJTSU9OQC5sYSBcCiAJbGliV2ViQ29yZUd0ay5sYSBcCiAJJChDQUlST19MSUJTKSBcCisJJChD
TFVUVEVSX0xJQlMpIFwKIAkkKENPVkVSQUdFX0xERkxBR1MpIFwKIAkkKEZBUlNUUkVBTV9MSUJT
KSBcCiAJJChHQUlMX0xJQlMpIFwK
</data>

          </attachment>
      

    </bug>

</bugzilla>