(file) Return to WMIMapper_indication_specification.doc CVS log (file) (dir) Up to [Pegasus] / pegasus / src / WMIMapper / Doc

File: [Pegasus] / pegasus / src / WMIMapper / Doc / WMIMapper_indication_specification.doc (download) / (as text)
Revision: 1.1, Wed Jan 28 15:35:57 2009 UTC (15 years, 5 months ago) by a.rachapudi
Branch: MAIN
CVS Tags: preBug9676, postBug9676, TASK_PEP317_1JUNE_2013, TASK-TASK_PEP362_RestfulService_branch-root, TASK-TASK_PEP362_RestfulService_branch-merged_out_from_trunk, TASK-TASK_PEP362_RestfulService_branch-merged_in_to_trunk, TASK-TASK_PEP362_RestfulService_branch-merged_in_from_branch, TASK-TASK_PEP362_RestfulService_branch-branch, TASK-PEP362_RestfulService-root, TASK-PEP362_RestfulService-merged_out_to_branch, TASK-PEP362_RestfulService-merged_out_from_trunk, TASK-PEP362_RestfulService-merged_in_to_trunk, TASK-PEP362_RestfulService-merged_in_from_branch, TASK-PEP362_RestfulService-branch, TASK-PEP348_SCMO-root, TASK-PEP348_SCMO-merged_out_to_branch, TASK-PEP348_SCMO-merged_out_from_trunk, TASK-PEP348_SCMO-merged_in_to_trunk, TASK-PEP348_SCMO-merged_in_from_branch, TASK-PEP348_SCMO-branch, TASK-PEP317_pullop-root, TASK-PEP317_pullop-merged_out_to_branch, TASK-PEP317_pullop-merged_out_from_trunk, TASK-PEP317_pullop-merged_in_to_trunk, TASK-PEP317_pullop-merged_in_from_branch, TASK-PEP317_pullop-branch, RELEASE_2_14_1, RELEASE_2_14_0-RC2, RELEASE_2_14_0-RC1, RELEASE_2_14_0, RELEASE_2_14-root, RELEASE_2_14-branch, RELEASE_2_13_0-RC2, RELEASE_2_13_0-RC1, RELEASE_2_13_0-FC, RELEASE_2_13_0, RELEASE_2_13-root, RELEASE_2_13-branch, RELEASE_2_12_1-RC1, RELEASE_2_12_1, RELEASE_2_12_0-RC1, RELEASE_2_12_0-FC, RELEASE_2_12_0, RELEASE_2_12-root, RELEASE_2_12-branch, RELEASE_2_11_2-RC1, RELEASE_2_11_2, RELEASE_2_11_1-RC1, RELEASE_2_11_1, RELEASE_2_11_0-RC1, RELEASE_2_11_0-FC, RELEASE_2_11_0, RELEASE_2_11-root, RELEASE_2_11-branch, RELEASE_2_10_1-RC1, RELEASE_2_10_1, RELEASE_2_10_0-RC2, RELEASE_2_10_0-RC1, RELEASE_2_10_0, RELEASE_2_10-root, RELEASE_2_10-branch, PREAUG25UPDATE, POSTAUG25UPDATE, HEAD, CIMRS_WORK_20130824, BeforeUpdateToHeadOct82011
BUG#: 8183
TITLE: WMIMapper Indication Support
DESCRIPTION: Changes done for WMIMapper Indication Support

ࡱ>	`b]^_[	1bjbj	.fΐΐT
[[1112228K2342S5=7=7=7=7x8ĽH





$6 |11x1[[=7=7hF0|[=71=7%+=7PЍ|2|?(v<g  P 1/11 	!:	@ TITLE  \* MERGEFORMAT WMIMapper Indication

The main purpose of this document is to describe the WBEM Indications in WMI Mapper

The WMI Mapper Indications support registration for indication consumers (as WBEM indications) in addition to all other WBEM CIM-XML operations, converting received WMI indications to WBEM counterpart, as well as notifying the WBEM registered consumers when events occur as WBEM CIM-XML

WMI Indication Schema
The following picture shows the classes used in the WMI Indication Schema: 






















Figure  SEQ Figure \* ARABIC 1:  WMI Indication schema overview

The class description, main attributes and their functions are showed below:

__EventConsumer
This class represents an Event Consumer to WMI. It is abstract and it must be derived. This class contains the follow attributes:

MachineName  this property is very important to the WMI Mapper Indications architecture. This property will contain the host name where the WMI event must be delivered. If this host name isnt the localhost name the WMI service will instantiate the Event Consumer on the remote host via DCOM (the DCOM must be configured in the both machines). 

WbemEventConsumer
This class will inherit from __EventConsumer class and it defines how and where the indications should be delivered. The WMI Mapper client must install it on the managed system. To do this the client must create the WbemEventConsumer class through WMI calls (see section  REF _Ref80764671 \r \h  \* MERGEFORMAT 0 for more details about steps on how to create WbemEventConsumer class). The WbemEventConsumer class contains the follow attributes:

Name  this property must be a string key used to identify the instance.
Destination  this property must be a string containing the protocol, host and port to delivery the indication, e.g. https://clientserver:5001.

__EventFilter
This class defines what are the events that need to be handled. This class contains the follow attributes:

Name  this property must be a string key used to identify the instance.
Query  this property defines the events to be handled, e.g. select * from Win32_VolumeChangeEvent
QueryLanguage  this property must always be WQL string.
EventNamespace  this property is the Namespace, which contains the WMI event class. It is used for cross-namespace subscriptions. The cross-namespace subscriptions are supported in the Windows XP or later. Wherefore, this property was supported in the Windows XP or later.

__FilterToConsumerBinding
This class associates the Consumer and Filter. The subscription exists only when an instance of this class exists. The clients need delete the __FilterToConsumerBinding instance to cancel a subscription.

Filter  The object path to the filter that must be used.
Consumer  The object path to the consumer that must be used.





WMIMapper Indication Consumer

Architecture overview

 Architecture using a Permanent Event Consumer with WMI Indication Instances Provider

No additional component to be installed on the Managed System.
Could perform a permanent subscription to WMI. 
-     Runs as an Service in the Proxy system

Using the proxy system to communicate with the managed node and using WMI classes (__EventFilter, WBemEventConsumer and __FilterToConsumerBinding) instead of CIM Classes (CIM_IndicationFilter, CIM_IndicationHandlerCIMXML and CIM_IndicationSubscription) the WMIMapper could be used to perform the indication subscriptions.  Logically, the clients would use CIM-XML over http to create the WMI subscription class instances.










Architecture schema:


















Where: 

Client System: is a host, which contains one or more modules that make the subscription using CIM-XML over http. This system also contains one or more modules, which listen TCP ports waiting for CIM-XML indications.

WMI Mapper Proxy System: is a host, which contains the WMI Mapper installed. The clients to get WMI information from the managed systems use this host, which contains only the WMI.

Managed Systems: are hosts, where the subscriptions are done. The WMI events generated in these systems are delivered to the WMI Mapper.

WBEM Event Subscriber: is the module, which sends the CIM-XML subscription to the WMI Mapper.

WBEM Event Listener: is the module, which receives the CIM-XML indications from the WMI Mapper.

WMI Mapper Instance Provider: is an existent WMI Mapper module. This module wouldnt have changes, since the client is the responsible for registering remote Permanent Event Consumer on the managed system. This module gets the CIM-XML subscription operations and converts it to their WMI counterpart.

WBEM Mapper Consumer Provider: is a WMI event consumer provider, which receives the WMI Indications. These WMI indications are converted to WBEM format and delivered to the correct client by this Consumer. This consumer will be installed only in the WMI Mapper Proxy System and it will be called by the managed systems via DCOM.

WMI: is the Windows Management Instrumentation service. This service is the Microsoft WBEM implementation.

WMI Event Provider: is a provider, which generate the WMI events and gives it to WMI. Then, the WMI will use the __FilterToConsumerBinding instances to deliver these events correctly.


CIM-XML Subscription: The CIM-XML subscription is the process, which a client says to WMI Mapper what are the events that needs to be received and how/where it must be delivered. In order to submit their subscription the clients must first register the WBEM Event Consumer Provider in the managed system (see section  REF _Ref80764671 \r \h  \* MERGEFORMAT 0 for more details) and then create three WMI instances. The first instance is a __EventFilter instance, which will indicate the events to be received. The second instance is a WbemEventConsumer instance, which will say where/how the indication must be delivered. Finally, the third instance is a __FilterToConsumerBinding instance, which will just associate the two instances, which was previously created. The CIM-XML subscription will be made using the CreateInstance operation defined in the CIM-XML over HTTP protocol. The clients will send CreateInstance operation requests to the WMI Mapper, which will convert and forward these requests to WMI on the managed system. The clients must use DeleteInstance operation to cancel the subscription. An example of CIM-XML CreateClass, CreateInstance and DeleteInstance operations are showed below:

CIM-XML Delivery: The CIM-XML delivery is the process, which the WMI Mapper Proxy System deliveries the indication to the correct listener. The CIM-XML delivery is implemented using the ExportIndication operation defined in the CIM-XML over HTTP protocol. The WBEM Event Consumer Provider will send an ExportIndication operation request to the client, which will get the data from indication instance and will send a response to the WBEM Event Consumer Provider. A CIM-XML ExportIndication operation sample is showed below:


WMI Subscription: The WMI subscription is the process, which the WMI Mapper forwards the clients CIM-XML subscription to the managed system as WMI subscription. The subscription will be made creating three WMI instances. The first instance is a __EventFilter instance, which will indicate the events to be received. The second instance is a WbemEventConsumer instance, which will say where/how the indication must be delivered. Finally, the third instance is a __FilterToConsumerBinding instance, which will just associate the two instances, which were previously created. The WMI subscription will be made using a COM object from WMI API. The WMI Mapper will create these COM objects as well as make the WMI subscription on the managed system. The WMI Mapper will perform a WMI subscription on the managed system every time it receives a CIM-XML subscription request from the client.

WMI Delivery: The WMI delivery is the process, which the managed system deliveries the indication to WMI Mapper. The WMI delivery will be made using a COM interfaces defined in the WMI API. Since the client had already compiled the MOF file before CIM-XML subscription the WMI is able to distinguish the consumer  responsible by the WbemEventConsumer class. Moreover, the WbemEventConsumer.MachineName attribute will indicate where WBEM Event Consumer Provider is located. Finally, the WMI will instantiate the WBEM EventConsumer Provider when an indication is generated. Furthermore, the WMI will give the indication instance to the WBEM Event Consumer Provider.  Then, the WBEM Event Consumer Provider will create a CIM-XML ExportIndication request and sends to the client according to the WbemEventConsumer.Destination attribute content.

The WMIServer is used to register the remote Permanent Event Consumer on the target node when the class for operations is the WbemEventConsumer class. 

The WBEM Mapper Consumer Provider runs in the proxy as an service, and receive the WMI Indications. These WMI indications are converted to WBEM format and then delivered to the correct client by this Consumer.

Handling WMI Delivery Failures :-

From the managed host to the proxy, the handling of delivery failures is made byDCOM. In  case to WMI not able to communicate with proxy, the DCOM servicewrites error messages in the windows event viewer log. From the proxy to the listener, the communication is made by http/https using the ExportClient class from OP. However if this communication fails the failure will be reported in the wbemcons.exe trace file (if it's enabled). The delivery fail will not harm the wbemconsumer execution to other indication deliveries.
WMI Mapper Indications  Walkthrough


WBEM Event Consumer Provider Registration on Managed System
The WbemEventConsumer WMI class is created in the managed system. This should be handled by client system using WMI Mapper calls, as following:


The client sends a CreateInstance operation to the WMI Mapper to create a __Win32Provider instance, which will indicate the physical event consumer provider (WbemConsumer.exe):









Figure  SEQ Figure \* ARABIC 2:  Subscriber sending request to create the provider instance



The WMI Mapper interprets this request and makes the WMI request to the managed system:









Figure  SEQ Figure \* ARABIC 3:  WMI Mapper forwarding request to create the provider instance
The client sends a CreateInstance operation to WMI Mapper Proxy System to create a __EventConsumerProviderRegistration instance, which will register the WBEM Mapper Consumer Provider in the managed system.









Figure  SEQ Figure \* ARABIC 4:  Subscriber sending request to create the provider registration instance

The WMI Mapper interprets this request and makes the WMI request to the managed system:








       Figure  SEQ Figure \* ARABIC 5:  WMI Mapper forwarding request to create the provider registration instance

The client sends a CreateClass operation to WMI Mapper Proxy system to create the logical consumer class.









Figure  SEQ Figure \* ARABIC 6:  Subscriber sending request to create the logical consumer class

The WMI Mapper interprets this request and makes the WMI request to the managed system:






                  Figure  SEQ Figure \* ARABIC 7:  WMI Mapper forwarding request to create the logical consumer class
Performing a subscription
The WBEM client sends a CreateInstance operation to WMI Mapper to create a __EventFilter instance, which will indicate what are the events to be monitored.








                 Figure  SEQ Figure \* ARABIC 8:  Subscriber sending request to create the event filter

The WMI Mapper interprets this request and makes the WMI request to the managed system.









Figure  SEQ Figure \* ARABIC 9:  WMI Mapper forwarding request to create the event filter

The WBEM client sends another CreateInstance operation to WMI Mapper to create a WbemEventConsumer instance, which will indicate how/where the WMI events must be delivered.








Figure  SEQ Figure \* ARABIC 10:  Subscriber sending request to create the event handler

The WMI Mapper interprets this request and makes the WMI request to the managed system.







Figure  SEQ Figure \* ARABIC 11:  WMI Mapper forwarding request to create the event handler
The WBEM client sends the last CreateInstance operation to WMI Mapper. This CreateInstance operation is to create a __FilterToConsumerBinding instance, which will be the subscription itself.









Figure  SEQ Figure \* ARABIC 12:  Subscriber sending request to create the subscription

The WMI Mapper interprets this request and makes the WMI request to the managed system.










Figure  SEQ Figure \* ARABIC 13:  WMI Mapper forwarding request to create the subscription

Canceling a Subscription 
The client needs just to delete the __FilterToConsumerBinding instance to cancel the subscription and stop to receive events. However, the client needs also delete __EventFilter and WbemEventConsumer instances to clean up completely. The clients must have very caution to delete __EventFilter and WbemEventConsumer instances, because another __FilterToConsumerBinding instances may exist and they could be using those instances.

The WBEM client sends the last DeleteInstance operation to WMI Mapper. This DeleteInstance operation is to delete the __FilterToConsumerBinding instance.







Figure  SEQ Figure \* ARABIC 14:  Subscriber sending request to delete the subscription

The WMI Mapper interprets this request and makes the WMI request to the managed system.



Figure  SEQ Figure \* ARABIC 15:  WMI Mapper forwarding request to delete the subscription

The WBEM client sends another DeleteInstance operation to WMI Mapper. This DeleteInstance operation is to delete the WbemEventConsumer instance









Figure  SEQ Figure \* ARABIC 16:  Subscriber sending request to delete the event handler

The WMI Mapper interprets this request and makes the WMI request to the managed system.









Figure  SEQ Figure \* ARABIC 17:  WMI Mapper forwarding request to delete the event handler

The WBEM client sends a DeleteInstance operation to WMI Mapper. This DeleteInstance operation is to delete the __EventFilter instance.








Figure  SEQ Figure \* ARABIC 18:  Subscriber sending request to delete the event filter


The WMI Mapper interprets this request and makes the WMI request to the managed system.






                                  Figure  SEQ Figure \* ARABIC 19:  WMI Mapper forwarding request to delete the event filter
Delivering a indication to the correct listener (client)

The WMI Event Provider will generate the indication instance and give it to the WMI.






Figure  SEQ Figure \* ARABIC 20:  WMI Event Provider giving indication instance to the WMI

The WMI will look for __FilterToConsumerBinding instances, which the __EventFilter instance matches with the indication instance generated. So, for each found __FilterToConsumerBinding instance the WMI will get its WbemEventConsumer instances. Then, for each found WbemEventConsumer instance the WMI will call the WBEM Event Consumer Provider via DCOM giving the Indication and the WbemEventConsumer instances as parameters.









Figure  SEQ Figure \* ARABIC 21:  WMI delivering the indication to WBEM Event Consumer Provider
For each call the consumer will mount an ExportIndication request using the Indication instance. The WBEM Event Consumer will add a qualifier called SourceHost to the Indication instance. This qualifier will indicate to the client what is the managed system, which generated the Indication. After that, the Consumer will connect to the client using the WbemEventConsumer.Destination information. Lastly, the consumer will send the ExportIndication request to the client.







Figure  SEQ Figure \* ARABIC 22:  WBEM Event Consumer Provider delivering the indication to client



Class Diagram
The diagram below shows classes used and the classes that will be implemented:




























Figure  SEQ Figure \* ARABIC 23:  WBEM Event Consumer Provider - Class Diagram 
IWbemEventConsumerProvider
This is a COM interface, which must be implemented by any WMI event consumer provider. This interface contains the folowing method:
FindConsumer()  this method receives the logical consumer instance and returns a COM object, which implements the IWbemUnboundObjectSink.
IWbemUnboundObjectSink
This is a COM interface, which is used by WMI to delivery the indications. It contain the following method:
IndicateToConsumer()  this method receives the logical consumer instance and an IWbemClassObject  array containing the indication instances associated with this logical consumer instance.
CEventDispatcher
This will be a COM object, which will implement the IWbemUnboundObjectSink interface. This object will contain the following methods: 
IndicateToConsumer()  this method will receive the logical consumer (WbemEventConsumer) instance  and an IWbemClassObject array containing the indication instances. Then, the indication instances will be converted from IWbemClassObject to CIMInstance. This CIMInstance will contain all non-system properties of the IWbemClassObject. Moreover, an additional qualifier (SourceHost) will be added to this CIMInstance. This qualifier will identify the machine, which generated the indication. After that, the indication will be sent using the CIMExportClient and SSLContext (if it is necessary).
CIMobjectfromWMIObject()  This method will convert a IWbemClassObject to a CIMInstance adding a qualifier called SourceHost. This qualifier will contain the host name where the indication was originated.
CEventConsumer
This will be a COM object, which will implement the IWbemEventConsumerProvider interface. This object will contain the following method:
FindConsumer()  this method will receive the logical consumer (WbemEventConsumer) instance and will also create a new CEventDispatcher instance, which will be returned as IWbemUnboundObjectSink pointer.
CIMInstance
This is a Pegasus class, which is contained on the pegcommon.dll library. This class represents a CIM instance and it will be used by CEventDispatcher to give the indication to the CIMExportClient. This class contains at least one method, which is relevate to the the conversion (IWbemClassObject to CIMInstance):
addProperty()  this method add a CIMProperty to the CIMInstance object. The CIMProperty object will be created using the WMI property data.
Monitor
This is a Pegasus class, which is contained on the pegcommon.dll library. This class is used by HTTPConnector to monitor the HTTP messages. The CEventDispatcher will create an instance of this class and will give it to the HTTPConnector and CIMExportClient constructors. This class have a important method used by the CIMExportClient:
run()  this method receives a timeout and it terminates only when it receives a meesage or when the timeout occurs.
HTTPConnector
This is a Pegasus class, which is contained on the pegcommon.dll library. This class is used by CIMExportClient (in addition to the SSLContext) to establish a HTTP or HTTPS connection with the clients. This connection will be used to delivery the indications. The CEventDispatcher will create this class and will give it to the CIMExportClient constructor. This class has the following methods used by the CIMExportClient:
connect  this method is used to make a HTTP or HTTPS connection with the machine.
disconnect  this method is used to disconnect from the client.
SSLContext
This is a Pegasus class, which is contained on the pegcommon.dll library. This class stores SSL certificates data. This class will be created by the CEventDispatcher when the connection with client must be done using HTTPS. This class has no methods. The constructor receives the path to the certificate file as parameter.
CIMExportClient
This is a Pegasus class, which is contained on the pegexportclient.dll library. This class will be used by the CEventDispatcher to delivery the indications to correct client. This class has the following relevant methods:
connect  This method is used to make a HTTP or HTTPS connection with the machine, which will receive the indications. It receives the host name and port as mandatory parameters. If the connection must be done using HTTPS, then an SSLContext object, which will be used to perform the HTTPS connection, must be used. This method sets the HTTP messages decoder to the connection, which is a CIMExportResponseDecoder object. Moreover, this method sets the encoder, which is a CIMExportRequestEncoder. These objects (encoder and decoder are created internally).
disconnect  This method is used to disconnect from clients when indications were already sent.
exportIndication  This methods sends the indication to the client using the HTTPConnection object, which was created by the connect method. This method receives two parameters. The first is the Destination URL and the second is the CIMInstance object, which is the Indication instance.


Component Data Flow Scenarios/Examples
This section will show the sequence diagram of the WBEM Event Consumer Provider. It will be called when an indication must be delivered to a WbemEventConsumer instance. In this case, the WMI will create a new instance of the CEventConsumer using DCOM. Then, WMI will call the FindConsumer method. The sequence diagram starts at this point. After that, the WMI gets the CEventDispatcher (as IWbemUnboundObjectSink pointer).










































































Figure  SEQ Figure \* ARABIC 24:  WBEM Event Consumer Provider  Sequence Diagram












The complete schema presenting the subscription process is presented below.


      Below is presented an example of indication subscription flow using XML 
      files:

      2.1. XML files Creation
      -------------------------

      <!-- createclass_consumer.xml - Creates the consumer class in repository -->
      <?xml version="1.0" encoding="utf-8"?>
      <CIM CIMVERSION="2.0" DTDVERSION="2.0">
         <MESSAGE ID="87872" PROTOCOLVERSION="1.0">
            <SIMPLEREQ>
               <IMETHODCALL NAME="CreateClass">
                  <LOCALNAMESPACEPATH>
		<!-- HERE GOES YOUR MANAGED SYSTEM HOSTNAME -->
      		<NAMESPACE NAME="mymanagedsystem"/>
                     <NAMESPACE NAME="root"/>
                     <NAMESPACE NAME="cimv2"/>
                  </LOCALNAMESPACEPATH>
                  <IPARAMVALUE NAME="NewClass">
                     <CLASS NAME="WbemEventConsumer" SUPERCLASS="__EventConsumer">
                        <PROPERTY NAME="Name" TYPE="string">
             <QUALIFIER NAME="key" TYPE="boolean" OVERRIDABLE="false" TOINSTANCE="true">
                              <VALUE>TRUE</VALUE>
                           </QUALIFIER>
                        </PROPERTY>
                        <PROPERTY NAME="Destination" TYPE="string"/>
                     </CLASS>
                  </IPARAMVALUE>
               </IMETHODCALL>
            </SIMPLEREQ>
         </MESSAGE>
      </CIM>
      <!------------------------------------------------------------------------->

      <!-- CreateInstance_Win32Provider.xml ------------------------------------->
      <?xml version="1.0" encoding="utf-8"?>
      <CIM CIMVERSION="2.0" DTDVERSION="2.0">
         <MESSAGE ID="00001" PROTOCOLVERSION="1.0">
            <SIMPLEREQ>
               <IMETHODCALL NAME="CreateInstance">
                  <LOCALNAMESPACEPATH>
                     <NAMESPACE NAME="root"/>
                     <NAMESPACE NAME="cimv2"/>
                  </LOCALNAMESPACEPATH>
                  <IPARAMVALUE NAME="NewInstance">
                     <INSTANCE CLASSNAME="__Win32Provider">
                        <PROPERTY NAME="Name" TYPE="string">
                           <VALUE>WbemEventConsumer</VALUE>
                        </PROPERTY>
                        <PROPERTY NAME="CLSID" TYPE="string">
                           <VALUE>{44AA92D6-C186-401A-82EC-4C7B0E42ABD2}</VALUE>
                        </PROPERTY>
                     </INSTANCE>
                  </IPARAMVALUE>
               </IMETHODCALL>
            </SIMPLEREQ>
         </MESSAGE>
      </CIM>
      <!------------------------------------------------------------------------>


      <!-- CreateInstance_ProviderRegistration.xml ----------------------------->
      <?xml version="1.0" encoding="utf-8"?>
      <CIM CIMVERSION="2.0" DTDVERSION="2.0">
         <MESSAGE ID="00001" PROTOCOLVERSION="1.0">
            <SIMPLEREQ>
               <IMETHODCALL NAME="CreateInstance">
                  <LOCALNAMESPACEPATH>
		<!-- HERE GOES YOUR MANAGED SYSTEM HOSTNAME -->
      		<NAMESPACE NAME="mymanagedsystem"/>
                     <NAMESPACE NAME="root"/>
                     <NAMESPACE NAME="cimv2"/>
                  </LOCALNAMESPACEPATH>
                  <IPARAMVALUE NAME="NewInstance">
      		<INSTANCE CLASSNAME="__EventConsumerProviderRegistration">
      			<PROPERTY NAME="provider" TYPE="string">
      				<VALUE>\\.\root\cimv2:__Win32Provider.Name="WbemEventConsumer"</VALUE>
      			</PROPERTY>
      			<PROPERTY.ARRAY NAME="ConsumerClassNames" TYPE="string">
                              	<VALUE.ARRAY>
      					<VALUE>
      			 		WbemEventConsumer
      					</VALUE>
      				</VALUE.ARRAY>
      			</PROPERTY.ARRAY>
      		</INSTANCE>
                  </IPARAMVALUE>
               </IMETHODCALL>
            </SIMPLEREQ>
         </MESSAGE>
      </CIM>
      <!------------------------------------------------------------------------>

      In this example, the MANAGED SYSTEM will generate indications events
      every time the calculator utility (calc.exe) is closed. These
      indications will be delivered to the CLIENT 
      machine (https://myclientsystem:5999). The 'Destination' will inform
      the CLIENT system 'myclientsystem' and port to deliver the indications.

     
      In order to use an IP to designate the Destination machine just 
      use the IPv4 address as the hostname like this: https://172.16.50.117:5999

      When the IP is an IPv6 address, you must use the IP address between
      brackets like this: https://[fe80::218:feff:fe81:a164]:5999 

      In the CreateInstance_Consumer XML file, the 'MachineName' field holds
      the PROXY system ('myproxysystem'). You need not mention 'MachineName'
      field if your PROXY system is also the MANAGED SYSTEM. 

      
      <!-- CreateInstance_Consumer.xml ----------------------------------------->
      <?xml version="1.0" encoding="utf-8"?>
      <CIM CIMVERSION="2.0" DTDVERSION="2.0">
         <MESSAGE ID="00001" PROTOCOLVERSION="1.0">
            <SIMPLEREQ>
               <IMETHODCALL NAME="CreateInstance">
                  <LOCALNAMESPACEPATH>
                     <NAMESPACE NAME="root"/>
                     <NAMESPACE NAME="cimv2"/>
                  </LOCALNAMESPACEPATH>
                  <IPARAMVALUE NAME="NewInstance">
                     <INSTANCE CLASSNAME="WbemEventConsumer">
                        <PROPERTY NAME="Name" TYPE="string">
                           <VALUE>HandlerMapper</VALUE>
                        </PROPERTY>
			<!-- HERE GOES THE CLIENT SYSTEM -->
                        <PROPERTY NAME="Destination" TYPE="string">
                           <VALUE>https://myclientsystem:5999</VALUE>
			<!-- HERE GOES THE PROXY SYSTEM -->
                        <PROPERTY NAME="MachineNAME" TYPE="string">
                           <VALUE>myproxysystem</VALUE>
                        </PROPERTY>
                     </INSTANCE>
                  </IPARAMVALUE>
               </IMETHODCALL>
            </SIMPLEREQ>
         </MESSAGE>
      </CIM>
      <!------------------------------------------------------------------------>


      <!-- CreateInstance_Filter.xml ------------------------------------------->
      <?xml version="1.0" encoding="utf-8"?>
      <CIM CIMVERSION="2.0" DTDVERSION="2.0">
         <MESSAGE ID="00001" PROTOCOLVERSION="1.0">
            <SIMPLEREQ>
               <IMETHODCALL NAME="CreateInstance">
                  <LOCALNAMESPACEPATH>
                     <NAMESPACE NAME="root"/>
                     <NAMESPACE NAME="cimv2"/>
                  </LOCALNAMESPACEPATH>
                  <IPARAMVALUE NAME="NewInstance">
                     <INSTANCE CLASSNAME="__EventFilter">
                        <PROPERTY NAME="Name" TYPE="string">
                           <VALUE>FilterMapper_intrinsic</VALUE>
                        </PROPERTY>
                        <PROPERTY NAME="Query" TYPE="string">
                           <VALUE>SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE
                            TargetInstance ISA &quot;Win32_Process&quot; and
                            TargetInstance.Name=&quot;calc.exe&quot;</VALUE>
                        </PROPERTY>
                        <PROPERTY NAME="QueryLanguage" TYPE="string">
                           <VALUE>WQL</VALUE>
                        </PROPERTY>
                     </INSTANCE>
                  </IPARAMVALUE>
               </IMETHODCALL>
            </SIMPLEREQ>
         </MESSAGE>
      </CIM>
      <!------------------------------------------------------------------------>


      <!-- CreateInstance_Subscription.xml ------------------------------------->
      <?xml version="1.0" encoding="utf-8"?>
      <CIM CIMVERSION="2.0" DTDVERSION="2.0">
         <MESSAGE ID="00001" PROTOCOLVERSION="1.0">
            <SIMPLEREQ>
               <IMETHODCALL NAME="CreateInstance">
                  <LOCALNAMESPACEPATH>
                     <NAMESPACE NAME="root"/>
                     <NAMESPACE NAME="cimv2"/>
                  </LOCALNAMESPACEPATH>
                  <IPARAMVALUE NAME="NewInstance">
            		<INSTANCE CLASSNAME="__FilterToConsumerBinding">
            			<KEYBINDING NAME="Consumer" TYPE="string">
            				<KEYVALUE>\\.\root\cimv2:WbemEventConsumer.Name="HandlerMapper"</KEYVALUE>
            			</KEYBINDING>
            			<KEYBINDING NAME="Filter" TYPE="string">
            				<KEYVALUE>\\.\root\cimv2:__EventFilter.Name="FilterMapper_intrinsic"</KEYVALUE>
            			</KEYBINDING>
            		</INSTANCE>
                  </IPARAMVALUE>
               </IMETHODCALL>
            </SIMPLEREQ>
         </MESSAGE>
      </CIM>
      <!------------------------------------------------------------------------>















Proposed files description :

ConsumerTracer.h  
trace methods

TraceUtils.cpp 
trace methods

Converter.cpp
Methods to convert an WMI Indication Instance to an CIM WBEM Indication Instance

Converter.h  
header

DCOMRegister.cpp  
Methods used to register the Wbemconsumer  (wbemcons.exe) as a DCOM component

DCOMRegister.h  
Header

Dispatcher.cpp
Methods used to get the destination listener address and to send the indications to this destinations. The listener address is saved in the property destination of the WMI indication instance. After this instance is converted, this property is used to dispatch the CIM indications instance. The OP exportclient class is used to dispatch the indication.

Dispatcher.h  
header

EventConsumer.cpp  
Contains the methods used as a callback made by the remote managed host. In other words, the method FindConsumer is called remotely when a indications is generated in the managed host. The FindConsumer could be seen as an entry point. The remote managed system calls this method using DCOM and pass the indications data as a parameter. Then the FindConsumer must start the decoding process from WMI to CIM and pass the execution ahead. 

More info can be found at:

http://msdn.microsoft.com/en-us/library/aa391489(VS.85).aspx

EventConsumer.h  
header

EventConsumer.rgs
Contains data used by the WbemConsumer to register the class EventConsumer in the local DCOM list of components. Then the remote DCOM calls could execute the FindConsumer method calls.


EventDispatcher.cpp  
Gets the event indication, executes the conversion from WMI to CIM, and dispatches. 
It calls methods from Converter class to convert the indication instance data (convertHandlerWMI2Peg method) and after it calls method from Dispatcher class in order to try to dispatch the converted indication.

EventDispatcher.h
header

EventDispatcher.rgs
Contains data used by the WbemConsumer to register the class EventDispatcher in the local DCOM list of components.

Makefile 
Makefile

resource.h  
Microsoft Developer Studio generated include file. It contains the IDs of some of the WbemConsumer components all may be used during the build process by WbemConsumer.rc file.

service.cpp  
The Wbemconsumer runs as a service. This file contains the methods and information necessary to register/unregister and control the service.
service.h  
header

StdAfx.cpp  
source file that includes just the standard includes

StdAfx.h  
header

WbemConsumer.cpp  
The main file. It  contains the method responsible to start,maintain executing and stop the service. Basically it may call the method from service.cpp among other calls and is responsible for calling the methods that registers the consumer in the list of  DCOM components.

WbemConsumer.h  
header

WbemConsumer.rc
MS VC Resource file. 

WbemConsumer.rgs  
Contains data used by the WbemConsumer to register the class WbemConsumer in the local DCOM list of components..
WbemConsumer_i.cpp 
this file contains the actual definitions of the IIDs and CLSIDs  









 Client System

Managed System

WMI Mapper 
Proxy System


WMI DCOM Subscription

WMI

WMI Mapper Instance provider 
WMIServer.exe

WBEM Event Subscriber

CIM - XML  http  Delivery

CIM - XML http Subscription

WMI DCOM Delivery

WBEM Mapper
Consumer Provider
(Permanent Consumer)
wbemcons.exe

WBEM Event Listener

WMI Event Provider

__EventConsumer

MachineName : string

__EventFilter

Name : string
Query: string
QueryLanguage: string
EventNamespace: string

WbemEventConsumer

Name : string
Destination : string

__IndicationRelated



__FilterToConsumerBinding

Filter : __EventFilter
Consumer : __EventConsumer



WMI Mapper
Instance Provider

WMI Mapper 
Proxy System


CIM-XML CreateInstance of __Win32Provider {
Name = WbemEventConsumer
Clsid = {44AA92D6-C186-401A-82EC-4C7B0E42ABD2}
}


Client System

WBEM Event Subscriber

WMI-DCOM CreateInstance of __Win32Provider {
Name = WbemEventConsumer
Clsid = {44AA92D6-C186-401A-82EC-4C7B0E42ABD2}
}


Managed System

WMI

WMI Mapper 
Proxy System


WMI Mapper
Instance Provider

WMI Mapper
Instance Provider

WMI Mapper 
Proxy System


CIM-XML CreateInstance of __EventConsumerProviderRegistration {
Provider = __Win32Provider instance object path 
ConsumerClasssNames = {WbemEventConsumer}
}


Client System

WBEM Event Subscriber

WMI-DCOM CreateInstance of __EventConsumerProviderRegistration {
Provider = __Win32Provider instance object path 
ConsumerClasssNames = {WbemEventConsumer}
}


WMI Mapper 
Proxy System


WMI Mapper
Instance Provider

Managed System

WMI

WMI Mapper
Instance Provider

WMI Mapper 
Proxy System


CIM-XML CreateClass of  WbemEventConsumer : __EventConsumer{
[key] string Name
[write] string Destination
}


Client System

WBEM Event Subscriber

WMI Mapper
Instance Provider

WMI Mapper 
Proxy System


WMI

Managed System

WMI-DCOM CreateClass of  WbemEventConsumer : __EventConsumer{
[key] string Name
[write] string Destination
}


CIM-XML CreateInstance of __EventFilter {
[key] Name = FilterKey
QueryLanguage = WQL
Query = select * from Win32_SampleEvent
}


WMI Mapper 
Proxy System


Client System

WBEM Event Subscriber

WMI Mapper
Instance Provider

Managed System


WMI-DCOM CreateInstance of __EventFilter {
[key] Name = FilterKey
QueryLanguage = WQL
Query = select * from Win32_SampleEvent
}

WMI Mapper 
Proxy System


WMI Mapper
Instance Provider

WMI

Client System

WMI Mapper
Instance Provider

WBEM Event Subscriber

WMI Mapper 
Proxy System


CIM-XML CreateInstance of WbemEventConsumer {
[key] Name = HandlerKey
MachineName = mapperproxyhost
Destination = https://clienthost:5001
}

Managed System


WMI-DCOM CreateInstance of WbemEventConsumer {
[key] Name = HandlerKey
MachineName = mapperproxyhost
Destination = https://clienthost:5001
}

WMI Mapper 
Proxy System


WMI

WMI Mapper
Instance Provider

CIM-XML CreateInstance of __FilterToConsumerBinding {
[key] Filter = __EventFilter instance object path 
[key] Consumer =  WbemEventConsumer instance object path
}

WMI Mapper 
Proxy System


Client System

WBEM Event Subscriber

WMI Mapper
Instance Provider

Managed System


WMI-DCOM CreateInstance of __FilterToConsumerBinding {
[key] Filter = __EventFilter instance object path 
[key] Consumer =  WbemEventConsumer instance object path
}

WMI Mapper 
Proxy System


WMI

WMI Mapper
Instance Provider

WMI Mapper
Instance Provider

CIM-XML DeleteInstance of __FilterToConsumerBinding {
[key] Filter = __EventFilter instance object path 
[key] Consumer =  WbemEventConsumer instance object path
}


Client System

WMI Mapper 
Proxy System


WBEM Event Subscriber

Managed System


WMI-DCOM DeleteInstance of __FilterToConsumerBinding {
[key] Filter = __EventFilter instance object path 
[key] Consumer =  WbemEventConsumer instance object path
}



WMI Mapper 
Proxy System

WMI

WMI Mapper
Instance Provider

Client System

WMI Mapper 
Proxy System


WMI Mapper
Instance Provider

WBEM Event Subscriber

CIM-XML DeleteInstance of WbemEventConsumer 
{
[key] Name = HandlerKey
}

Managed System


WMI Mapper 
Proxy System


WMI-DCOM DeleteInstance of WbemEventConsumer
 {
[key] Name = HandlerKey
}

WMI

WMI Mapper
Instance Provider

CIM-XML DeleteInstance of __EventFilter 
{
[key] Name = FilterKey
}


WMI Mapper 
Proxy System


Client System

WBEM Event Subscriber

WMI Mapper
Instance Provider

Managed System


WMI Mapper 
Proxy System


WMI-DCOM DeleteInstance of __EventFilter
{
[key] Name = FilterKey
}

WMI

WMI Mapper
Instance Provider

Managed System


WMI Event Provider

WMI

WMI Indication Instance

Managed System


WMI Mapper 
Proxy System


WMI-DCOM IndicateToConsumer
(
WbemEventConsumerInstance
WMIIndicationInstance
)


WBEM Mapper
Consumer Provider


WMI

WBEM Event Listener

WBEM Mapper
Consumer Provider


Client System

WMI Mapper 
Proxy System


CIM-XML ExportIndication
(
CIMIndicationInstance
)


IWbemUnboundObjectSink
<COM Interface>

IWbemEventConsumerProvider
<COM Interface>





IndicateToConsumer() 

FindConsumer() 

CIMExportClient
<Pegasus Class>

CEventDispatcher
<COM Class>



connect()
exportIndication()
disconnect()








CEventConsumer
<COM Class>





CIMInstance
<Pegasus Class>





Monitor
<Pegasus Class>

SSLContext
<Pegasus Class>



run()

connect()
disconnect()

AddProperty()



HTTPConnector
<Pegasus Class>

IWbemEventConsumerProvider
(CEventConsumer)

WMI Service

FindConsumer(LogicalConsumer)

IWbemUnboundObjectSink
(CEventDispatcher)

IWbemUnboundObjectSink pointer

IndicateToConsumer(LogicalConsumer, WMIIndication)


CIMobjectfromWMIObject(WMIIndication)

This instance is created by CIMObjectfromWMI method and it
 is the CIM Indication instance

new Monitor()


new HTTPConnector(Monitor)


new CIMExportClient(Monitor, HTTPConnector)


CIMExportClient

CIMInstance

SSLContext

HTTPConnector

Monitor

new SSLContext(TrustFilePath)
It is done only if destination sets https protocol

connect(host, port, SSLContext)
The third parameter is used only if  destination sets https protocol

exportIndication(destination, CIMIndication)


disconnect()




-./0				















!
&
+
5
6
L
M
N
O
r

ñåwlh1h@lCJaJh03mHnHujh@lUjh@lUmHnHuh@lh1h@lhmh@lh@l5CJaJ#h@lh@l5CJOJQJ^JaJ h@lh@lCJOJQJ^JaJh@l5CJaJh03CJOJQJh@lCJOJQJjh@lCJOJQJU'/0			

	













"
#
$
%
&
gd@lgd03gd@lgdm&
,
-
.
q
r



RSgd@lh^hgd@lI
&FEƀ\&)gd@l`gd1$a$gd@lgd@l

S^







/O\^l!&ۼۧۏsi[ۼh	CJOJQJ^JaJh@lOJQJ^Jh03CJOJQJ^JaJh1CJOJQJ^JaJ/jh1h@lCJOJQJU^JaJ)jh1h@lCJOJQJU^JaJh1h@lCJaJ&h1h@l6CJOJQJ]^JaJ h1h@lCJOJQJ^JaJ&h1h@l5CJOJQJ\^JaJ#]^l!]I
&FEƀ\&)gd@lgd@lh^hgd@lI
&FEƀ\&)gd@l
!345678VWmgdmh`hgd@lI
&FEƀ\&)gd@lgd@lh^hgd@l348VWmno6bd`
¾ziXiGiGiGi=h-;OJQJ^J h1h'CJOJQJ^JaJ h1h4YCJOJQJ^JaJ h1hmCJOJQJ^JaJh1hmCJaJhm#h7<_hm5CJOJQJ^JaJh7<_h@lOJQJ^J#h7<_h@l5CJOJQJ^JaJh1h@lh1h@lCJaJh1h@l6CJ]aJ h1h@lCJOJQJ^JaJ&h1h@l6CJOJQJ]^JaJmn6cd

)*.0147;=h^hgd4Y
&Fgdmgdm()*-./13467:;<=>?ABDJLUb-En.J\y$}	õõõõõõõõõñ~h1h@lB*CJaJphh1hmCJaJh1h@l5CJ\aJh1h@lCJaJh1jhmUmHnHuhm h1hmCJOJQJ^JaJ h1h-;CJOJQJ^JaJh@lh1OJQJ^Jh1OJQJ^J0=?BEFGHIJKLTU-.mn-.[\	
!gd@l$a$gd@lgd@lgdm!!###	'
'S*T***++++-...	
!gd@l
&F
0^`0gd@lgdmgd@l	
"#3456mn!!####	''S*T*l***+0+2+5+i+k+++++++城}}}}}}ugYh[eh@l5CJ\aJh[eh[e5CJ\aJhmmH	sH	 h1hmCJOJQJ^JaJ h1hCJOJQJ^JaJh@lh1hmCJaJh1h@l5CJ\aJh1h@lB*CJaJphh03CJaJ#j{h1h@lCJUaJh1h@lCJaJjh1h@lCJUaJ"++<,E,H,X,c,n,-...Z...../////////////00پ|nnff]fUh03mH	sH	h03mHnHujh@lUjh@lUmHnHu(jh1h@lCJUaJmHnHuh1h03CJaJh03CJaJh1h@lB*CJaJphh1h@lCJaJh1h@l5>*CJ\aJh@l6>*CJ]^Jh@lh[eCJaJmH	sH	h[eh[eCJaJmH	sH	h[emH	sH	.Z....//////////00
0gd03$a$gd@lN
&F
!Eƀ\&.gd@l	
!gd@lgd@l0
00f0g0l0p0q0r0t0u0|0}000000011111111111112 2!2y2|2}2222222222淢擆~vh03mH	sH	h@lCJaJh03CJaJmHnHujh1h@lCJUaJ(jh1h@lCJUaJmHnHuh03CJaJh03h03mHnHujh@lUh7<_jh@lUmHnHuh1h@lCJaJh@lh03h03mH	sH	.
00f0h0i0j0k0l0q0s0t0u00$a$gd7<_$a$gd@l	
!gd@lN
&F
!Eƀ\&.gd@lgd@l01111111111 2!2gd03$a$gd03	
!gd@lN
&F
!Eƀ\&.gd@l!2y2}2222222222gd@l$a$gd03	
!gd@lN
&F
!Eƀ\&.gd@l222222h3k3o3q3s3t3~333333333446474:4>4?4@4R4Y4Z4p4q4r4s44o5p5r5u5w5x5y5z5{5}5ذذذإذذذؖyذذذh03CJaJh03mHnHujh@lUh@lh03h03h03mH	sH	h03h03CJaJ(jh1h@lCJUaJmHnHuh1h03CJaJh@lCJaJh1h@lCJaJjh1h@lCJUaJh03CJaJmHnHu-2h3l3m3n3o3r3s3u3v3w333gd03$a$gd03	
!gd@lN
&F
!Eƀ\&.gd@l34474;4<4=4>4@444gd03gd03	
!gd@lN
&F
!Eƀ\&.gd@l	4o5p5s5t5u5x5z5|5}555^gd03	
!gd@lN
&F

!Eƀ\&.gd@l}55555555555B6E6I6J6K6L6M6N6P6W6X6n6o6p6q66[7`7e7f7i7p7q7777778"8%8(8*8+82838I8J8L8M88J9L9M9O9Q9R9S9T9U9įįįįįįįįīįħjh@lUmHnHuh@lh7<_(jh1h@lCJUaJmHnHuh1h@lCJaJh7<_h03mHnHujh7<_h@lUh7<_h@lh7<_5CJaJh035CJaJ<5A6B6F6G6H6I6K6M6O6P666gd@l$a$gd@l	
!gd@lN
&F

!Eƀ\&.gd@l6[7a7b7c7d7e7g7h7i777gd@l$a$gd@l	
!gd@lN
&F

!Eƀ\&.gd@l788#8$8%8)8*8+88$a$gd@l	
!gd@lN
&F

!Eƀ\&.gd@l	8I9J9M9N9O9R9T9V9W9X999$a$gd@l	
!gd@lN
&F

!Eƀ\&.gd@lU9_9`9v9w9y9z99
:::::::#:$:::;:=:>:z::B<C<<<<<<=	===D=E=F=============>>ĹĹĹĹĹĹ(jh1h7<_CJUaJmHnHuh7<_h7<_mH	sH	h1h@l>*CJaJh03h03mHnHujh03h@lUh03h@l(jh1h@lCJUaJmHnHuh1h@lCJaJh03mHnHujh@lUh@l29:
::::::::::z:{::B<C<gd03$a$gd@lgd@l	
!gd@lN
&F

!Eƀ\&.gd@lC<<<<<<<<<E=F=gd7<_$a$gd03	
!gd@lN
&F
!Eƀ\&.gd@l
F=====>>>>MN
&F
!Eƀ\&.gd@lgd@l$a$gd@l	
!gd@lN
&F
!Eƀ\&.gd@l>>>>>>>>>>Z?[?]?^?_?b?d?f?g?p?q??????Q@S@V@X@Y@Z@[@\@e@f@|@}@@@AAAAAAAAAAHAh03h@lh7<_(jh1h7<_CJUaJmHnHuh03mHnHujh@lUjh@lUmHnHuh@lh03CJaJmHnHujh1h@lCJUaJh1h@lCJaJ(jh1h@lCJUaJmHnHu1>>>>>>>>>??Z?[?^?`?a?b?e?f?N
&F
!Eƀ\&.gd@lgd@l$a$gd@l	
!gd@lf?h?i???P@Q@T@U@V@Y@[@]@^@@@@N
&F
!Eƀ\&.gd@lgd@l$a$gd@l	
!gd@l@AAAAAAAAAAgd^#<gd03gd7<_	
!gd@lN
&F
!Eƀ\&.gd@l
HAIA_A`AbAcAAAAAA/B0B2B5B6B7B9B@BABWBXBZB[BBADCDDDEDHDIDJDKDLDMDWDXDnDoDĹ{mmmmmeejh@lUjh@lUmHnHuh^#<h03mHnHujh^#<h@lUh^#<h@l(jh1h@lCJUaJmHnHuh1h@lCJaJh^#<h^#<mH	sH	h@lh03h03h@lh03h03mHnHujh03h@lU*h03h@l*jh03h@lU&A.B/B1B2B6B8B9BBBAD^I
&FEƀ\&.gd@l$a$gd@lgd@lI
&FEƀ\&.gd@l
ADDDFDGDHDJDLDNDODPDDFFFFFFFFI
&FEƀ\&.gd@l$a$gd@lgd@loDqDrDDFFFFFFFFFFFFGG]G_G`GbGdGeGgGhGjGnGoGqGrGsGuGøøå~h~cTcTcTcTcTcTjh@lU\mHnHu	h@l\+jh1h@lCJU\aJmHnHuh1h@lCJ\aJh1h7<_CJaJmH	sH	h7<_CJaJmH	sH	h@lCJaJmH	sH	h^#<h03jh^#<h@lUh^#<h@l(jh1h@lCJUaJmHnHuh1h@lCJaJh@ljh@lUh03mHnHu FFFFGG]G`GaGbGeGhGkGlGmGnGpGqGsGvG}GGGGGGgd@l
&F
0^`0gd@l$a$gd^#<uGvG|G}GGGGGGGGGGGGGGGG
HHHI0IIIYJjJJKBM[MNNNNsOOPPFQNQRRS STTU%UZUeUVVWWYY$Z5ZD[E[]õæõæõõæõæõæõæõõææõõõÞh^#<CJaJh1h@lCJaJmHsHh1h@l5CJ\aJh1h@lCJaJh@lmHsHh03mHnHujh@lUh@ljh@lU\mHnHu	h@l\>GGGGGGGGGGG
HHI0III
&FEƀ\&gd@l
&F
0^`0gd@l$a$gd@lgd@lIYJjJJBMRI
&FEƀ\&gd@lgd@l
&F
0^`0gd@lI
&FEƀ\&gd@lBMNNNsOOPRI
&FEƀ\&gd@lgd@l
&F
0^`0gd@lI
&FEƀ\&gd@lPFQNQRS STRI
&FEƀ\&gd@lgd@l
&F
0^`0gd@lI
&FEƀ\&gd@lTUZUeUVVWkWRWRgd@l
&F
0^`0gd@lI
&FEƀ\&	gd@lI
&FEƀ\&gd@lWY$ZC[k!I
&FEƀ\&gd@lI
&FEƀ\&gd@lI
&FEƀ\&
gd@lC[D[E[l[]]]]]]]]]]]]] ]!]"]#]$]%]&]gd@lgd@l#$
&F
@@xx&dP^@`a$gd@l	
!gd@l]]]+]2]3]4]5]6]7]8]9]:];]=]?]B]D]E]F]I]J]K]L]M]N]O]R]T]V]Y][]\]]]_]`]a]n]p]q]r]s]v]w]x]y]}]~]]]]]]]]]]]]]],^ļī h^#<h-;CJOJQJ^JaJh^#<mH	sH	h@lmH	sH	h03mHnHujh@lUh@lmHnHuh@ljh@lUmHnHuh7<_h^#<=&]'](])]*]+],]-].]/]0]1]2]4]6]8]:]<]=]@]A]B]E]G]H]I]K]M]O]S]gd@lS]T]W]X]Y]\]^]_]a]o]p]r]t]u]v]x]z]{]|]}]]]]]]]]]	
!gd@lgd@lgd@l]]]]]]]]]]]]]3^4^5^^^^^^^$_Q_____"`gd/gd-;,^2^3^4^5^^dmpghtuοάteVG;hy+CJaJmH	sH	hy+hy+CJaJmH	sH	hy+h>gCJaJmH	sH	hy+hJCJaJmH	sH	h^#<hJ5CJaJmH	sH	h^#<5CJaJmH	sH	h^#<h`b5CJaJmH	sH	h/h^#<mH	sH	h^#<mH	sH	h/h/mH	sH	h1h/CJaJmH	sH	h/mH	sH	h-;mH	sH	 h^#<h-;CJOJQJ^JaJ h^#<h/CJOJQJ^JaJ"`T````a5aaabPbxbbbb c>cWckcxcccdLdzdddd e^gd^#<gd/ eNe}eeefQffff@gdgggggggPhQhRhhhh3iKi~iiijgd/j1j`jjjj0kkkkll6lJlcl~llllllm]m^mmm nknnngd/nnoXoYoooo4pppppqFqtqqqqrHrwrrrsMsssstgd/t[tttt"uCuduuuuuvvvbvvvv	w<wcwwwwxUxxxxgd/x5yyy&zJzzzz{${B{[{o{|{{{{"|O|}||||#}Q}}}}~gd/~T~~~dfghijklmnopqrstugd/ŀӀԀ34BIJ]āŁԁgd@l
&Fgd6h^hgdy+
&Fgdy+
&Fgdy+
&Fgd>ggdy+^gd@l
&F
gdy+gd>gҀӀԀ34AJ\]āŁӁ89:HIOPQdeȄǸǬǬǸ񸠔yjyy[yhy+hDCJaJmH	sH	hDhDCJaJmH	sH	hDCJaJmH	sH	hy+h6CJaJmH	sH	h6CJaJmH	sH	h>gCJaJmH	sH	h@lCJaJmH	sH	hy+h>gCJaJmH	sH	hy+CJaJmH	sH	h@lhy+CJaJmH	sH	hy+hy+CJaJmH	sH	hy+h@lCJaJmH	sH	!ԁ9:IPQe67tuZ[\rdž
&FgdM
&Fgd#*
&Fgd{`gd{$^a$gd{gd>g^gd@l
&FgdDȄ567tu؅݅[\r+農ܣsdssXhCJaJmH	sH	hMhMCJaJmH	sH	hMCJaJmH	sH	h^#<CJaJmH	sH	hI&CJaJmH	sH	h#*CJaJmH	sH	hy+h@lCJaJmH	sH	h>gCJaJmH	sH	hy+h>gCJaJmH	sH	hDhDCJaJmH	sH	h{CJaJmH	sH	hDCJaJmH	sH	hnCJaJmH	sH	džɇ<=GPQ^ˉ
&Fgdq
&FgdDh^hgd
6
&Fgd
6
&FgdI&
&Fgdgd>gh^hgdM
&Fgdwa<=FGPQ]^ʉˉپ͠٠پ͔͔vj[jhy+h@lCJaJmH	sH	hqCJaJmH	sH	hqhqCJaJmH	sH	hy+hDCJaJmH	sH	hDCJaJmH	sH	h
6h
6CJaJmH	sH	hy+h>gCJaJmH	sH	hy+h
6CJaJmH	sH	h>gCJaJmH	sH	h
6CJaJmH	sH	hI&CJaJmH	sH	hy+hI&CJaJmH	sH	'89JQRbxyTVWYZ\]_gd7<_
&Fgd>gh^hgdq
&Fgdqgd>g^gd@l&'89IJPQabxyɋՋQSTUWXZ[]^aiʻʬ֑skgkgkgkgXh@l5B*CJ\aJphh<jqjh<jqUh%HhJCJaJmH	sH	h%Hh>gCJaJmH	sH	h3h3CJaJmH	sH	h3CJaJmH	sH	h^#<hqCJaJmH	sH	hy+h@lCJaJmH	sH	hqCJaJmH	sH	h>gCJaJmH	sH	hy+h>gCJaJmH	sH	hy+hqCJaJmH	sH	!_`apq֌34FGgdmgdm$7$8$H$a$gdmgdm	7$8$H$gd@liopŒԌ׍؍015CDgh{|}~Ύώ&'۳̭ۢۓ{ۓۢ{h@l5B*\phh@l5B*\aJphh@l5B*CJ\aJphh@l5B*\ph
h@lCJh@l5OJQJ\^Jh@lCJOJQJ^Jh@l5CJOJQJ\^Jh@lhmhm5B*\aJphhm5B*CJ\aJph.GSez׍؍01CDRgh|$a$gd@l$a$gd@lgdm|}~͎̎Ύώڎ4O`gd@lgd@l$7$8$H$a$gd@lgd@l$a$$a$gd@l׏#%&'67;<HUVWbtu$7$8$H$a$gd@lgd@l`gd@lgd@l$a$gd@l'567;<UVWtuPQ^_`vw456STbcdhi56STmnostyzؔٔh@l5B*\phh@l5B*\aJphh@l5B*CJ\aJphh@l5B*\phh@lh@l5B*	\phh@l5\H!MOPQ_`vw'456AS$a$gd@l`gd@lgd@l$7$8$H$a$gd@lSTcdhitߒ56AS`gd@lgd@l$7$8$H$a$gd@l$a$gd@lgd@lST`mnost“ԓ6Lvxyz`gd@lgd@lgd@l$a$gd@l$7$8$H$a$gd@lƔؔٔ.Dnpq}`gd@lgd@l$a$gd@l$7$8$H$a$gd@lpqەܕ
EF_`aef,-FGHUVWmnFG`abfgLMZ[\uvwJKbh@l5B*\phh@l5B*\aJphh@l5B*CJ\aJphh@l5B*\phh@lLɕەܕ
<Vv`gd@lgd@l$7$8$H$a$gd@l$a$gd@lCEFR_`aefq*,-9FGHV#]`gd@l^gd@l$a$gd@l$7$8$H$a$gd@lgd@l`gd@lVWmnyԘ	DFGS`abfgr`gd@l^gd@lgd@l$7$8$H$a$gd@l$a$gd@lٙIKLM[\huvw֚FHI$7$8$H$a$gd@l`gd@l^gd@lgd@l$a$gd@lIJKWdeijuϛЛ#$a$gd@l$7$8$H$a$gd7<_$7$8$H$a$gd@lgd@lbcdeijϛЛ23BCD]^_ΜϜ012?@AWXuv0156NO^_`yz{̞͞ݺݺݺݺݺݺh@l5B*\phh@l5B*\aJphh@l5B*\phh@lh@l5B*CJ\aJphh7<_5B*CJ\aJphI023BCDP]^_ΜϜ$a$gd@l$7$8$H$a$gd@lgd@l`gd@l#012@AWXcuv˝͝`gd@lgd@l$a$gd@l$7$8$H$a$gd@l0156NO^_`lyz{ɞ˞̞gd@l$7$8$H$a$gd@l$a$gd@l̞ٞ͞%&'56BOPQjlgd@l$7$8$H$a$gd@l$a$gd@l&'456OPQɟٟڟ۟ܟݟޟ&'8DEFGrstuvwxy ҠӠޠh@lCJOJQJ^J
h@lCJh@l5CJOJQJ\^Jh@l5B*\phh@l5B*\aJphh@l5B*CJ\aJphh@l5B*\phh@lBɟٟڟ۟ܟݟޟ&'8DEFGQdqrstugd@l$a$gd@luvwxy ҠӠޠ$a$gd@lgd@l !/?@lmyzáġ?@Ǣɢ !/089W -/01οh%HhJCJaJmH	sH	hlqh@l5CJ\h@l5CJOJQJ\^J
h@lCJh@lCJOJQJ^Jh@l; !/?@[lmyzáġ?@{$a$gd@lgd@l{ǢȢɢ !/089W$a$gd@lgd@l -./01
&Fgd>ggd@l,1h/ =!"#$%{DyK
_Ref80764671{DyK
_Ref80764671^2 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~_HmH	@nH	@sH	@tH	@8`8mNormal_HmHsHtH	
m	Heading 1k$$
&F$d%d&d'd-D@&M
%NOPQ5CJ(KHOJQJmH	sH	h@hm	Heading 2$$
&F<&d@&P5B*CJ$mH	phsH	Z@Zm	Heading 3$
&F<@&56>*CJmH	sH	\`\
03	Heading 4$x@& 56>*CJ]^JaJmH	sH	\\m	Heading 5
&F<@&56CJ\]aJmH	sH	VVm	Heading 6
&F<@&5CJ\aJmH	sH	PPm	Heading 7
&F<@&CJaJmH	sH	VVm	Heading 8
&F<@&6CJ]aJmH	sH	\	\m	Heading 9	
&F<@&CJOJQJ^JaJmH	sH	DA`DDefault Paragraph FontRiRTable Normal4
l4a(k (No ListBOBmBody 2$a$OJQJ^JmH	sH	RB@Rm	Body Text$7$8$H$a$5B*\aJphVP@VmBody Text 2$7$8$H$a$5B*\aJphZQ@"ZmBody Text 3$7$8$H$a$5B*CJ\aJph>"`>@lCaption
xx5mH	sH	HBH@lBalloon TextCJOJQJ^JaJZ/QZ@lBalloon Text Char CJOJQJ^JaJmHsHtH	<`b<@lHeader

!mH	sH	:/q:@lHeader CharmH	sH	tH	4 47<_Footer

B#:/:7<_Footer CharmHsHtH	PK![Content_Types].xmlj0Eжr(΢Iw},-j4	wP-t#bΙ{UTU^hd}㨫)*1P'	^W0)T9<l#$yi};~@(Hu*Dנz/0ǰ$X3aZ,D0j~3߶b~i>3\`?/[G\!-Rk.sԻ..a濭?PK!֧6_rels/.relsj0}Q%v/C/}(h"O
= C?hv=Ʌ%[xp{۵_Pѣ<1H0ORBdJE4b$q_6LR7`0̞O,En7Lib/SeеPK!kytheme/theme/themeManager.xmlM
 @}w7c(EbˮCAǠҟ7՛K
Y,
e.|,H,lxɴIsQ}#Ր ֵ+!,^$j=GW)E+&
8PK!Ptheme/theme/theme1.xmlYOo6w toc'vuر-MniP@I}úama[إ4:lЯGRX^6؊>$!)O^rC$y@/yH*񄴽)޵߻UDb`}"qۋJחX^)I`nEp)liV[]1M<OP6r=zgbIguSebORD۫qu	gZo~ٺlAplxpT0+[}`jzAV2Fi@qv֬5\|ʜ̭NleXdsjcs7f
W+Ն7`gȘJj|h(KD-
dXiJ؇(x$(:;˹!I_TS1?E??ZBΪmU/?~xY'y5g&΋/ɋ>GMGeD3Vq%'#q$8K)fw9:ĵ
x}rxwr:\TZaG*y8IjbRc|XŻǿI
u3KGnD1NIBs
RuK>V.EL+M2#'fi~Vvl{u8zH
*:(W☕
~JTe\O*tHGHY}KNP*ݾ˦TѼ9/#A7qZ$*c?qUnwN%Oi4=3ڗP
1Pm\\9Mؓ2aD];Yt\[x]}Wr|]g-
eW
)6-rCSj
id	DЇAΜIqbJ#x꺃6k#ASh&ʌt(Q%p%m&]caSl=X\P1Mh9MVdDAaVB[݈fJíP|8քAV^f
Hn-"d>znNJ	ة>b&2vKyϼD:,AGm\nziÙ.uχYC6OMf3or$5NHT[XF64T,ќM0E)`#5XY`פ;%1U٥m;R>QDDcpU'&LE/pm%]8firS4d7y\`JnίIR3U~7+׸#mqBiDi*L69mY&iHE=(K&N!V.KeLDĕ{D	vEꦚdeNƟe(MN9ߜR6&3(a/DUz<{ˊYȳV)9Z[4^n5!J?Q3eBoCMm<.vpIYfZY_p[=al-Y}Nc͙ŋ4vfavl'SA8|*u{-ߟ0%M07%<ҍPK!
ѐ'theme/theme/_rels/themeManager.xml.relsM
0wooӺ&݈Э5
6?$Q
,.aic21h:qm@RN;d`o7gK(M&$R(.1r'JЊT8V"AȻHu}|$b{P8g/]QAsم(#L[PK-![Content_Types].xmlPK-!֧6+_rels/.relsPK-!kytheme/theme/themeManager.xmlPK-!Ptheme/theme/theme1.xmlPK-!
ѐ'	theme/theme/_rels/themeManager.xml.relsPK]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a:clrMap xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" bg1="lt1" tx1="dk1" bg2="lt2" tx2="dk2" accent1="accent1" accent2="accent2" accent3="accent3" accent4="accent4" accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/> ;RW'<Paw9n#2I2M&A#4CZx	+	I	N	]	{			@
Q

#
+<

$
B


->	'6QoKPn&Al%My{}468UWYr8c;Kh*1

	%$/,+-013)*47;98:<>5?6FDCEGHJAKBkjghilneofOPSQRTMVWN_\[]`aYcdZ'rq(utw~x{yz} ;RW'<Paw9n#2I2M&A#4CZx	+	I	N	]	{			@
Q

#
+<

$
B


->	'6QoKPn&Al%My{}468UWYr8c;Kh*	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~1f	
	+02}5U9>HAoDuG],^Ȅi'b1SVY[^_aeinrvy{&
!m=.
00!223456789C<F=>f?@AADFGIBMPTWC[&]S]]"` ejntx~ԁdž_G|SSVI̞u{1TUWXZ\]`bcdfghjklmopqstuwxz|}~-5LN	35'''|((()))***~+++Y,p,r,---W.n.p.p///20I0L0_1v1y1#2:2=2455555666p777e8|88H9_9b9@:W:Z:W<n<q<>>>???UUU1tt8@dhh(	
n

c$"?
n

c$̙"?
n

c$"?
z

0"?
z

0"?
n

c$
3"?

hB

s*D"?n
	
c$		̙"?
	n


c$
̙"?
hB
@
s*Df"? n

c$
̙"?

n


c$
̙"?
n

c$3"?
n

c$f"?
bB

c$D3"?n

c$3"?
bB

c$D"?!b

C"?

b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
bB

c$D"?bB

c$D"?bB

c$D"?
bB
 
c$D"?	\B
!
SD"?\B
"
SD"?\B
#
SD"?n
$
c$4$"?C
4n
%
c$-%̙"?;
-hB
&
s*D"??n
'
c$r'"?
rn
(
c$u(̙"?
un
)
c$=)̙"?N
=n
*
c$>*3"?O
>n
+
c$8+"?H
8n
,
c$7,̙"?G
7z
-
09-"?I
9hB
.
s*D"?Kn
/
c$6/̙"?F
6n
0
c$:03"?J
:n
1
c$;1"?L
;hB
2
s*D3"?Qn
3
c$<3̙"?M
<n
4
c$?43"?P
?n
5
c$G5̙"?Z
Gn
6
c$I63"?\
In
7
c$@7"?R
@n
8
c$C8̙"?U
Cz
9
0B9"?T
Bn
:
c$D:̙"?V
Dn
;
c$A;3"?S
An
<
c$E<"?X
EhB
=
s*D3"?]n
>
c$F>̙"?Y
Fn
?
c$H?3"?[
HhB
@
s*D"?Wn
A
c$QA̙"?f
Qn
B
c$SB3"?h
Sn
C
c$LC"?`
Ln
D
c$KD̙"?_
Kz
E
0ME"?a
Mn
F
c$JF̙"?^
Jn
G
c$NG3"?b
Nn
H
c$OH"?d
OhB
I
s*D3"?in
J
c$PJ̙"?e
Pn
K
c$RK3"?g
RhB
L
s*D"?cn
M
c$dM̙"?}
dn
N
c$gN3"?
gn
O
c$^O"?v
^n
P
c$_P̙"?w
_z
Q
0aQ"?z
an
R
c$bR̙"?{
bn
S
c$`S3"?y
`n
T
c$cT"?|
chB
U
s*D3"?n
V
c$eV̙"?~
en
W
c$fW3"?
fhB
X
s*D"?xn
Y
c$nY̙"?
nn
Z
c$qZ3"?
qn
[
c$j["?
jn
\
c$i\̙"?
iz
]
0k]"?
khB
^
s*D"?n
_
c$h_̙"?
hn
`
c$l`3"?
ln
a
c$ma"?
mhB
b
s*D3"?n
c
c$oc̙"?
on
d
c$pd3"?
pn
e
c$[e̙"?p
[n
f
c$]f3"?t
]n
g
c$Vg"?m
Vn
h
c$Wh̙"?n
Wz
i
0Xi"?o
Xn
j
c$Uj̙"?l
Un
k
c$Tk3"?j
Tn
l
c$Yl"?u
YhB
m
s*D3"?rn
n
c$Zn̙"?q
Zn
o
c$\o3"?s
\hB
p
s*D"?kn
q
c$tq3"?
tn
r
c$sr3"?
sbB
s
c$D3"?n
t
c$wt̙"?
wn
u
c$vu"?
vhB
v
s*D3"?n
w
c$xw̙"?
xn
x
c$zx3"?
zn
y
c$}y"?
}n
z
c$~z̙"?
~z
{
0{{"?
{hB
|
s*D"?n
}
c$}̙"?
z
~
0y~f"?
yn

c$"?%
z

0"?&
n

c$̙"?$
n

c$%"?1
%z

0&"?2
&n

c$$̙"?0
$n

c$/"?=
/z

00"?>
0n

c$.̙"?<
.n

c$"?)
n

c$3"?*
z

0|f"?
|n

c$̙"?(
n

c$ ̙"?+
 n

c$!3"?,
!hB

s*D3"?-n

c$̙"?#
n

c$3"?"
n

c$#̙"?/
#n

c$"3"?.
"hB

s*D"?3n

c$'̙"?4
'n

c$(̙"?5
(n

c$)3"?6
)n

c$*"?7
*n

c$+3"?8
+hB

s*D"?9n

c$2̙"?A
2n

c$13"?@
1n

c$5̙"?D
5hB

s*D"?En

c$,3"?:
,n

c$33"?B
3hB

s*D"?'b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C̙"?
b

C̙"?
b

C̙"?
b

C̙"?
b

C̙"?
b

C̙"?
bB

c$D"?\B

SD"?\B

SD"?b

C"?
b

C"?
b

C"?
bB

c$D"?b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
b

C"?
bB

c$D"?bB

c$D"?bB

c$D"?b

C"?
b

C"?
b

C"?
bB

c$D"?\B

SD"?n

c$"?
b

C"?
\B

SD"?b

C"?
\B
@
SD"?\B
@
SD"?n

c$"?
b

C"?
b

C"?
b

C"?
\B

SD"?n

c$"?
b

C"?
VB

CD"?\B
@
SD"?\B
@
SD"?n

c$"?
\B

SD"?\B

SD"?\B

SD"?\B

SD"?n

c$"?
\B

SD"?\B

SD"?n

c$"?
\B

SD"?n

c$"?
\B

SD"?n

c$"?
\B

SD"?n

c$"?
\B

SD"?n

c$"?
\B

SD"?b

C"?
b

C"?
\B

SD"?VB
@
CD"?n

c$"?
B
S	?
 &'()**+,.1245789;=?@BC''''''f(l(m(n(o(q())))))y*z*{*}*~**h+i+j+o+p+s+4,5,7,8,9,>,p-q-u-v-x-z-B.C.D.I.K.M.[/\/]/^/_/e/0 0!0%0&0'0J1K1O1P1R1T1
222222444444555555666666[7\7^7b7c7f7Q8R8V8W8Y8[8999999/:2:3:4:6:A<B<D<H<J<L<>>>>>>]?^?b?c?e?f?h?i?n?q?s?t?v?w?x?y?z?{?}?~????????????????2U4U6U8U:U=U>UBUCUEUIUKUMUOUPUQUTUUUYUZU\U_UaUbUcUdUeUfUgUhUiUjUkUlUmUpUrUvUxU}UU1#^t"^
tJtt"&F!t!d8dt"F!t%t2st Ept
 t
;t
*At8t
A*]t2w
t$$th
tby#
tEbi
t
xtPtq"PtQttqt
Et	hEtY2	ntltQ:
tq"
tqtt<P#t$t>4t@&ptbmtbvt-	4t_#Utao""tg	t\tQet)!$tuv%t>t@&ptbmtbt<	t	t0ktC&t1 %t`& t]}#-t%
1$t>4t@&ptbmt&btw\Gt	t m#t$\H$t<	Ht`t/>4t,#Bt+@&pt-bmt0:
"t.bIt1y#
t3,	it)E	{t*CMt4a"t2PaXbt7e&t;m)#t9bt8o#t:pt@rqt<jyf$t>i2t5E	{t?w#Gt6CMt=PbbtFtD%BtC@&ptEbmtGZ
%tLb?tHy&tJi tAE{tKO w%GtBCtI`I btkZ(%tpb?tjitgs&th}%tibteatn tm9I ;toO %tfrGtly&tO&/tPG#}tXb^_tSm)#tQbjtRtTjyf$tME	{tV2:tWw#GtNCMtUPbbt_>t\#Bt[@&pt]bmt`:
"t^b'ta[#tYE	{tc,	>tbbjtdRw"GtZCMt'6trVytqA?
lt(}
]nts7
tutt\
twDk[t~	Ytxtv	t{Rt8ty3tz4 t}.?t|Rt
tt
P
t?t
gtftxtgOt^\tAqt\t\t//tS/A/t@Nt UthUtVht t@h,t'?t>KtM>Otgt@tw%gt	bgt@w%t	@bt	lb0tw%'tdt7tdt~dttt$t3Q4#ttG#th	htt
tgVgtm
t%t|ttI%wttt+ttszzt5<t;e5tt-ttG#!tqWqtyt]	J ]	tLJ Ltt\ t pS&tk!mt@@t tx
tH fO t( t##tYttWat_Toc81709776_Ref80764671_Toc81709778_Toc81709780_Toc81709781_Toc81709782_Toc81709800_Toc81709801_Toc81709802_Toc81709803_Toc81709804_Toc81709805_Toc81709806_Toc81709807_Toc81709808_Toc81709809_Toc81709810%%,{29??AYBFsGFIKZMNDS2	

&&,29
?	@/AiBF~GMIKdMNkS2"}rS^"=C+<IZ"*`k		



38A
#
%
@
E
_
e
n
LSU`d,2EG`e`ems-2JL`f[ay{`g$&`cai}	7]_mr]x]f]g	al    !!S"X"a"""""#$	$<$$$$%%%%%#&Z&^&&&
'#')'((((((
)),)M)u){))*/***++.+4+++z,,,,-- -+---x.~......///T0Z00000001111E2K223'34"4B4b4p4444444N5T555$626D6J6Q6_6{66
7777778888:8E888j9p99.::1;7;1<5<A<<1=5=1>?>>>>?]??
@@@@A0AAAAAYBjBBBBC7CJCCCDDBE[EEEFFSFmFFFFFFFsGGGGHHHHFINIIIJJJJK KKKLLLLM%MYMeMMMNNNNOOOOPPQQQQ$R5RRRCSlSSSTTUUUUUUUWWmX|X*Y2YWYhYxYYYY\\]]s^^ma{aaabbbbcc$d5dffghh&hMhZhthhiijjj
kok|kllll+o9o
ppGpRpppgq|qqqqr
rrrrrttuuvvxx4y?yzyyyy{{:{F{{{"|.|||u}}}}}}?~K~=EGOQ[!-	]k9GRaɃՃTTVVWWYZ\]_`abhq„̄Ԅք34FGefyz…ׅ)0DR^ğφچ49OUׇ܇#'5<HNU[bkty!5MQ^ev'-4:AJS\bit}ߊ5:AJSX`fmt‹ȋԋ܋#6DLRvzƌό،.<DJnq}ɍҍڍ<BVbv'CFRX_fqz*-9?FOU\mryԐڐ	DGSY`gr{ّߑIMZ`hnu|֒ܒFKVWbeinu~ƓϓՓ03BHPV]hŔΔה#)09?FW\clu~˕͕!06NW^dlryɖ͖ٖ%.4:BHOYjlɗٗ '8=DQdy˜Ҙޘ/?[lqyę@{ǚ͚!/9WZ2r
2LSU,.ln,.Z\
R"&#(###<$D$$%&Y&Z&&O-m-2A49-::@<<>>>>>?\??	@
@@@AA/A0AAAXBYBiBjBBBAEBEFFFFFFrGsG~GGHHEIFIMINIJJKKK KLLMMYMZMdMeMNNNNOOQQ#R$RBSlSUUUUUVVVV*W/W$X(X[[%\*\__X`\```aaeeee&f-fqftf
gggg:h=hhhhhi$ikk^lblnnhnmnqqrrss(t-txx{{c||_}h}6B#+TTVVWWYZ\]_`aboqՄք24EGRSdeyz…օ؅/1BDQRfh{ˆφنچ34NOևׇ"#%'57:<GHTWabsu !LMOQ^`uw&'36@ARTbdgistފߊ46@ART_`lort‹Ӌԋ56KLuvxzŌƌ׌ٌ-.CDmnpq|}ȍɍڍ܍;<UVuvBCEFQR^adfpq)*,-89EHUWlnxyӐԐ	CDFGRS_begqrّؑ
HIKMZ\ghtwՒ֒
EFHKVWcehjtuΓГ/023ADOP\_͔ϔ"#/2?AVXbctvʕ˕
/146MO]`klx{Ȗɖ˖͖ٖؖ$'46ABNQijȗɗؗޗ%'78CGPQcdpy˜јӘݘޘ!./>@Z[kmxz™ę>@z|ƚɚ!.079VW ,23333333333333333333333333333333333333333((!*!*,,,,p-p-q-q---*0+000D5E5555555555555999A99999>>UU*U1UQaioq„Ԅ24EGyz/2((!*!*,,,,p-p-q-q---*0+000D5E5555555555555999A99999>>UU*U1UQaJJVVWWbceeiijj2+<ޏtQK!kJIX !^+&*{D3V58yEz5QCW?95%K;zW(n:V_	6W_7#bˆJPu&Qx*h^`OJQJo(hH^`OJQJ^Jo(hHopp^p`OJQJo(hHh@@^@`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHhhh^h`.h88^8`.hL^`L.h		^	`.h^`.hxLx^x`L.hHH^H`.h^`.hL^`L.h^`OJQJo(hH^`OJQJ^Jo(hHopp^p`OJQJo(hHh@@^@`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHh^`OJPJQJ^Jo(-^`OJQJ^Jo(hHopp^p`OJQJo(hHh@@^@`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHhhh^h`.h88^8`.hL^`L.h		^	`.h^`.hxLx^x`L.hHH^H`.h^`.hL^`L.h^`OJQJo(h^`OJQJo(ohpp^p`OJQJo(h@@^@`OJQJo(h^`OJQJo(oh^`OJQJo(h^`OJQJo(h^`OJQJo(ohPP^P`OJQJo(h^`OJPJQJ^Jo(-^`OJQJ^Jo(hHopp^p`OJQJo(hHh@@^@`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHhhh^h`)h88^8`.hL^`L.h		^	`.h^`.hxLx^x`L.hHH^H`.h^`.hL^`L.hhh^h`.h88^8`.hL^`L.h		^	`.h^`.hxLx^x`L.hHH^H`.h^`.hL^`L.h^`OJPJQJ^Jo(-^`OJQJ^Jo(hHopp^p`OJQJo(hHh@@^@`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHh^`OJPJQJ^Jo(-^`OJQJ^Jo(hHopp^p`OJQJo(hHh@@^@`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHh^`OJQJo(hH^`OJQJ^Jo(hHopp^p`OJQJo(hHh@@^@`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHP^`P@@^@`.0^`0..``^``...	^`	....	^`.....	
^`
......	
`^``.......	
00^0`........h^`OJPJQJ^Jo(-^`OJQJ^Jo(hHopp^p`OJQJo(hH@@^@`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hHhhh^h`.h88^8`.hL^`L.h		^	`.h^`.hxLx^x`L.hHH^H`.h^`.hL^`L.h^`OJQJo(hH^`OJQJ^Jo(hHohpp^p`OJQJo(hH@@^@`OJQJo(hH^`OJQJ^Jo(hHo^`OJQJo(hH^`OJQJo(hH^`OJQJ^Jo(hHoPP^P`OJQJo(hH:V_CW?96W_Pu{D3+<J;zW5%Kk:V5z57#bIX tQ!^+ @hh^h`OJQJo(																																																															sw																																			
,+	D!I&#*1
6-;^#<gI4Y7<_`wa`bm<jqlqqO1vmQ[c3y+JBu{[e
//6'%Hn
yD>g03M@lTV@Ȇ1@UnknownTerry MartinG*Ax	Times New Roman5Symbol3.*Cx	Arial7.[ @Verdana5.*[`)Tahoma?=	*Cx	Courier New;WingdingsA BCambria Math"1hццq"q"!4222qHP	?m2!xxWMIMapper Indication ConsumerschwingaamarP	

Oh+'0Lx	

 ,4<D WMIMapper Indication ConsumerschwingaNormalamar17Microsoft Office Word@a@Dn|@,x|q՜.+,0hp
Hewlett-Packard"2WMIMapper Indication ConsumerTitle	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~	

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLNOPQRSTVWXYZ[\aRoot Entry	FЍ|cData
1Table!WordDocument.fSummaryInformation(MDocumentSummaryInformation8UCompObjy
	F'Microsoft Office Word 97-2003 Document
MSWordDocWord.Document.89q

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2