System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 8574910991e14a67052a948b29e204630d7e81da:


0000: 2f 2a 0d 0a 20 2a 20 49 6e 73 74 61 6c 6c 65 72  /*.. * Installer
0010: 2e 63 73 20 2d 2d 0d 0a 20 2a 0d 0a 20 2a 20 57  .cs --.. *.. * W
0020: 72 69 74 74 65 6e 20 62 79 20 4a 6f 65 20 4d 69  ritten by Joe Mi
0030: 73 74 61 63 68 6b 69 6e 2e 0d 0a 20 2a 20 52 65  stachkin... * Re
0040: 6c 65 61 73 65 64 20 74 6f 20 74 68 65 20 70 75  leased to the pu
0050: 62 6c 69 63 20 64 6f 6d 61 69 6e 2c 20 75 73 65  blic domain, use
0060: 20 61 74 20 79 6f 75 72 20 6f 77 6e 20 72 69 73   at your own ris
0070: 6b 21 0d 0a 20 2a 2f 0d 0a 0d 0a 75 73 69 6e 67  k!.. */....using
0080: 20 53 79 73 74 65 6d 3b 0d 0a 75 73 69 6e 67 20   System;..using 
0090: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
00a0: 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 75 73 69  ns.Generic;..usi
00b0: 6e 67 20 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f  ng System.Diagno
00c0: 73 74 69 63 73 3b 0d 0a 75 73 69 6e 67 20 53 79  stics;..using Sy
00d0: 73 74 65 6d 2e 45 6e 74 65 72 70 72 69 73 65 53  stem.EnterpriseS
00e0: 65 72 76 69 63 65 73 2e 49 6e 74 65 72 6e 61 6c  ervices.Internal
00f0: 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  ;..using System.
0100: 49 4f 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  IO;..using Syste
0110: 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a 75  m.Reflection;..u
0120: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0130: 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72 76  ime.CompilerServ
0140: 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e  ices;....#if WIN
0150: 44 4f 57 53 0d 0a 75 73 69 6e 67 20 53 79 73 74  DOWS..using Syst
0160: 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72  em.Runtime.Inter
0170: 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 23 65 6e  opServices;..#en
0180: 64 69 66 0d 0a 0d 0a 75 73 69 6e 67 20 53 79 73  dif....using Sys
0190: 74 65 6d 2e 53 65 63 75 72 69 74 79 3b 0d 0a 0d  tem.Security;...
01a0: 0a 23 69 66 20 4e 45 54 5f 32 30 20 7c 7c 20 4e  .#if NET_20 || N
01b0: 45 54 5f 33 35 0d 0a 75 73 69 6e 67 20 53 79 73  ET_35..using Sys
01c0: 74 65 6d 2e 53 65 63 75 72 69 74 79 2e 50 65 72  tem.Security.Per
01d0: 6d 69 73 73 69 6f 6e 73 3b 0d 0a 23 65 6e 64 69  missions;..#endi
01e0: 66 0d 0a 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  f....using Syste
01f0: 6d 2e 54 65 78 74 3b 0d 0a 75 73 69 6e 67 20 53  m.Text;..using S
0200: 79 73 74 65 6d 2e 54 68 72 65 61 64 69 6e 67 3b  ystem.Threading;
0210: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 57  ..using System.W
0220: 69 6e 64 6f 77 73 2e 46 6f 72 6d 73 3b 0d 0a 75  indows.Forms;..u
0230: 73 69 6e 67 20 53 79 73 74 65 6d 2e 58 6d 6c 3b  sing System.Xml;
0240: 0d 0a 75 73 69 6e 67 20 4d 69 63 72 6f 73 6f 66  ..using Microsof
0250: 74 2e 57 69 6e 33 32 3b 0d 0a 0d 0a 6e 61 6d 65  t.Win32;....name
0260: 73 70 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74  space System.Dat
0270: 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a 20 20 20  a.SQLite..{..   
0280: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
0290: 44 65 6c 65 67 61 74 65 73 0d 0a 20 20 20 20 69  Delegates..    i
02a0: 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
02b0: 20 76 6f 69 64 20 54 72 61 63 65 43 61 6c 6c 62   void TraceCallb
02c0: 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ack(..        st
02d0: 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 20 2f 2a  ring message, /*
02e0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
02f0: 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 20  string category 
0300: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 29 3b  /* in */..    );
0310: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
0320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0360: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72  ///....    inter
0370: 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 62 6f 6f  nal delegate boo
0380: 6c 20 46 72 61 6d 65 77 6f 72 6b 43 6f 6e 66 69  l FrameworkConfi
0390: 67 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  gCallback(..    
03a0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
03b0: 61 6d 65 2c 20 20 20 20 20 20 20 20 20 20 20 2f  ame,           /
03c0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
03d0: 20 73 74 72 69 6e 67 20 69 6e 76 61 72 69 61 6e   string invarian
03e0: 74 4e 61 6d 65 2c 20 20 20 20 20 20 2f 2a 20 69  tName,      /* i
03f0: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73 74  n */..        st
0400: 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20  ring name,      
0410: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0420: 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  /..        strin
0430: 67 20 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 20  g description,  
0440: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
0450: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
0460: 79 70 65 4e 61 6d 65 2c 20 20 20 20 20 20 20 20  ypeName,        
0470: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
0480: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d       AssemblyNam
0490: 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20  e assemblyName, 
04a0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
04b0: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
04c0: 72 79 2c 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ry,          /* 
04d0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 6f  in */..        o
04e0: 62 6a 65 63 74 20 63 6c 69 65 6e 74 44 61 74 61  bject clientData
04f0: 2c 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20  ,         /* in 
0500: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  */..        bool
0510: 20 70 65 72 55 73 65 72 2c 20 20 20 20 20 20 20   perUser,       
0520: 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
0530: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f  .        bool wo
0540: 77 36 34 2c 20 20 20 20 20 20 20 20 20 20 20 20  w64,            
0550: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
0560: 20 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77        bool throw
0570: 4f 6e 4d 69 73 73 69 6e 67 2c 20 20 20 20 20 20  OnMissing,      
0580: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
0590: 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 20     bool whatIf, 
05a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
05b0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
05c0: 62 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 20 20 20  bool verbose,   
05d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
05e0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 66   */..        ref
05f0: 20 62 6f 6f 6c 20 73 61 76 65 64 2c 20 20 20 20   bool saved,    
0600: 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a          /* out *
0610: 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 73  /..        ref s
0620: 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20  tring error     
0630: 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d        /* out */.
0640: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
0650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
06a0: 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67    internal deleg
06b0: 61 74 65 20 62 6f 6f 6c 20 46 72 61 6d 65 77 6f  ate bool Framewo
06c0: 72 6b 52 65 67 69 73 74 72 79 43 61 6c 6c 62 61  rkRegistryCallba
06d0: 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 73  ck(..        Ins
06e0: 74 61 6c 6c 65 72 2e 4d 6f 63 6b 52 65 67 69 73  taller.MockRegis
06f0: 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 2c 20  tryKey rootKey, 
0700: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
0710: 20 20 73 74 72 69 6e 67 20 66 72 61 6d 65 77 6f    string framewo
0720: 72 6b 4e 61 6d 65 2c 20 20 20 20 20 20 20 20 20  rkName,         
0730: 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
0740: 20 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 66         Version f
0750: 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e 2c  rameworkVersion,
0760: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
0770: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  */..        stri
0780: 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 2c  ng platformName,
0790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
07a0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
07b0: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
07c0: 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  y,              
07d0: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
07e0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 63 6c 69        object cli
07f0: 65 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20 20  entData,        
0800: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0810: 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  /..        bool 
0820: 70 65 72 55 73 65 72 2c 20 20 20 20 20 20 20 20  perUser,        
0830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
0840: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
0850: 62 6f 6f 6c 20 77 6f 77 36 34 2c 20 20 20 20 20  bool wow64,     
0860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0870: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
0880: 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
0890: 6e 4d 69 73 73 69 6e 67 2c 20 20 20 20 20 20 20  nMissing,       
08a0: 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
08b0: 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77  ..        bool w
08c0: 68 61 74 49 66 2c 20 20 20 20 20 20 20 20 20 20  hatIf,          
08d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
08e0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62  in */..        b
08f0: 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 20 20 20 20  ool verbose,    
0900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0910: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
0920: 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65      ref string e
0930: 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 20 20  rror            
0940: 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f         /* out */
0950: 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
09a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
09b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
09c0: 67 61 74 65 20 62 6f 6f 6c 20 56 69 73 75 61 6c  gate bool Visual
09d0: 53 74 75 64 69 6f 52 65 67 69 73 74 72 79 43 61  StudioRegistryCa
09e0: 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
09f0: 20 49 6e 73 74 61 6c 6c 65 72 2e 4d 6f 63 6b 52   Installer.MockR
0a00: 65 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b  egistryKey rootK
0a10: 65 79 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ey, /* in */..  
0a20: 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 76 73        Version vs
0a30: 56 65 72 73 69 6f 6e 2c 20 20 20 20 20 20 20 20  Version,        
0a40: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0a50: 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  /..        strin
0a60: 67 20 73 75 66 66 69 78 2c 20 20 20 20 20 20 20  g suffix,       
0a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
0a80: 20 69 6e 2c 20 6f 70 74 69 6f 6e 61 6c 20 2a 2f   in, optional */
0a90: 0d 0a 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c  ..        Instal
0aa0: 6c 65 72 2e 50 61 63 6b 61 67 65 20 70 61 63 6b  ler.Package pack
0ab0: 61 67 65 2c 20 20 20 20 20 20 20 20 20 2f 2a 20  age,         /* 
0ac0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73  in */..        s
0ad0: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c  tring directory,
0ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0af0: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
0b00: 20 20 20 20 6f 62 6a 65 63 74 20 63 6c 69 65 6e      object clien
0b10: 74 44 61 74 61 2c 20 20 20 20 20 20 20 20 20 20  tData,          
0b20: 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
0b30: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 70 65  .        bool pe
0b40: 72 55 73 65 72 2c 20 20 20 20 20 20 20 20 20 20  rUser,          
0b50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
0b60: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f  n */..        bo
0b70: 6f 6c 20 77 6f 77 36 34 2c 20 20 20 20 20 20 20  ol wow64,       
0b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b90: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
0ba0: 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d     bool throwOnM
0bb0: 69 73 73 69 6e 67 2c 20 20 20 20 20 20 20 20 20  issing,         
0bc0: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
0bd0: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
0be0: 74 49 66 2c 20 20 20 20 20 20 20 20 20 20 20 20  tIf,            
0bf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
0c00: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f   */..        boo
0c10: 6c 20 76 65 72 62 6f 73 65 2c 20 20 20 20 20 20  l verbose,      
0c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c30: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
0c40: 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72    ref string err
0c50: 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20  or              
0c60: 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a       /* out */..
0c70: 20 20 20 20 29 3b 0d 0a 20 20 20 20 23 65 6e 64      );..    #end
0c80: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0ce0: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
0cf0: 45 6e 75 6d 65 72 61 74 69 6f 6e 73 0d 0a 20 20  Enumerations..  
0d00: 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20    [Flags()]..   
0d10: 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 49 6e 73   public enum Ins
0d20: 74 61 6c 6c 46 6c 61 67 73 0d 0a 20 20 20 20 7b  tallFlags..    {
0d30: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
0d40: 6e 20 4e 6f 72 6d 61 6c 20 56 61 6c 75 65 73 0d  n Normal Values.
0d50: 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20  .        None = 
0d60: 30 78 30 2c 0d 0a 20 20 20 20 20 20 20 20 43 6f  0x0,..        Co
0d70: 72 65 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79  reGlobalAssembly
0d80: 43 61 63 68 65 20 3d 20 30 78 31 2c 0d 0a 20 20  Cache = 0x1,..  
0d90: 20 20 20 20 20 20 4c 69 6e 71 47 6c 6f 62 61 6c        LinqGlobal
0da0: 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20 3d 20  AssemblyCache = 
0db0: 30 78 32 2c 0d 0a 20 20 20 20 20 20 20 20 45 66  0x2,..        Ef
0dc0: 36 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  6GlobalAssemblyC
0dd0: 61 63 68 65 20 3d 20 30 78 34 2c 0d 0a 20 20 20  ache = 0x4,..   
0de0: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 46 6f 6c       AssemblyFol
0df0: 64 65 72 73 20 3d 20 30 78 38 2c 0d 0a 20 20 20  ders = 0x8,..   
0e00: 20 20 20 20 20 44 62 50 72 6f 76 69 64 65 72 46       DbProviderF
0e10: 61 63 74 6f 72 79 20 3d 20 30 78 31 30 2c 0d 0a  actory = 0x10,..
0e20: 20 20 20 20 20 20 20 20 56 73 50 61 63 6b 61 67          VsPackag
0e30: 65 20 3d 20 30 78 32 30 2c 0d 0a 20 20 20 20 20  e = 0x20,..     
0e40: 20 20 20 56 73 50 61 63 6b 61 67 65 47 6c 6f 62     VsPackageGlob
0e50: 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20  alAssemblyCache 
0e60: 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 20 20 20  = 0x40,..       
0e70: 20 56 73 44 61 74 61 53 6f 75 72 63 65 20 3d 20   VsDataSource = 
0e80: 30 78 38 30 2c 0d 0a 20 20 20 20 20 20 20 20 56  0x80,..        V
0e90: 73 44 61 74 61 50 72 6f 76 69 64 65 72 20 3d 20  sDataProvider = 
0ea0: 30 78 31 30 30 2c 0d 0a 20 20 20 20 20 20 20 20  0x100,..        
0eb0: 56 73 44 65 76 45 6e 76 53 65 74 75 70 20 3d 20  VsDevEnvSetup = 
0ec0: 30 78 32 30 30 2c 0d 0a 20 20 20 20 20 20 20 20  0x200,..        
0ed0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
0ee0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
0ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0f30: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
0f40: 20 43 6f 6d 70 6f 73 69 74 65 20 56 61 6c 75 65   Composite Value
0f50: 73 0d 0a 20 20 20 20 20 20 20 20 46 72 61 6d 65  s..        Frame
0f60: 77 6f 72 6b 47 6c 6f 62 61 6c 41 73 73 65 6d 62  workGlobalAssemb
0f70: 6c 79 43 61 63 68 65 20 3d 20 43 6f 72 65 47 6c  lyCache = CoreGl
0f80: 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68  obalAssemblyCach
0f90: 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e |..           
0fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0fb0: 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 6e 71              Linq
0fc0: 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61  GlobalAssemblyCa
0fd0: 63 68 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  che |..         
0fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 66                Ef
1000: 36 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  6GlobalAssemblyC
1010: 61 63 68 65 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  ache,....       
1020: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1060: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1070: 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 3d 20      Framework = 
1080: 46 72 61 6d 65 77 6f 72 6b 47 6c 6f 62 61 6c 41  FrameworkGlobalA
1090: 73 73 65 6d 62 6c 79 43 61 63 68 65 20 7c 20 41  ssemblyCache | A
10a0: 73 73 65 6d 62 6c 79 46 6f 6c 64 65 72 73 20 7c  ssemblyFolders |
10b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c0: 20 20 20 20 20 20 44 62 50 72 6f 76 69 64 65 72        DbProvider
10d0: 46 61 63 74 6f 72 79 2c 0d 0a 0d 0a 20 20 20 20  Factory,....    
10e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1130: 20 20 20 20 20 20 20 56 73 20 3d 20 56 73 50 61         Vs = VsPa
1140: 63 6b 61 67 65 20 7c 20 56 73 50 61 63 6b 61 67  ckage | VsPackag
1150: 65 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  eGlobalAssemblyC
1160: 61 63 68 65 20 7c 20 56 73 44 61 74 61 53 6f 75  ache | VsDataSou
1170: 72 63 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  rce |..         
1180: 20 20 20 20 56 73 44 61 74 61 50 72 6f 76 69 64      VsDataProvid
1190: 65 72 20 7c 20 56 73 44 65 76 45 6e 76 53 65 74  er | VsDevEnvSet
11a0: 75 70 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  up,....        /
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1200: 20 20 41 6c 6c 47 6c 6f 62 61 6c 41 73 73 65 6d    AllGlobalAssem
1210: 62 6c 79 43 61 63 68 65 20 3d 20 46 72 61 6d 65  blyCache = Frame
1220: 77 6f 72 6b 47 6c 6f 62 61 6c 41 73 73 65 6d 62  workGlobalAssemb
1230: 6c 79 43 61 63 68 65 20 7c 0d 0a 20 20 20 20 20  lyCache |..     
1240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1250: 20 20 20 20 20 20 20 20 20 20 20 20 56 73 50 61              VsPa
1260: 63 6b 61 67 65 47 6c 6f 62 61 6c 41 73 73 65 6d  ckageGlobalAssem
1270: 62 6c 79 43 61 63 68 65 2c 0d 0a 0d 0a 20 20 20  blyCache,....   
1280: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12d0: 20 20 20 20 20 20 20 20 41 6c 6c 20 3d 20 46 72          All = Fr
12e0: 61 6d 65 77 6f 72 6b 20 7c 20 56 73 2c 0d 0a 0d  amework | Vs,...
12f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1340: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 41 6c 6c 45  ....        AllE
1350: 78 63 65 70 74 47 6c 6f 62 61 6c 41 73 73 65 6d  xceptGlobalAssem
1360: 62 6c 79 43 61 63 68 65 20 3d 20 41 6c 6c 20 26  blyCache = All &
1370: 20 7e 41 6c 6c 47 6c 6f 62 61 6c 41 73 73 65 6d   ~AllGlobalAssem
1380: 62 6c 79 43 61 63 68 65 2c 0d 0a 20 20 20 20 20  blyCache,..     
1390: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
13a0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
13b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
1400: 69 6f 6e 20 53 75 67 67 65 73 74 65 64 20 44 65  ion Suggested De
1410: 66 61 75 6c 74 20 56 61 6c 75 65 73 0d 0a 20 20  fault Values..  
1420: 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20        Default = 
1430: 41 6c 6c 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  All..        #en
1440: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
1450: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a0: 2f 0d 0a 0d 0a 20 20 20 20 5b 46 6c 61 67 73 28  /....    [Flags(
14b0: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 65  )]..    public e
14c0: 6e 75 6d 20 50 72 6f 76 69 64 65 72 46 6c 61 67  num ProviderFlag
14d0: 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
14e0: 20 20 23 72 65 67 69 6f 6e 20 4e 6f 72 6d 61 6c    #region Normal
14f0: 20 56 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20   Values..       
1500: 20 4e 6f 6e 65 20 3d 20 30 78 30 2c 0d 0a 20 20   None = 0x0,..  
1510: 20 20 20 20 20 20 53 79 73 74 65 6d 45 66 36 4d        SystemEf6M
1520: 75 73 74 42 65 47 6c 6f 62 61 6c 20 3d 20 30 78  ustBeGlobal = 0x
1530: 31 2c 0d 0a 20 20 20 20 20 20 20 20 44 69 64 4c  1,..        DidL
1540: 69 6e 71 46 6f 72 63 65 54 72 61 63 65 20 3d 20  inqForceTrace = 
1550: 30 78 32 2c 0d 0a 20 20 20 20 20 20 20 20 44 69  0x2,..        Di
1560: 64 45 66 36 46 6f 72 63 65 54 72 61 63 65 20 3d  dEf6ForceTrace =
1570: 20 30 78 34 2c 0d 0a 20 20 20 20 20 20 20 20 44   0x4,..        D
1580: 69 64 45 66 36 52 65 73 6f 6c 76 65 54 72 61 63  idEf6ResolveTrac
1590: 65 20 3d 20 30 78 38 2c 0d 0a 20 20 20 20 20 20  e = 0x8,..      
15a0: 20 20 46 6f 72 63 65 4c 69 6e 71 45 6e 61 62 6c    ForceLinqEnabl
15b0: 65 64 20 3d 20 30 78 31 30 2c 0d 0a 20 20 20 20  ed = 0x10,..    
15c0: 20 20 20 20 46 6f 72 63 65 4c 69 6e 71 44 69 73      ForceLinqDis
15d0: 61 62 6c 65 64 20 3d 20 30 78 32 30 2c 0d 0a 20  abled = 0x20,.. 
15e0: 20 20 20 20 20 20 20 46 6f 72 63 65 45 66 36 45         ForceEf6E
15f0: 6e 61 62 6c 65 64 20 3d 20 30 78 34 30 2c 0d 0a  nabled = 0x40,..
1600: 20 20 20 20 20 20 20 20 46 6f 72 63 65 45 66 36          ForceEf6
1610: 44 69 73 61 62 6c 65 64 20 3d 20 30 78 38 30 2c  Disabled = 0x80,
1620: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
1630: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
1640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1680: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1690: 20 20 20 23 72 65 67 69 6f 6e 20 53 75 67 67 65     #region Sugge
16a0: 73 74 65 64 20 44 65 66 61 75 6c 74 20 56 61 6c  sted Default Val
16b0: 75 65 73 0d 0a 20 20 20 20 20 20 20 20 44 65 66  ues..        Def
16c0: 61 75 6c 74 20 3d 20 4e 6f 6e 65 0d 0a 20 20 20  ault = None..   
16d0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
16e0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
16f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1740: 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20 20   [Flags()]..    
1750: 70 75 62 6c 69 63 20 65 6e 75 6d 20 54 72 61 63  public enum Trac
1760: 65 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 7b  ePriority..    {
1770: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1780: 6e 20 4e 6f 72 6d 61 6c 20 56 61 6c 75 65 73 0d  n Normal Values.
1790: 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20  .        None = 
17a0: 30 78 30 2c 0d 0a 20 20 20 20 20 20 20 20 4c 6f  0x0,..        Lo
17b0: 77 65 73 74 20 3d 20 30 78 31 2c 0d 0a 20 20 20  west = 0x1,..   
17c0: 20 20 20 20 20 4c 6f 77 65 72 20 3d 20 30 78 32       Lower = 0x2
17d0: 2c 0d 0a 20 20 20 20 20 20 20 20 4c 6f 77 20 3d  ,..        Low =
17e0: 20 30 78 34 2c 0d 0a 20 20 20 20 20 20 20 20 4d   0x4,..        M
17f0: 65 64 69 75 6d 4c 6f 77 20 3d 20 30 78 38 2c 0d  ediumLow = 0x8,.
1800: 0a 20 20 20 20 20 20 20 20 4d 65 64 69 75 6d 20  .        Medium 
1810: 3d 20 30 78 31 30 2c 0d 0a 20 20 20 20 20 20 20  = 0x10,..       
1820: 20 4d 65 64 69 75 6d 48 69 67 68 20 3d 20 30 78   MediumHigh = 0x
1830: 32 30 2c 0d 0a 20 20 20 20 20 20 20 20 48 69 67  20,..        Hig
1840: 68 20 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 20  h = 0x40,..     
1850: 20 20 20 48 69 67 68 65 72 20 3d 20 30 78 38 30     Higher = 0x80
1860: 2c 0d 0a 20 20 20 20 20 20 20 20 48 69 67 68 65  ,..        Highe
1870: 73 74 20 3d 20 30 78 31 30 30 2c 0d 0a 20 20 20  st = 0x100,..   
1880: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1890: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
18f0: 65 67 69 6f 6e 20 53 75 67 67 65 73 74 65 64 20  egion Suggested 
1900: 44 65 66 61 75 6c 74 20 46 6c 61 67 73 0d 0a 20  Default Flags.. 
1910: 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d         Default =
1920: 20 4d 65 64 69 75 6d 0d 0a 20 20 20 20 20 20 20   Medium..       
1930: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
1940: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
1950: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
19b0: 67 69 6f 6e 20 49 6e 73 74 61 6c 6c 65 72 20 43  gion Installer C
19c0: 6c 61 73 73 0d 0a 23 69 66 20 4e 45 54 5f 34 30  lass..#if NET_40
19d0: 20 7c 7c 20 4e 45 54 5f 34 35 20 7c 7c 20 4e 45   || NET_45 || NE
19e0: 54 5f 34 35 31 20 7c 7c 20 4e 45 54 5f 34 35 32  T_451 || NET_452
19f0: 20 7c 7c 20 4e 45 54 5f 34 36 20 7c 7c 20 4e 45   || NET_46 || NE
1a00: 54 5f 34 36 31 20 7c 7c 20 4e 45 54 5f 34 36 32  T_461 || NET_462
1a10: 20 7c 7c 20 4e 45 54 5f 34 37 20 7c 7c 20 4e 45   || NET_47 || NE
1a20: 54 5f 34 37 31 0d 0a 20 20 20 20 5b 53 65 63 75  T_471..    [Secu
1a30: 72 69 74 79 43 72 69 74 69 63 61 6c 28 29 5d 0d  rityCritical()].
1a40: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 53 65 63  .#else..    [Sec
1a50: 75 72 69 74 79 50 65 72 6d 69 73 73 69 6f 6e 28  urityPermission(
1a60: 53 65 63 75 72 69 74 79 41 63 74 69 6f 6e 2e 4c  SecurityAction.L
1a70: 69 6e 6b 44 65 6d 61 6e 64 2c 20 55 6e 6d 61 6e  inkDemand, Unman
1a80: 61 67 65 64 43 6f 64 65 20 3d 20 74 72 75 65 29  agedCode = true)
1a90: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1aa0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
1ab0: 6c 61 73 73 20 49 6e 73 74 61 6c 6c 65 72 0d 0a  lass Installer..
1ac0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
1ad0: 72 65 67 69 6f 6e 20 55 6e 73 61 66 65 20 4e 61  region Unsafe Na
1ae0: 74 69 76 65 20 4d 65 74 68 6f 64 73 20 43 6c 61  tive Methods Cla
1af0: 73 73 0d 0a 20 20 20 20 20 20 20 20 5b 53 75 70  ss..        [Sup
1b00: 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f  pressUnmanagedCo
1b10: 64 65 53 65 63 75 72 69 74 79 28 29 5d 0d 0a 20  deSecurity()].. 
1b20: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
1b30: 65 61 6c 65 64 20 63 6c 61 73 73 20 55 6e 73 61  ealed class Unsa
1b40: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d  feNativeMethods.
1b50: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1b60: 57 49 4e 44 4f 57 53 0d 0a 20 20 20 20 20 20 20  WINDOWS..       
1b70: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74       #region Nat
1b80: 69 76 65 20 57 69 6e 33 32 20 43 6f 6e 73 74 61  ive Win32 Consta
1b90: 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nts..           
1ba0: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69   private const i
1bb0: 6e 74 20 4d 41 58 5f 50 41 54 48 20 3d 20 32 36  nt MAX_PATH = 26
1bc0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
1bd0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c20: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
1c30: 73 74 20 69 6e 74 20 43 53 49 44 4c 5f 53 59 53  st int CSIDL_SYS
1c40: 54 45 4d 58 38 36 20 3d 20 30 78 30 30 32 39 3b  TEMX86 = 0x0029;
1c50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1cb0: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
1cc0: 20 69 6e 74 20 53 48 47 46 50 5f 54 59 50 45 5f   int SHGFP_TYPE_
1cd0: 43 55 52 52 45 4e 54 20 3d 20 30 3b 0d 0a 0d 0a  CURRENT = 0;....
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1d30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
1d40: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74  rivate const int
1d50: 20 53 5f 4f 4b 20 3d 20 30 3b 20 2f 2a 20 48 52   S_OK = 0; /* HR
1d60: 45 53 55 4c 54 20 2a 2f 0d 0a 20 20 20 20 20 20  ESULT */..      
1d70: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1d80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1de0: 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
1df0: 65 20 57 69 6e 64 6f 77 73 20 4d 65 74 68 6f 64  e Windows Method
1e00: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  s..            [
1e10: 44 6c 6c 49 6d 70 6f 72 74 28 22 73 68 66 6f 6c  DllImport("shfol
1e20: 64 65 72 2e 64 6c 6c 22 2c 0d 0a 20 20 20 20 20  der.dll",..     
1e30: 20 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69             Calli
1e40: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e50: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e60: 2e 57 69 6e 61 70 69 2c 0d 0a 20 20 20 20 20 20  .Winapi,..      
1e70: 20 20 20 20 20 20 20 20 20 20 43 68 61 72 53 65            CharSe
1e80: 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75 74 6f  t = CharSet.Auto
1e90: 2c 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67  , BestFitMapping
1ea0: 20 3d 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   = false,..     
1eb0: 20 20 20 20 20 20 20 20 20 20 20 54 68 72 6f 77             Throw
1ec0: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
1ed0: 20 3d 20 74 72 75 65 2c 20 53 65 74 4c 61 73 74   = true, SetLast
1ee0: 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a  Error = true)]..
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
1f00: 61 74 65 20 73 74 61 74 69 63 20 65 78 74 65 72  ate static exter
1f10: 6e 20 69 6e 74 20 53 48 47 65 74 46 6f 6c 64 65  n int SHGetFolde
1f20: 72 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  rPath(..        
1f30: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 68          IntPtr h
1f40: 57 6e 64 4f 77 6e 65 72 2c 20 69 6e 74 20 6e 46  WndOwner, int nF
1f50: 6f 6c 64 65 72 2c 20 49 6e 74 50 74 72 20 68 54  older, IntPtr hT
1f60: 6f 6b 65 6e 2c 20 75 69 6e 74 20 66 6c 61 67 73  oken, uint flags
1f70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1f80: 20 20 20 49 6e 74 50 74 72 20 62 75 66 66 65 72     IntPtr buffer
1f90: 20 2f 2a 20 3e 3d 20 4d 41 58 5f 50 41 54 48 20   /* >= MAX_PATH 
1fa0: 2a 2f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  */);..          
1fb0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1fc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2010: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
2020: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 57 72  region Public Wr
2030: 61 70 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  apper Methods.. 
2040: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2050: 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
2060: 47 65 74 53 79 73 74 65 6d 44 69 72 65 63 74 6f  GetSystemDirecto
2070: 72 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry()..          
2080: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2090: 20 20 20 20 20 49 6e 74 50 74 72 20 62 75 66 66       IntPtr buff
20a0: 65 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  er = IntPtr.Zero
20b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
20c0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
20d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f0: 20 62 75 66 66 65 72 20 3d 20 4d 61 72 73 68 61   buffer = Marsha
2100: 6c 2e 41 6c 6c 6f 63 43 6f 54 61 73 6b 4d 65 6d  l.AllocCoTaskMem
2110: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2120: 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f             sizeo
2130: 66 28 63 68 61 72 29 20 2a 20 28 4d 41 58 5f 50  f(char) * (MAX_P
2140: 41 54 48 20 2b 20 31 29 29 3b 0d 0a 0d 0a 20 20  ATH + 1));....  
2150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2160: 20 20 69 66 20 28 62 75 66 66 65 72 20 21 3d 20    if (buffer != 
2170: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2190: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
21b0: 28 53 48 47 65 74 46 6f 6c 64 65 72 50 61 74 68  (SHGetFolderPath
21c0: 28 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20  (IntPtr.Zero,.. 
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
21f0: 53 49 44 4c 5f 53 59 53 54 45 4d 58 38 36 2c 20  SIDL_SYSTEMX86, 
2200: 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20  IntPtr.Zero,..  
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 48                SH
2230: 47 46 50 5f 54 59 50 45 5f 43 55 52 52 45 4e 54  GFP_TYPE_CURRENT
2240: 2c 20 62 75 66 66 65 72 29 20 3d 3d 20 53 5f 4f  , buffer) == S_O
2250: 4b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  K)..            
2260: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2280: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2290: 6e 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53  n Marshal.PtrToS
22a0: 74 72 69 6e 67 41 75 74 6f 28 62 75 66 66 65 72  tringAuto(buffer
22b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
22c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
22f0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2300: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2310: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20  Exception e)..  
2320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2340: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2360: 54 4f 44 4f 3a 20 49 73 20 74 68 69 73 20 74 68  TODO: Is this th
2370: 65 20 72 69 67 68 74 20 65 72 72 6f 72 20 68 61  e right error ha
2380: 6e 64 6c 69 6e 67 20 73 6f 6c 75 74 69 6f 6e 0d  ndling solution.
2390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23a0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f       //       to
23b0: 20 75 73 65 20 61 74 20 74 68 69 73 20 70 6f 69   use at this poi
23c0: 6e 74 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt?..           
23d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
23e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f0: 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
2400: 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
2410: 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68  ority.MediumHigh
2420: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2430: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
2440: 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
2450: 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
2460: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
2470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2480: 20 22 43 6f 75 6c 64 20 6e 6f 74 20 67 65 74 20   "Could not get 
2490: 73 79 73 74 65 6d 20 64 69 72 65 63 74 6f 72 79  system directory
24a0: 3a 20 7b 30 7d 22 2c 20 65 29 2c 0d 0a 20 20 20  : {0}", e),..   
24b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c0: 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
24d0: 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
24e0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
24f0: 77 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w;..            
2500: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2510: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
2520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2530: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2540: 20 20 20 20 20 20 20 69 66 20 28 62 75 66 66 65         if (buffe
2550: 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r != IntPtr.Zero
2560: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2570: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2590: 20 20 4d 61 72 73 68 61 6c 2e 46 72 65 65 43 6f    Marshal.FreeCo
25a0: 54 61 73 6b 4d 65 6d 28 62 75 66 66 65 72 29 3b  TaskMem(buffer);
25b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25c0: 20 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72            buffer
25d0: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
25e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2600: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2610: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2620: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
2630: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2640: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2650: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2660: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2670: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2680: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
26d0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
26e0: 69 76 61 74 65 20 48 65 6c 70 65 72 20 43 6c 61  ivate Helper Cla
26f0: 73 73 65 73 0d 0a 20 20 20 20 20 20 20 20 23 72  sses..        #r
2700: 65 67 69 6f 6e 20 4f 62 6a 65 63 74 48 65 6c 70  egion ObjectHelp
2710: 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20  er Class..      
2720: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2730: 20 63 6c 61 73 73 20 4f 62 6a 65 63 74 48 65 6c   class ObjectHel
2740: 70 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  per..        {..
2750: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2760: 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 41  ic static bool A
2770: 72 65 45 71 75 61 6c 28 0d 0a 20 20 20 20 20 20  reEqual(..      
2780: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
2790: 20 76 61 6c 75 65 31 2c 0d 0a 20 20 20 20 20 20   value1,..      
27a0: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
27b0: 20 76 61 6c 75 65 32 0d 0a 20 20 20 20 20 20 20   value2..       
27c0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
27d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
27e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
27f0: 76 61 6c 75 65 31 20 3d 3d 20 6e 75 6c 6c 29 20  value1 == null) 
2800: 7c 7c 20 28 76 61 6c 75 65 32 20 3d 3d 20 6e 75  || (value2 == nu
2810: 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ll))..          
2820: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2830: 20 28 28 76 61 6c 75 65 31 20 3d 3d 20 6e 75 6c   ((value1 == nul
2840: 6c 29 20 26 26 20 28 76 61 6c 75 65 32 20 3d 3d  l) && (value2 ==
2850: 20 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20   null));....    
2860: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2870: 4f 62 6a 65 63 74 2e 52 65 66 65 72 65 6e 63 65  Object.Reference
2880: 45 71 75 61 6c 73 28 76 61 6c 75 65 31 2c 20 76  Equals(value1, v
2890: 61 6c 75 65 32 29 29 0d 0a 20 20 20 20 20 20 20  alue2))..       
28a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
28b0: 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20  urn true;....   
28c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
28d0: 75 72 6e 20 76 61 6c 75 65 31 2e 45 71 75 61 6c  urn value1.Equal
28e0: 73 28 76 61 6c 75 65 32 29 3b 0d 0a 20 20 20 20  s(value2);..    
28f0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2900: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
2910: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2920: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2970: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 41         #region A
2980: 6e 79 50 61 69 72 20 43 6c 61 73 73 0d 0a 20 20  nyPair Class..  
2990: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
29a0: 61 6c 65 64 20 63 6c 61 73 73 20 41 6e 79 50 61  aled class AnyPa
29b0: 69 72 3c 54 31 2c 20 54 32 3e 20 3a 0d 0a 20 20  ir<T1, T2> :..  
29c0: 20 20 20 20 20 20 20 20 20 20 49 43 6f 6d 70 61            ICompa
29d0: 72 65 72 3c 41 6e 79 50 61 69 72 3c 54 31 2c 20  rer<AnyPair<T1, 
29e0: 54 32 3e 3e 2c 0d 0a 20 20 20 20 20 20 20 20 20  T2>>,..         
29f0: 20 20 20 49 43 6f 6d 70 61 72 61 62 6c 65 3c 41     IComparable<A
2a00: 6e 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 3e 2c  nyPair<T1, T2>>,
2a10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 43  ..            IC
2a20: 6f 6d 70 61 72 61 62 6c 65 2c 0d 0a 20 20 20 20  omparable,..    
2a30: 20 20 20 20 20 20 20 20 49 45 71 75 61 74 61 62          IEquatab
2a40: 6c 65 3c 41 6e 79 50 61 69 72 3c 54 31 2c 20 54  le<AnyPair<T1, T
2a50: 32 3e 3e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  2>>,..          
2a60: 20 20 49 45 71 75 61 6c 69 74 79 43 6f 6d 70 61    IEqualityCompa
2a70: 72 65 72 3c 41 6e 79 50 61 69 72 3c 54 31 2c 20  rer<AnyPair<T1, 
2a80: 54 32 3e 3e 2c 0d 0a 20 20 20 20 20 20 20 20 20  T2>>,..         
2a90: 20 20 20 49 43 6c 6f 6e 65 61 62 6c 65 0d 0a 20     ICloneable.. 
2aa0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2ab0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
2ac0: 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72  blic Constructor
2ad0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  s..            /
2ae0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
2af0: 2f 20 57 41 52 4e 49 4e 47 3a 20 54 68 69 73 20  / WARNING: This 
2b00: 63 6f 6e 73 74 72 75 63 74 6f 72 20 70 72 6f 64  constructor prod
2b10: 75 63 65 73 20 61 6e 20 69 6d 6d 75 74 61 62 6c  uces an immutabl
2b20: 65 20 22 65 6d 70 74 79 22 20 70 61 69 72 0d 0a  e "empty" pair..
2b30: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2b40: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 2e 0d          object..
2b50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
2b60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2b70: 6c 69 63 20 41 6e 79 50 61 69 72 28 29 0d 0a 20  lic AnyPair().. 
2b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a                 :
2b90: 20 62 61 73 65 28 29 0d 0a 20 20 20 20 20 20 20   base()..       
2ba0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2bb0: 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
2bc0: 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
2bd0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2be0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c30: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 41          public A
2c40: 6e 79 50 61 69 72 28 54 31 20 78 29 0d 0a 20 20  nyPair(T1 x)..  
2c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
2c60: 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
2c70: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c80: 20 20 20 20 20 20 20 74 68 69 73 2e 78 20 3d 20         this.x = 
2c90: 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x;..            
2ca0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2cb0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2d00: 20 20 20 20 70 75 62 6c 69 63 20 41 6e 79 50 61      public AnyPa
2d10: 69 72 28 54 31 20 78 2c 20 54 32 20 79 29 0d 0a  ir(T1 x, T2 y)..
2d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d30: 3a 20 74 68 69 73 28 78 29 0d 0a 20 20 20 20 20  : this(x)..     
2d40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2d50: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 79            this.y
2d60: 20 3d 20 79 3b 0d 0a 20 20 20 20 20 20 20 20 20   = y;..         
2d70: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2d80: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2de0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
2df0: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
2e00: 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
2e10: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 54 31        private T1
2e20: 20 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   x;..           
2e30: 20 70 75 62 6c 69 63 20 54 31 20 58 0d 0a 20 20   public T1 X..  
2e40: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
2e60: 20 7b 20 72 65 74 75 72 6e 20 78 3b 20 7d 0d 0a   { return x; }..
2e70: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2e80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ee0: 70 72 69 76 61 74 65 20 54 32 20 79 3b 0d 0a 20  private T2 y;.. 
2ef0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2f00: 63 20 54 32 20 59 0d 0a 20 20 20 20 20 20 20 20  c T2 Y..        
2f10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2f20: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
2f30: 75 72 6e 20 79 3b 20 7d 0d 0a 20 20 20 20 20 20  urn y; }..      
2f40: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2f50: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
2f60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fb0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2fc0: 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74 65 6d    #region System
2fd0: 2e 4f 62 6a 65 63 74 20 4f 76 65 72 72 69 64 65  .Object Override
2fe0: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
2ff0: 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 62  ublic override b
3000: 6f 6f 6c 20 45 71 75 61 6c 73 28 0d 0a 20 20 20  ool Equals(..   
3010: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a               obj
3020: 65 63 74 20 6f 62 6a 0d 0a 20 20 20 20 20 20 20  ect obj..       
3030: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
3040: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3050: 20 20 20 20 20 20 20 20 20 20 20 41 6e 79 50 61             AnyPa
3060: 69 72 3c 54 31 2c 20 54 32 3e 20 61 6e 79 50 61  ir<T1, T2> anyPa
3070: 69 72 20 3d 20 6f 62 6a 20 61 73 20 41 6e 79 50  ir = obj as AnyP
3080: 61 69 72 3c 54 31 2c 20 54 32 3e 3b 0d 0a 0d 0a  air<T1, T2>;....
3090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a0: 69 66 20 28 61 6e 79 50 61 69 72 20 21 3d 20 6e  if (anyPair != n
30b0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
30c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
30d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
30e0: 28 21 4f 62 6a 65 63 74 48 65 6c 70 65 72 2e 41  (!ObjectHelper.A
30f0: 72 65 45 71 75 61 6c 28 58 2c 20 61 6e 79 50 61  reEqual(X, anyPa
3100: 69 72 2e 58 29 29 0d 0a 20 20 20 20 20 20 20 20  ir.X))..        
3110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3120: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
3130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3140: 20 20 20 20 20 69 66 20 28 21 4f 62 6a 65 63 74       if (!Object
3150: 48 65 6c 70 65 72 2e 41 72 65 45 71 75 61 6c 28  Helper.AreEqual(
3160: 59 2c 20 61 6e 79 50 61 69 72 2e 59 29 29 0d 0a  Y, anyPair.Y))..
3170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3180: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
3190: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
31a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
31b0: 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  urn true;..     
31c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
31d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
31f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
3200: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
3210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3250: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
3260: 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
3270: 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
3280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
3290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32a0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
32b0: 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 54 68       // TODO: Th
32c0: 65 20 64 65 6c 69 6d 69 74 65 72 20 68 65 72 65  e delimiter here
32d0: 20 69 73 20 68 61 72 64 2d 63 6f 64 65 64 20 74   is hard-coded t
32e0: 6f 20 61 20 73 70 61 63 65 2e 20 20 54 68 69 73  o a space.  This
32f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3300: 20 20 2f 2f 20 20 20 20 20 20 20 6d 61 79 20 6e    //       may n
3310: 65 65 64 20 74 6f 20 62 65 20 63 68 61 6e 67 65  eed to be change
3320: 64 2c 20 65 2e 67 2e 20 69 66 20 74 68 65 20 75  d, e.g. if the u
3330: 73 65 2d 63 61 73 65 73 20 66 6f 72 0d 0a 20 20  se-cases for..  
3340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3350: 20 20 20 20 20 20 20 74 68 69 73 20 63 6c 61 73         this clas
3360: 73 20 63 68 61 6e 67 65 2e 0d 0a 20 20 20 20 20  s change...     
3370: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
3380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3390: 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72  eturn String.For
33a0: 6d 61 74 28 22 7b 30 7d 20 7b 31 7d 22 2c 20 58  mat("{0} {1}", X
33b0: 2c 20 59 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  , Y);..         
33c0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
33d0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
33e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3410: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
3420: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
3430: 65 72 72 69 64 65 20 69 6e 74 20 47 65 74 48 61  erride int GetHa
3440: 73 68 43 6f 64 65 28 29 0d 0a 20 20 20 20 20 20  shCode()..      
3450: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3460: 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
3470: 75 6c 74 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20  ult = 0;..      
3480: 20 20 20 20 20 20 20 20 20 20 54 31 20 78 20 3d            T1 x =
3490: 20 58 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20   X;....         
34a0: 20 20 20 20 20 20 20 69 66 20 28 78 20 21 3d 20         if (x != 
34b0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
34c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
34d0: 74 20 5e 3d 20 78 2e 47 65 74 48 61 73 68 43 6f  t ^= x.GetHashCo
34e0: 64 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  de();....       
34f0: 20 20 20 20 20 20 20 20 20 54 32 20 79 20 3d 20           T2 y = 
3500: 59 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  Y;....          
3510: 20 20 20 20 20 20 69 66 20 28 79 20 21 3d 20 6e        if (y != n
3520: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
3530: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
3540: 20 5e 3d 20 79 2e 47 65 74 48 61 73 68 43 6f 64   ^= y.GetHashCod
3550: 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
3560: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
3570: 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
3580: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
3590: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
35a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
35b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3600: 23 72 65 67 69 6f 6e 20 49 43 6f 6d 70 61 72 65  #region ICompare
3610: 72 3c 41 6e 79 50 61 69 72 3c 54 31 2c 54 32 3e  r<AnyPair<T1,T2>
3620: 3e 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  > Members..     
3630: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e         public in
3640: 74 20 43 6f 6d 70 61 72 65 28 0d 0a 20 20 20 20  t Compare(..    
3650: 20 20 20 20 20 20 20 20 20 20 20 20 41 6e 79 50              AnyP
3660: 61 69 72 3c 54 31 2c 20 54 32 3e 20 78 2c 0d 0a  air<T1, T2> x,..
3670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3680: 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 20  AnyPair<T1, T2> 
3690: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
36a0: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
36b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36c0: 20 20 20 20 20 69 66 20 28 28 78 20 3d 3d 20 6e       if ((x == n
36d0: 75 6c 6c 29 20 26 26 20 28 79 20 3d 3d 20 6e 75  ull) && (y == nu
36e0: 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ll))..          
36f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3700: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
3710: 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  urn 0;..        
3720: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3730: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
3740: 69 66 20 28 78 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  if (x == null)..
3750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3760: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
3770: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 2d 31         return -1
3780: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
3790: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
37a0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 79        else if (y
37b0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
37c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37e0: 20 20 72 65 74 75 72 6e 20 31 3b 0d 0a 20 20 20    return 1;..   
37f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
3800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3810: 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
3820: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3830: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
3840: 20 72 65 73 75 6c 74 20 3d 20 43 6f 6d 70 61 72   result = Compar
3850: 65 72 3c 54 31 3e 2e 44 65 66 61 75 6c 74 2e 43  er<T1>.Default.C
3860: 6f 6d 70 61 72 65 28 78 2e 58 2c 20 79 2e 58 29  ompare(x.X, y.X)
3870: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3880: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73           if (res
3890: 75 6c 74 20 21 3d 20 30 29 0d 0a 20 20 20 20 20  ult != 0)..     
38a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38b0: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
38c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
38d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
38e0: 43 6f 6d 70 61 72 65 72 3c 54 32 3e 2e 44 65 66  Comparer<T2>.Def
38f0: 61 75 6c 74 2e 43 6f 6d 70 61 72 65 28 78 2e 59  ault.Compare(x.Y
3900: 2c 20 79 2e 59 29 3b 0d 0a 20 20 20 20 20 20 20  , y.Y);..       
3910: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
3920: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3930: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
3940: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
3950: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3990: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
39a0: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 43 6f 6d      #region ICom
39b0: 70 61 72 61 62 6c 65 3c 41 6e 79 50 61 69 72 3c  parable<AnyPair<
39c0: 54 31 2c 54 32 3e 3e 20 4d 65 6d 62 65 72 73 0d  T1,T2>> Members.
39d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
39e0: 6c 69 63 20 69 6e 74 20 43 6f 6d 70 61 72 65 54  lic int CompareT
39f0: 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o(..            
3a00: 20 20 20 20 41 6e 79 50 61 69 72 3c 54 31 2c 20      AnyPair<T1, 
3a10: 54 32 3e 20 6f 74 68 65 72 0d 0a 20 20 20 20 20  T2> other..     
3a20: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
3a30: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
3a50: 75 72 6e 20 43 6f 6d 70 61 72 65 28 74 68 69 73  urn Compare(this
3a60: 2c 20 6f 74 68 65 72 29 3b 0d 0a 20 20 20 20 20  , other);..     
3a70: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
3a80: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
3a90: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3aa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ab0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ae0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
3af0: 20 20 20 23 72 65 67 69 6f 6e 20 49 43 6f 6d 70     #region IComp
3b00: 61 72 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a  arable Members..
3b10: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
3b20: 69 63 20 69 6e 74 20 43 6f 6d 70 61 72 65 54 6f  ic int CompareTo
3b30: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
3b40: 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a 0d 0a 20     object obj.. 
3b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
3b60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
3b70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3b80: 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32 3e   AnyPair<T1, T2>
3b90: 20 61 6e 79 50 61 69 72 20 3d 20 6f 62 6a 20 61   anyPair = obj a
3ba0: 73 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32  s AnyPair<T1, T2
3bb0: 3e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  >;....          
3bc0: 20 20 20 20 20 20 69 66 20 28 61 6e 79 50 61 69        if (anyPai
3bd0: 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  r == null)..    
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bf0: 74 68 72 6f 77 20 6e 65 77 20 41 72 67 75 6d 65  throw new Argume
3c00: 6e 74 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a  ntException();..
3c10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3c20: 20 20 72 65 74 75 72 6e 20 43 6f 6d 70 61 72 65    return Compare
3c30: 54 6f 28 61 6e 79 50 61 69 72 29 3b 0d 0a 20 20  To(anyPair);..  
3c40: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3c50: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
3c60: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
3c70: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3cb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3cc0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 45        #region IE
3cd0: 71 75 61 74 61 62 6c 65 3c 41 6e 79 50 61 69 72  quatable<AnyPair
3ce0: 3c 54 31 2c 54 32 3e 3e 20 4d 65 6d 62 65 72 73  <T1,T2>> Members
3cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
3d00: 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73  blic bool Equals
3d10: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
3d20: 20 20 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54     AnyPair<T1, T
3d30: 32 3e 20 6f 74 68 65 72 0d 0a 20 20 20 20 20 20  2> other..      
3d40: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
3d50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3d70: 72 6e 20 43 6f 6d 70 61 72 65 54 6f 28 6f 74 68  rn CompareTo(oth
3d80: 65 72 29 20 3d 3d 20 30 3b 0d 0a 20 20 20 20 20  er) == 0;..     
3d90: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
3da0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
3db0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3e00: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
3e10: 20 20 20 23 72 65 67 69 6f 6e 20 49 45 71 75 61     #region IEqua
3e20: 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c 41 6e 79  lityComparer<Any
3e30: 50 61 69 72 3c 54 31 2c 54 32 3e 3e 20 4d 65 6d  Pair<T1,T2>> Mem
3e40: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  bers..          
3e50: 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45 71    public bool Eq
3e60: 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
3e70: 20 20 20 20 20 20 20 41 6e 79 50 61 69 72 3c 54         AnyPair<T
3e80: 31 2c 20 54 32 3e 20 78 2c 0d 0a 20 20 20 20 20  1, T2> x,..     
3e90: 20 20 20 20 20 20 20 20 20 20 20 41 6e 79 50 61             AnyPa
3ea0: 69 72 3c 54 31 2c 20 54 32 3e 20 79 0d 0a 20 20  ir<T1, T2> y..  
3eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
3ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
3ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ee0: 72 65 74 75 72 6e 20 4f 62 6a 65 63 74 48 65 6c  return ObjectHel
3ef0: 70 65 72 2e 41 72 65 45 71 75 61 6c 28 78 2c 20  per.AreEqual(x, 
3f00: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
3f10: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
3f20: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f60: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
3f70: 20 20 20 20 20 70 75 62 6c 69 63 20 69 6e 74 20       public int 
3f80: 47 65 74 48 61 73 68 43 6f 64 65 28 0d 0a 20 20  GetHashCode(..  
3f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6e                An
3fa0: 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 20 6f 62  yPair<T1, T2> ob
3fb0: 6a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  j..             
3fc0: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
3fd0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
3fe0: 20 20 20 20 20 72 65 74 75 72 6e 20 28 6f 62 6a       return (obj
3ff0: 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6f 62 6a 2e   != null) ? obj.
4000: 47 65 74 48 61 73 68 43 6f 64 65 28 29 20 3a 20  GetHashCode() : 
4010: 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0;..            
4020: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
4030: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
4040: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
4050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4090: 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
40a0: 69 6f 6e 20 49 43 6c 6f 6e 65 61 62 6c 65 20 4d  ion ICloneable M
40b0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
40c0: 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a 65 63      public objec
40d0: 74 20 43 6c 6f 6e 65 28 29 0d 0a 20 20 20 20 20  t Clone()..     
40e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
40f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
4100: 20 6e 65 77 20 41 6e 79 50 61 69 72 3c 54 31 2c   new AnyPair<T1,
4110: 20 54 32 3e 28 58 2c 20 59 29 3b 0d 0a 20 20 20   T2>(X, Y);..   
4120: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
4130: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
4140: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
4150: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
4160: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
4170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
41a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
41b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
41c0: 23 72 65 67 69 6f 6e 20 54 72 61 63 65 4f 70 73  #region TraceOps
41d0: 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20   Class..        
41e0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 63  private static c
41f0: 6c 61 73 73 20 54 72 61 63 65 4f 70 73 0d 0a 20  lass TraceOps.. 
4200: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
4210: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
4220: 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d  ivate Constants.
4230: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
4240: 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
4250: 67 20 44 65 66 61 75 6c 74 44 65 62 75 67 46 6f  g DefaultDebugFo
4260: 72 6d 61 74 20 3d 20 22 23 7b 30 3a 30 30 30 7d  rmat = "#{0:000}
4270: 20 40 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a 20   @ {1}: {2}";.. 
4280: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
4290: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
42a0: 44 65 66 61 75 6c 74 54 72 61 63 65 46 6f 72 6d  DefaultTraceForm
42b0: 61 74 20 3d 20 22 23 7b 30 3a 30 30 30 7d 20 40  at = "#{0:000} @
42c0: 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a 0d 0a 20   {1}: {2}";.... 
42d0: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
42e0: 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
42f0: 49 73 6f 38 36 30 31 44 61 74 65 54 69 6d 65 4f  Iso8601DateTimeO
4300: 75 74 70 75 74 46 6f 72 6d 61 74 20 3d 0d 0a 20  utputFormat =.. 
4310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
4320: 79 79 79 79 2e 4d 4d 2e 64 64 54 48 48 3a 6d 6d  yyyy.MM.ddTHH:mm
4330: 3a 73 73 2e 66 66 66 66 66 66 66 22 3b 0d 0a 20  :ss.fffffff";.. 
4340: 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
4350: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
4360: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
43a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
43b0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
43c0: 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20 44  Private Static D
43d0: 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ata..           
43e0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
43f0: 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74 20  object syncRoot 
4400: 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d  = new object();.
4410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
4420: 76 61 74 65 20 73 74 61 74 69 63 20 6c 6f 6e 67  vate static long
4430: 20 6e 65 78 74 44 65 62 75 67 49 64 3b 0d 0a 20   nextDebugId;.. 
4440: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
4450: 74 65 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 6e  te static long n
4460: 65 78 74 54 72 61 63 65 49 64 3b 0d 0a 20 20 20  extTraceId;..   
4470: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
4480: 20 73 74 61 74 69 63 20 49 4c 69 73 74 3c 54 72   static IList<Tr
4490: 61 63 65 4c 69 73 74 65 6e 65 72 3e 20 64 65 62  aceListener> deb
44a0: 75 67 4c 69 73 74 65 6e 65 72 73 3b 0d 0a 20 20  ugListeners;..  
44b0: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
44c0: 65 20 73 74 61 74 69 63 20 54 72 61 63 65 50 72  e static TracePr
44d0: 69 6f 72 69 74 79 20 64 65 62 75 67 50 72 69 6f  iority debugPrio
44e0: 72 69 74 79 20 3d 20 54 72 61 63 65 50 72 69 6f  rity = TracePrio
44f0: 72 69 74 79 2e 44 65 66 61 75 6c 74 3b 0d 0a 20  rity.Default;.. 
4500: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
4510: 74 65 20 73 74 61 74 69 63 20 54 72 61 63 65 50  te static TraceP
4520: 72 69 6f 72 69 74 79 20 74 72 61 63 65 50 72 69  riority tracePri
4530: 6f 72 69 74 79 20 3d 20 54 72 61 63 65 50 72 69  ority = TracePri
4540: 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 3b 0d 0a  ority.Default;..
4550: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
4560: 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
4570: 67 20 64 65 62 75 67 46 6f 72 6d 61 74 20 3d 20  g debugFormat = 
4580: 44 65 66 61 75 6c 74 44 65 62 75 67 46 6f 72 6d  DefaultDebugForm
4590: 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at;..           
45a0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
45b0: 73 74 72 69 6e 67 20 74 72 61 63 65 46 6f 72 6d  string traceForm
45c0: 61 74 20 3d 20 44 65 66 61 75 6c 74 54 72 61 63  at = DefaultTrac
45d0: 65 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20 20  eFormat;..      
45e0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
45f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4640: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
4650: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
4660: 63 20 53 74 61 74 69 63 20 50 72 6f 70 65 72 74  c Static Propert
4670: 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ies..           
4680: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 54   public static T
4690: 72 61 63 65 50 72 69 6f 72 69 74 79 20 44 65 62  racePriority Deb
46a0: 75 67 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20  ugPriority..    
46b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
46c0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
46d0: 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
46e0: 20 7b 20 72 65 74 75 72 6e 20 64 65 62 75 67 50   { return debugP
46f0: 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d 0a 20 20  riority; } }..  
4700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
4710: 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f  t { lock (syncRo
4720: 6f 74 29 20 7b 20 64 65 62 75 67 50 72 69 6f 72  ot) { debugPrior
4730: 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d 20 7d  ity = value; } }
4740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
4750: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
4760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
47a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
47b0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
47c0: 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 54 72  TracePriority Tr
47d0: 61 63 65 50 72 69 6f 72 69 74 79 0d 0a 20 20 20  acePriority..   
47e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
47f0: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
4800: 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74  { lock (syncRoot
4810: 29 20 7b 20 72 65 74 75 72 6e 20 74 72 61 63 65  ) { return trace
4820: 50 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d 0a 20  Priority; } }.. 
4830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
4840: 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52  et { lock (syncR
4850: 6f 6f 74 29 20 7b 20 74 72 61 63 65 50 72 69 6f  oot) { tracePrio
4860: 72 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d 20  rity = value; } 
4870: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
4880: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
48d0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
48e0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
48f0: 20 73 74 72 69 6e 67 20 44 65 62 75 67 46 6f 72   string DebugFor
4900: 6d 61 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mat..           
4910: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
4920: 20 20 20 20 67 65 74 20 7b 20 6c 6f 63 6b 20 28      get { lock (
4930: 73 79 6e 63 52 6f 6f 74 29 20 7b 20 72 65 74 75  syncRoot) { retu
4940: 72 6e 20 64 65 62 75 67 46 6f 72 6d 61 74 3b 20  rn debugFormat; 
4950: 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  } }..           
4960: 20 20 20 20 20 73 65 74 20 7b 20 6c 6f 63 6b 20       set { lock 
4970: 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20 64 65 62  (syncRoot) { deb
4980: 75 67 46 6f 72 6d 61 74 20 3d 20 76 61 6c 75 65  ugFormat = value
4990: 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ; } }..         
49a0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
49b0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
49c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
49f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
4a00: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
4a10: 61 74 69 63 20 73 74 72 69 6e 67 20 54 72 61 63  atic string Trac
4a20: 65 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20 20  eFormat..       
4a30: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4a40: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 6c 6f          get { lo
4a50: 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20  ck (syncRoot) { 
4a60: 72 65 74 75 72 6e 20 74 72 61 63 65 46 6f 72 6d  return traceForm
4a70: 61 74 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20  at; } }..       
4a80: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6c           set { l
4a90: 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b  ock (syncRoot) {
4aa0: 20 74 72 61 63 65 46 6f 72 6d 61 74 20 3d 20 76   traceFormat = v
4ab0: 61 6c 75 65 3b 20 7d 20 7d 0d 0a 20 20 20 20 20  alue; } }..     
4ac0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
4ad0: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
4ae0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4b30: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
4b40: 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65 72     #region Inter
4b50: 61 63 74 69 76 65 20 53 75 70 70 6f 72 74 20 4d  active Support M
4b60: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
4b70: 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
4b80: 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
4b90: 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
4ba0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
4bb0: 69 63 20 73 74 61 74 69 63 20 44 69 61 6c 6f 67  ic static Dialog
4bc0: 52 65 73 75 6c 74 20 53 68 6f 77 4d 65 73 73 61  Result ShowMessa
4bd0: 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge(..           
4be0: 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
4bf0: 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74 79  ty tracePriority
4c00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4c10: 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b     TraceCallback
4c20: 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
4c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4c40: 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 74   TraceCallback t
4c50: 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  raceCallback,.. 
4c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
4c70: 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
4c80: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4c90: 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61 67     string messag
4ca0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
4cb0: 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65 67      string categ
4cc0: 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
4cd0: 20 20 20 20 20 20 4d 65 73 73 61 67 65 42 6f 78        MessageBox
4ce0: 42 75 74 74 6f 6e 73 20 62 75 74 74 6f 6e 73 2c  Buttons buttons,
4cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4d00: 20 20 4d 65 73 73 61 67 65 42 6f 78 49 63 6f 6e    MessageBoxIcon
4d10: 20 69 63 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20   icon..         
4d20: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
4d30: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4d40: 20 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67 52           DialogR
4d50: 65 73 75 6c 74 20 72 65 73 75 6c 74 20 3d 20 44  esult result = D
4d60: 69 61 6c 6f 67 52 65 73 75 6c 74 2e 4f 4b 3b 0d  ialogResult.OK;.
4d70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4d80: 20 20 20 44 65 62 75 67 41 6e 64 54 72 61 63 65     DebugAndTrace
4d90: 28 74 72 61 63 65 50 72 69 6f 72 69 74 79 2c 0d  (tracePriority,.
4da0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4db0: 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
4dc0: 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
4dd0: 6b 2c 20 6d 65 73 73 61 67 65 2c 20 63 61 74 65  k, message, cate
4de0: 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
4df0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 79            if (Sy
4e00: 73 74 65 6d 49 6e 66 6f 72 6d 61 74 69 6f 6e 2e  stemInformation.
4e10: 55 73 65 72 49 6e 74 65 72 61 63 74 69 76 65 29  UserInteractive)
4e20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4e30: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
4e40: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
4e50: 74 69 74 6c 65 20 3d 20 47 65 74 41 73 73 65 6d  title = GetAssem
4e60: 62 6c 79 54 69 74 6c 65 28 61 73 73 65 6d 62 6c  blyTitle(assembl
4e70: 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
4e80: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
4e90: 69 74 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  itle == null).. 
4ea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4eb0: 20 20 20 20 20 20 20 74 69 74 6c 65 20 3d 20 41         title = A
4ec0: 70 70 6c 69 63 61 74 69 6f 6e 2e 50 72 6f 64 75  pplication.Produ
4ed0: 63 74 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  ctName;....     
4ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4ef0: 65 73 75 6c 74 20 3d 20 4d 65 73 73 61 67 65 42  esult = MessageB
4f00: 6f 78 2e 53 68 6f 77 28 6d 65 73 73 61 67 65 2c  ox.Show(message,
4f10: 20 74 69 74 6c 65 2c 20 62 75 74 74 6f 6e 73 2c   title, buttons,
4f20: 20 69 63 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20   icon);....     
4f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
4f40: 65 62 75 67 41 6e 64 54 72 61 63 65 28 74 72 61  ebugAndTrace(tra
4f50: 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20 20  cePriority,..   
4f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4f70: 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
4f80: 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
4f90: 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
4fa0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
4fb0: 20 20 20 20 20 20 20 20 20 20 20 22 55 73 65 72             "User
4fc0: 20 63 68 6f 69 63 65 20 6f 66 20 7b 30 7d 2e 22   choice of {0}."
4fd0: 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 72 65 73  , ForDisplay(res
4fe0: 75 6c 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ult)),..        
4ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5000: 63 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  category);....  
5010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5020: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
5030: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5040: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
5050: 20 20 20 20 20 20 20 44 65 62 75 67 41 6e 64 54         DebugAndT
5060: 72 61 63 65 28 74 72 61 63 65 50 72 69 6f 72 69  race(tracePriori
5070: 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ty,..           
5080: 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
5090: 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
50a0: 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
50b0: 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
50c0: 20 20 20 20 20 20 20 20 20 20 20 22 44 65 66 61             "Defa
50d0: 75 6c 74 20 63 68 6f 69 63 65 20 6f 66 20 7b 30  ult choice of {0
50e0: 7d 2e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  }.", ForDisplay(
50f0: 72 65 73 75 6c 74 29 29 2c 0d 0a 20 20 20 20 20  result)),..     
5100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
5110: 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
5120: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5130: 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20  urn result;..   
5140: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5150: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
5160: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
5170: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
5180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
51a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
51b0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
51c0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54 72 61       #region Tra
51d0: 63 69 6e 67 20 53 75 70 70 6f 72 74 20 4d 65 74  cing Support Met
51e0: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20  hods..          
51f0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
5200: 76 6f 69 64 20 53 65 74 75 70 44 65 62 75 67 4c  void SetupDebugL
5210: 69 73 74 65 6e 65 72 73 28 29 0d 0a 20 20 20 20  isteners()..    
5220: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
5230: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
5240: 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20 3d 3d  ebugListeners ==
5250: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
5260: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
5270: 67 4c 69 73 74 65 6e 65 72 73 20 3d 20 6e 65 77  gListeners = new
5280: 20 4c 69 73 74 3c 54 72 61 63 65 4c 69 73 74 65   List<TraceListe
5290: 6e 65 72 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  ner>();....     
52a0: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
52b0: 4c 69 73 74 65 6e 65 72 73 2e 41 64 64 28 6e 65  Listeners.Add(ne
52c0: 77 20 43 6f 6e 73 6f 6c 65 54 72 61 63 65 4c 69  w ConsoleTraceLi
52d0: 73 74 65 6e 65 72 28 29 29 3b 0d 0a 20 20 20 20  stener());..    
52e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
52f0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
5300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
5340: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
5350: 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20 4e  ic static long N
5360: 65 78 74 44 65 62 75 67 49 64 28 29 0d 0a 20 20  extDebugId()..  
5370: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5380: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
5390: 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64 2e  urn Interlocked.
53a0: 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 6e 65  Increment(ref ne
53b0: 78 74 44 65 62 75 67 49 64 29 3b 0d 0a 20 20 20  xtDebugId);..   
53c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
53d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
53e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
53f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
5420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
5430: 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20  lic static long 
5440: 4e 65 78 74 54 72 61 63 65 49 64 28 29 0d 0a 20  NextTraceId().. 
5450: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
5470: 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
5480: 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 6e  .Increment(ref n
5490: 65 78 74 54 72 61 63 65 49 64 29 3b 0d 0a 20 20  extTraceId);..  
54a0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
54b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
54c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
5500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
5510: 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
5520: 6e 67 20 54 69 6d 65 53 74 61 6d 70 28 44 61 74  ng TimeStamp(Dat
5530: 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65 29 0d  eTime dateTime).
5540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
5550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5560: 72 65 74 75 72 6e 20 64 61 74 65 54 69 6d 65 2e  return dateTime.
5570: 54 6f 53 74 72 69 6e 67 28 49 73 6f 38 36 30 31  ToString(Iso8601
5580: 44 61 74 65 54 69 6d 65 4f 75 74 70 75 74 46 6f  DateTimeOutputFo
5590: 72 6d 61 74 29 3b 0d 0a 20 20 20 20 20 20 20 20  rmat);..        
55a0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
55b0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
55c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
55f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
5600: 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
5610: 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
5620: 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
5630: 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
5640: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74  public static st
5650: 72 69 6e 67 20 47 65 74 4d 65 74 68 6f 64 4e 61  ring GetMethodNa
5660: 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
5670: 20 20 20 20 20 53 74 61 63 6b 54 72 61 63 65 20       StackTrace 
5680: 73 74 61 63 6b 54 72 61 63 65 2c 0d 0a 20 20 20  stackTrace,..   
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
56a0: 20 6c 65 76 65 6c 0d 0a 20 20 20 20 20 20 20 20   level..        
56b0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
56c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
56d0: 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
56e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
56f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5700: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5720: 20 4e 4f 54 45 3a 20 49 66 20 61 20 76 61 6c 69   NOTE: If a vali
5730: 64 20 73 74 61 63 6b 20 74 72 61 63 65 20 77 61  d stack trace wa
5740: 73 20 6e 6f 74 20 73 75 70 70 6c 69 65 64 20 62  s not supplied b
5750: 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  y the..         
5760: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5770: 20 20 20 20 63 61 6c 6c 65 72 2c 20 63 72 65 61      caller, crea
5780: 74 65 20 6f 6e 65 20 6e 6f 77 20 62 61 73 65 64  te one now based
5790: 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 0d   on the current.
57a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
57b0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78       //       ex
57c0: 65 63 75 74 69 6f 6e 20 73 74 61 63 6b 2e 0d 0a  ecution stack...
57d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
57e0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
57f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
5800: 73 74 61 63 6b 54 72 61 63 65 20 3d 3d 20 6e 75  stackTrace == nu
5810: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
5820: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5840: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
5850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5860: 2f 2f 20 4e 4f 54 45 3a 20 47 72 61 62 20 74 68  // NOTE: Grab th
5870: 65 20 63 75 72 72 65 6e 74 20 65 78 65 63 75 74  e current execut
5880: 69 6f 6e 20 73 74 61 63 6b 2e 0d 0a 20 20 20 20  ion stack...    
5890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58a0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
58b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
58c0: 73 74 61 63 6b 54 72 61 63 65 20 3d 20 6e 65 77  stackTrace = new
58d0: 20 53 74 61 63 6b 54 72 61 63 65 28 29 3b 0d 0a   StackTrace();..
58e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
58f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
5900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5910: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
5920: 6c 77 61 79 73 20 73 6b 69 70 20 74 68 69 73 20  lways skip this 
5930: 63 61 6c 6c 20 66 72 61 6d 65 20 77 68 65 6e 20  call frame when 
5940: 77 65 20 63 61 70 74 75 72 65 0d 0a 20 20 20 20  we capture..    
5950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5960: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
5970: 20 73 74 61 63 6b 20 74 72 61 63 65 2e 0d 0a 20   stack trace... 
5980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5990: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 20 20 20 6c 65 76 65 6c 2b 2b 3b 0d 0a 20 20 20     level++;..   
59c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59d0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
59e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
59f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a00: 20 20 2f 2f 20 4e 4f 54 45 3a 20 47 65 74 20 74    // NOTE: Get t
5a10: 68 65 20 73 70 65 63 69 66 69 65 64 20 73 74 61  he specified sta
5a20: 63 6b 20 66 72 61 6d 65 20 28 61 6c 77 61 79 73  ck frame (always
5a30: 20 61 64 64 20 6f 6e 65 20 74 6f 0d 0a 20 20 20   add one to..   
5a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a50: 20 2f 2f 20 20 20 20 20 20 20 73 6b 69 70 20 74   //       skip t
5a60: 68 69 73 20 6d 65 74 68 6f 64 29 2e 0d 0a 20 20  his method)...  
5a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a80: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5a90: 20 20 20 20 20 20 20 20 20 20 53 74 61 63 6b 46            StackF
5aa0: 72 61 6d 65 20 73 74 61 63 6b 46 72 61 6d 65 20  rame stackFrame 
5ab0: 3d 20 73 74 61 63 6b 54 72 61 63 65 2e 47 65 74  = stackTrace.Get
5ac0: 46 72 61 6d 65 28 6c 65 76 65 6c 29 3b 0d 0a 0d  Frame(level);...
5ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5ae0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5b00: 4e 4f 54 45 3a 20 47 65 74 20 74 68 65 20 6d 65  NOTE: Get the me
5b10: 74 68 6f 64 20 66 6f 72 20 74 68 65 20 73 74 61  thod for the sta
5b20: 63 6b 20 66 72 61 6d 65 2e 0d 0a 20 20 20 20 20  ck frame...     
5b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
5b40: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
5b50: 20 20 20 20 20 20 20 4d 65 74 68 6f 64 42 61 73         MethodBas
5b60: 65 20 6d 65 74 68 6f 64 42 61 73 65 20 3d 20 73  e methodBase = s
5b70: 74 61 63 6b 46 72 61 6d 65 2e 47 65 74 4d 65 74  tackFrame.GetMet
5b80: 68 6f 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  hod();....      
5b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5ba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5bb0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 47        // NOTE: G
5bc0: 65 74 20 74 68 65 20 74 79 70 65 20 66 6f 72 20  et the type for 
5bd0: 74 68 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20 20  the method...   
5be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bf0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
5c00: 20 20 20 20 20 20 20 20 20 54 79 70 65 20 74 79           Type ty
5c10: 70 65 20 3d 20 6d 65 74 68 6f 64 42 61 73 65 2e  pe = methodBase.
5c20: 44 65 63 6c 61 72 69 6e 67 54 79 70 65 3b 0d 0a  DeclaringType;..
5c30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5c40: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5c60: 20 4e 4f 54 45 3a 20 47 65 74 20 74 68 65 20 6e   NOTE: Get the n
5c70: 61 6d 65 20 6f 66 20 74 68 65 20 6d 65 74 68 6f  ame of the metho
5c80: 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
5c90: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cb0: 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 6d 65  string name = me
5cc0: 74 68 6f 64 42 61 73 65 2e 4e 61 6d 65 3b 0d 0a  thodBase.Name;..
5cd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5ce0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5d00: 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74 68   NOTE: Return th
5d10: 65 20 70 72 6f 70 65 72 6c 79 20 66 6f 72 6d 61  e properly forma
5d20: 74 74 65 64 20 72 65 73 75 6c 74 2e 0d 0a 20 20  tted result...  
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5d50: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5d60: 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
5d70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5d80: 20 20 20 20 20 20 20 20 20 22 7b 30 7d 7b 31 7d           "{0}{1}
5d90: 7b 32 7d 22 2c 20 74 79 70 65 2e 4e 61 6d 65 2c  {2}", type.Name,
5da0: 20 54 79 70 65 2e 44 65 6c 69 6d 69 74 65 72 2c   Type.Delimiter,
5db0: 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20   name);..       
5dc0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
5dd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
5de0: 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
5df0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
5e00: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
5e10: 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
5e20: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
5e30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
5e40: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
5e50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
5e60: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
5e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
5eb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
5ec0: 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20  lic static void 
5ed0: 44 65 62 75 67 43 6f 72 65 28 0d 0a 20 20 20 20  DebugCore(..    
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
5ef0: 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a 20 20 20  ng message,..   
5f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
5f10: 69 6e 67 20 63 61 74 65 67 6f 72 79 0d 0a 20 20  ing category..  
5f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
5f30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
5f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f50: 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20  lock (syncRoot) 
5f60: 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41 4c  /* TRANSACTIONAL
5f70: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
5f80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5f90: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
5fa0: 64 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20 21  debugListeners !
5fb0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
5fc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
5fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fe0: 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
5ff0: 28 54 72 61 63 65 4c 69 73 74 65 6e 65 72 20 6c  (TraceListener l
6000: 69 73 74 65 6e 65 72 20 69 6e 20 64 65 62 75 67  istener in debug
6010: 4c 69 73 74 65 6e 65 72 73 29 0d 0a 20 20 20 20  Listeners)..    
6020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6030: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6050: 20 20 20 6c 69 73 74 65 6e 65 72 2e 57 72 69 74     listener.Writ
6060: 65 4c 69 6e 65 28 6d 65 73 73 61 67 65 2c 20 63  eLine(message, c
6070: 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20  ategory);..     
6080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6090: 20 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72 2e         listener.
60a0: 46 6c 75 73 68 28 29 3b 0d 0a 20 20 20 20 20 20  Flush();..      
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
60c0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
60d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
60e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
60f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
6100: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
6110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
6150: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
6160: 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69  ublic static voi
6170: 64 20 54 72 61 63 65 43 6f 72 65 28 0d 0a 20 20  d TraceCore(..  
6180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
6190: 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a 20  ring message,.. 
61a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
61b0: 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d 0a  tring category..
61c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
61d0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
61e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
61f0: 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74    lock (syncRoot
6200: 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e  ) /* TRANSACTION
6210: 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  AL */..         
6220: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6240: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6250: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57        // NOTE: W
6260: 72 69 74 65 20 74 68 65 20 6d 65 73 73 61 67 65  rite the message
6270: 20 74 6f 20 61 6c 6c 20 74 68 65 20 61 63 74 69   to all the acti
6280: 76 65 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20  ve trace..      
6290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
62a0: 20 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72 73         listeners
62b0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
62c0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
62d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
62e0: 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28 6d  race.WriteLine(m
62f0: 65 73 73 61 67 65 2c 20 63 61 74 65 67 6f 72 79  essage, category
6300: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
6310: 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 46 6c          Trace.Fl
6320: 75 73 68 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ush();..        
6330: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
6340: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
6350: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
6360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
63a0: 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
63b0: 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
63c0: 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
63d0: 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
63e0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
63f0: 20 73 74 72 69 6e 67 20 44 65 62 75 67 41 6e 64   string DebugAnd
6400: 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
6410: 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
6420: 6f 72 69 74 79 20 74 72 61 63 65 50 72 69 6f 72  ority tracePrior
6430: 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ity,..          
6440: 20 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62        TraceCallb
6450: 61 63 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63  ack debugCallbac
6460: 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
6470: 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
6480: 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  k traceCallback,
6490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
64a0: 20 20 45 78 63 65 70 74 69 6f 6e 20 65 78 63 65    Exception exce
64b0: 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  ption,..        
64c0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63          string c
64d0: 61 74 65 67 6f 72 79 0d 0a 20 20 20 20 20 20 20  ategory..       
64e0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
64f0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6500: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65             if (e
6510: 78 63 65 70 74 69 6f 6e 20 21 3d 20 6e 75 6c 6c  xception != null
6520: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
6530: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44 65         return De
6540: 62 75 67 41 6e 64 54 72 61 63 65 28 74 72 61 63  bugAndTrace(trac
6550: 65 50 72 69 6f 72 69 74 79 2c 20 64 65 62 75 67  ePriority, debug
6560: 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
6570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6580: 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
6590: 2c 20 6e 65 77 20 53 74 61 63 6b 54 72 61 63 65  , new StackTrace
65a0: 28 65 78 63 65 70 74 69 6f 6e 2c 20 74 72 75 65  (exception, true
65b0: 29 2c 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20  ), 0,..         
65c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
65d0: 78 63 65 70 74 69 6f 6e 2e 54 6f 53 74 72 69 6e  xception.ToStrin
65e0: 67 28 29 2c 20 63 61 74 65 67 6f 72 79 29 3b 0d  g(), category);.
65f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6600: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
6610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
6620: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
6630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6670: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
6680: 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74   [MethodImpl(Met
6690: 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e  hodImplOptions.N
66a0: 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20  oInlining)]..   
66b0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
66c0: 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 44 65  static string De
66d0: 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
66e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
66f0: 61 63 65 50 72 69 6f 72 69 74 79 20 74 72 61 63  acePriority trac
6700: 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20 20 20  ePriority,..    
6710: 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
6720: 65 43 61 6c 6c 62 61 63 6b 20 64 65 62 75 67 43  eCallback debugC
6730: 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
6740: 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 43            TraceC
6750: 61 6c 6c 62 61 63 6b 20 74 72 61 63 65 43 61 6c  allback traceCal
6760: 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
6770: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d          string m
6780: 65 73 73 61 67 65 2c 0d 0a 20 20 20 20 20 20 20  essage,..       
6790: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
67a0: 63 61 74 65 67 6f 72 79 0d 0a 20 20 20 20 20 20  category..      
67b0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
67c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
67d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
67e0: 72 6e 20 44 65 62 75 67 41 6e 64 54 72 61 63 65  rn DebugAndTrace
67f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
6800: 20 20 20 20 20 20 20 74 72 61 63 65 50 72 69 6f         tracePrio
6810: 72 69 74 79 2c 20 64 65 62 75 67 43 61 6c 6c 62  rity, debugCallb
6820: 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
6830: 63 6b 2c 20 6e 75 6c 6c 2c 20 31 2c 0d 0a 20 20  ck, null, 1,..  
6840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6850: 20 20 6d 65 73 73 61 67 65 2c 20 63 61 74 65 67    message, categ
6860: 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ory);..         
6870: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
6880: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
6890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
68c0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
68d0: 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d         [MethodIm
68e0: 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74  pl(MethodImplOpt
68f0: 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29  ions.NoInlining)
6900: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ]..            p
6910: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
6920: 72 69 6e 67 20 44 65 62 75 67 41 6e 64 54 72 61  ring DebugAndTra
6930: 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
6940: 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
6950: 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74 79  ty tracePriority
6960: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6970: 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b     TraceCallback
6980: 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
6990: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
69a0: 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 74   TraceCallback t
69b0: 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  raceCallback,.. 
69c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
69d0: 74 61 63 6b 54 72 61 63 65 20 73 74 61 63 6b 54  tackTrace stackT
69e0: 72 61 63 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  race,..         
69f0: 20 20 20 20 20 20 20 69 6e 74 20 6c 65 76 65 6c         int level
6a00: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6a10: 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61 67     string messag
6a20: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
6a30: 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65 67      string categ
6a40: 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ory..           
6a50: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
6a60: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
6a70: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
6a80: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
6a90: 54 45 3a 20 41 6c 77 61 79 73 20 73 6b 69 70 20  TE: Always skip 
6aa0: 74 68 69 73 20 63 61 6c 6c 20 66 72 61 6d 65 20  this call frame 
6ab0: 69 66 20 74 68 65 20 73 74 61 63 6b 20 74 72 61  if the stack tra
6ac0: 63 65 20 69 73 0d 0a 20 20 20 20 20 20 20 20 20  ce is..         
6ad0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6ae0: 67 6f 69 6e 67 20 74 6f 20 62 65 20 63 61 70 74  going to be capt
6af0: 75 72 65 64 20 62 79 20 47 65 74 4d 65 74 68 6f  ured by GetMetho
6b00: 64 4e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20  dName...        
6b10: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6b20: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
6b30: 73 74 61 63 6b 54 72 61 63 65 20 3d 3d 20 6e 75  stackTrace == nu
6b40: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
6b50: 20 20 20 20 20 20 20 20 20 6c 65 76 65 6c 2b 2b           level++
6b60: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
6b70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
6b80: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
6b90: 3a 20 46 6f 72 6d 61 74 20 74 68 65 20 6d 65 73  : Format the mes
6ba0: 73 61 67 65 20 66 6f 72 20 64 69 73 70 6c 61 79  sage for display
6bb0: 20 28 6f 6e 63 65 29 2e 0d 0a 20 20 20 20 20 20   (once)...      
6bc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
6bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
6be0: 72 69 6e 67 20 66 6f 72 6d 61 74 74 65 64 20 3d  ring formatted =
6bf0: 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 22   String.Format("
6c00: 7b 30 7d 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  {0}: {1}",..    
6c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c20: 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 73 74  GetMethodName(st
6c30: 61 63 6b 54 72 61 63 65 2c 20 6c 65 76 65 6c 29  ackTrace, level)
6c40: 2c 20 6d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a 20  , message);.... 
6c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
6c60: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
6c70: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
6c80: 68 65 20 64 65 62 75 67 20 63 61 6c 6c 62 61 63  he debug callbac
6c90: 6b 20 69 73 20 69 6e 76 61 6c 69 64 20 6f 72 20  k is invalid or 
6ca0: 74 68 65 20 74 72 61 63 65 20 70 72 69 6f 72 69  the trace priori
6cb0: 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ty..            
6cc0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 66 20      //       of 
6cd0: 74 68 69 73 20 6d 65 73 73 61 67 65 20 69 73 20  this message is 
6ce0: 6c 65 73 73 20 74 68 61 6e 20 77 68 61 74 20 77  less than what w
6cf0: 65 20 63 75 72 72 65 6e 74 6c 79 20 77 61 6e 74  e currently want
6d00: 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   to..           
6d10: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 65       //       de
6d20: 62 75 67 2c 20 73 6b 69 70 20 69 74 2e 0d 0a 20  bug, skip it... 
6d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
6d40: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
6d50: 20 20 20 69 66 20 28 28 64 65 62 75 67 43 61 6c     if ((debugCal
6d60: 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20 26  lback != null) &
6d70: 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
6d80: 20 20 20 20 20 20 20 28 74 72 61 63 65 50 72 69         (tracePri
6d90: 6f 72 69 74 79 20 3e 3d 20 44 65 62 75 67 50 72  ority >= DebugPr
6da0: 69 6f 72 69 74 79 29 29 0d 0a 20 20 20 20 20 20  iority))..      
6db0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
6dc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6dd0: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
6de0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
6df0: 3a 20 49 6e 76 6f 6b 65 20 74 68 65 20 64 65 62  : Invoke the deb
6e00: 75 67 20 63 61 6c 6c 62 61 63 6b 20 77 69 74 68  ug callback with
6e10: 20 74 68 65 20 66 6f 72 6d 61 74 74 65 64 0d 0a   the formatted..
6e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e30: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 65 73      //       mes
6e40: 73 61 67 65 20 61 6e 64 20 74 68 65 20 63 61 74  sage and the cat
6e50: 65 67 6f 72 79 20 73 70 65 63 69 66 69 65 64 20  egory specified 
6e60: 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
6e70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
6e80: 20 20 20 20 20 63 61 6c 6c 65 72 2e 0d 0a 20 20       caller...  
6e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6ea0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6eb0: 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
6ec0: 61 6c 6c 62 61 63 6b 28 66 6f 72 6d 61 74 74 65  allback(formatte
6ed0: 64 2c 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a 20  d, category);.. 
6ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
6ef0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
6f00: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6f10: 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
6f20: 20 49 66 20 74 68 65 20 74 72 61 63 65 20 63 61   If the trace ca
6f30: 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 61 6c 69  llback is invali
6f40: 64 20 6f 72 20 74 68 65 20 74 72 61 63 65 20 70  d or the trace p
6f50: 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 20 20 20  riority..       
6f60: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
6f70: 20 20 6f 66 20 74 68 69 73 20 6d 65 73 73 61 67    of this messag
6f80: 65 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20 77  e is less than w
6f90: 68 61 74 20 77 65 20 63 75 72 72 65 6e 74 6c 79  hat we currently
6fa0: 20 77 61 6e 74 20 74 6f 0d 0a 20 20 20 20 20 20   want to..      
6fb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6fc0: 20 20 20 74 72 61 63 65 2c 20 73 6b 69 70 20 69     trace, skip i
6fd0: 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t...            
6fe0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
6ff0: 20 20 20 20 20 20 20 20 69 66 20 28 28 74 72 61          if ((tra
7000: 63 65 43 61 6c 6c 62 61 63 6b 20 21 3d 20 6e 75  ceCallback != nu
7010: 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20  ll) &&..        
7020: 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72 61              (tra
7030: 63 65 50 72 69 6f 72 69 74 79 20 3e 3d 20 54 72  cePriority >= Tr
7040: 61 63 65 50 72 69 6f 72 69 74 79 29 29 0d 0a 20  acePriority)).. 
7050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
7060: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7070: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
7080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
7090: 20 4e 4f 54 45 3a 20 49 6e 76 6f 6b 65 20 74 68   NOTE: Invoke th
70a0: 65 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63 6b  e trace callback
70b0: 20 77 69 74 68 20 74 68 65 20 66 6f 72 6d 61 74   with the format
70c0: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
70d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
70e0: 20 20 6d 65 73 73 61 67 65 20 61 6e 64 20 74 68    message and th
70f0: 65 20 63 61 74 65 67 6f 72 79 20 73 70 65 63 69  e category speci
7100: 66 69 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  fied by the..   
7110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7120: 20 2f 2f 20 20 20 20 20 20 20 63 61 6c 6c 65 72   //       caller
7130: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7140: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
7150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
7160: 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 66 6f 72  raceCallback(for
7170: 6d 61 74 74 65 64 2c 20 63 61 74 65 67 6f 72 79  matted, category
7180: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
7190: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
71a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
71b0: 6d 65 73 73 61 67 65 3b 0d 0a 20 20 20 20 20 20  message;..      
71c0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
71d0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
71e0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
71f0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
7200: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
7210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7250: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
7260: 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69 73 74 72  gion MockRegistr
7270: 79 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20  y Class..       
7280: 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64 20   private sealed 
7290: 63 6c 61 73 73 20 4d 6f 63 6b 52 65 67 69 73 74  class MockRegist
72a0: 72 79 20 3a 20 49 44 69 73 70 6f 73 61 62 6c 65  ry : IDisposable
72b0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
72c0: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
72d0: 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
72e0: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  tors..          
72f0: 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
7300: 69 73 74 72 79 28 29 0d 0a 20 20 20 20 20 20 20  istry()..       
7310: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7320: 20 20 20 20 20 20 20 20 77 68 61 74 49 66 20 3d          whatIf =
7330: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
7340: 20 20 20 20 20 20 20 20 72 65 61 64 4f 6e 6c 79          readOnly
7350: 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
7360: 20 20 20 20 20 20 20 20 20 20 73 61 66 65 20 3d            safe =
7370: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
7380: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
7390: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
73a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
73d0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
73e0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d          public M
73f0: 6f 63 6b 52 65 67 69 73 74 72 79 28 0d 0a 20 20  ockRegistry(..  
7400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
7410: 6f 6c 20 77 68 61 74 49 66 0d 0a 20 20 20 20 20  ol whatIf..     
7420: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
7430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
7440: 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20 20  this()..        
7450: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7460: 20 20 20 20 20 20 20 74 68 69 73 2e 77 68 61 74         this.what
7470: 49 66 20 3d 20 77 68 61 74 49 66 3b 0d 0a 20 20  If = whatIf;..  
7480: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
7490: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
74a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
74d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
74e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
74f0: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
7500: 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
7510: 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
7520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7530: 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79 0d    bool readOnly.
7540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7550: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
7560: 20 20 20 20 3a 20 74 68 69 73 28 77 68 61 74 49      : this(whatI
7570: 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f)..            
7580: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
7590: 20 20 20 74 68 69 73 2e 72 65 61 64 4f 6e 6c 79     this.readOnly
75a0: 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20 20   = readOnly;..  
75b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
75c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
75d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
7610: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
7620: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
7630: 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
7640: 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
7650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7660: 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79 2c    bool readOnly,
7670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7680: 20 20 62 6f 6f 6c 20 73 61 66 65 0d 0a 20 20 20    bool safe..   
7690: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
76a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
76b0: 3a 20 74 68 69 73 28 77 68 61 74 49 66 2c 20 72  : this(whatIf, r
76c0: 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20 20 20 20  eadOnly)..      
76d0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
76e0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 61           this.sa
76f0: 66 65 20 3d 20 73 61 66 65 3b 0d 0a 20 20 20 20  fe = safe;..    
7700: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
7710: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
7720: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
7730: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
7740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7770: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
7780: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
7790: 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20  ic Properties.. 
77a0: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
77b0: 74 65 20 62 6f 6f 6c 20 77 68 61 74 49 66 3b 0d  te bool whatIf;.
77c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
77d0: 6c 69 63 20 62 6f 6f 6c 20 57 68 61 74 49 66 0d  lic bool WhatIf.
77e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
77f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7800: 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  get { CheckDispo
7810: 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 77 68  sed(); return wh
7820: 61 74 49 66 3b 20 7d 0d 0a 20 20 20 20 20 20 20  atIf; }..       
7830: 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 43           set { C
7840: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
7850: 77 68 61 74 49 66 20 3d 20 76 61 6c 75 65 3b 20  whatIf = value; 
7860: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
7870: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
7880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78c0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
78d0: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
78e0: 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20 20 20 20 20  readOnly;..     
78f0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
7900: 6f 6c 20 52 65 61 64 4f 6e 6c 79 0d 0a 20 20 20  ol ReadOnly..   
7910: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
7920: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
7930: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
7940: 29 3b 20 72 65 74 75 72 6e 20 72 65 61 64 4f 6e  ); return readOn
7950: 6c 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ly; }..         
7960: 20 20 20 20 20 20 20 73 65 74 20 7b 20 43 68 65         set { Che
7970: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
7980: 61 64 4f 6e 6c 79 20 3d 20 76 61 6c 75 65 3b 20  adOnly = value; 
7990: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
79a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
79b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
79f0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
7a00: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
7a10: 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  safe;..         
7a20: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 53     public bool S
7a30: 61 66 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  afe..           
7a40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
7a50: 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
7a60: 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
7a70: 6e 20 73 61 66 65 3b 20 7d 0d 0a 20 20 20 20 20  n safe; }..     
7a80: 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
7a90: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
7aa0: 3b 20 73 61 66 65 20 3d 20 76 61 6c 75 65 3b 20  ; safe = value; 
7ab0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
7ac0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
7ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b10: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
7b20: 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52     private MockR
7b30: 65 67 69 73 74 72 79 4b 65 79 20 63 6c 61 73 73  egistryKey class
7b40: 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20 20  esRoot;..       
7b50: 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b       public Mock
7b60: 52 65 67 69 73 74 72 79 4b 65 79 20 43 6c 61 73  RegistryKey Clas
7b70: 73 65 73 52 6f 6f 74 0d 0a 20 20 20 20 20 20 20  sesRoot..       
7b80: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7b90: 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
7ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7bc0: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
7bd0: 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
7be0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
7bf0: 63 6c 61 73 73 65 73 52 6f 6f 74 20 3d 3d 20 6e  classesRoot == n
7c00: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
7c10: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c30: 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f 74       classesRoot
7c40: 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73   = new MockRegis
7c50: 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  tryKey(..       
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c70: 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 43 6c       Registry.Cl
7c80: 61 73 73 65 73 52 6f 6f 74 2c 20 77 68 61 74 49  assesRoot, whatI
7c90: 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66  f, readOnly, saf
7ca0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
7cb0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
7cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7cd0: 20 20 72 65 74 75 72 6e 20 63 6c 61 73 73 65 73    return classes
7ce0: 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  Root;..         
7cf0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
7d00: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7d10: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7d60: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
7d70: 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  e MockRegistryKe
7d80: 79 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67 3b  y currentConfig;
7d90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
7da0: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
7db0: 79 4b 65 79 20 43 75 72 72 65 6e 74 43 6f 6e 66  yKey CurrentConf
7dc0: 69 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ig..            
7dd0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
7de0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
7df0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7e00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
7e10: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
7e20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
7e30: 20 20 20 20 20 20 20 69 66 20 28 63 75 72 72 65         if (curre
7e40: 6e 74 43 6f 6e 66 69 67 20 3d 3d 20 6e 75 6c 6c  ntConfig == null
7e50: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
7e60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e80: 20 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67 20    currentConfig 
7e90: 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74  = new MockRegist
7ea0: 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20  ryKey(..        
7eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ec0: 20 20 20 20 52 65 67 69 73 74 72 79 2e 43 75 72      Registry.Cur
7ed0: 72 65 6e 74 43 6f 6e 66 69 67 2c 20 77 68 61 74  rentConfig, what
7ee0: 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61  If, readOnly, sa
7ef0: 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  fe);..          
7f00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
7f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f20: 20 20 20 72 65 74 75 72 6e 20 63 75 72 72 65 6e     return curren
7f30: 74 43 6f 6e 66 69 67 3b 0d 0a 20 20 20 20 20 20  tConfig;..      
7f40: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
7f50: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
7f60: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
7f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7fb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
7fc0: 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72  vate MockRegistr
7fd0: 79 4b 65 79 20 63 75 72 72 65 6e 74 55 73 65 72  yKey currentUser
7fe0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
7ff0: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
8000: 72 79 4b 65 79 20 43 75 72 72 65 6e 74 55 73 65  ryKey CurrentUse
8010: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  r..            {
8020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8030: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
8040: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
8060: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
8070: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8080: 20 20 20 20 20 20 69 66 20 28 63 75 72 72 65 6e        if (curren
8090: 74 55 73 65 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  tUser == null)..
80a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
80c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
80d0: 75 72 72 65 6e 74 55 73 65 72 20 3d 20 6e 65 77  urrentUser = new
80e0: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
80f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
8100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52                 R
8110: 65 67 69 73 74 72 79 2e 43 75 72 72 65 6e 74 55  egistry.CurrentU
8120: 73 65 72 2c 20 77 68 61 74 49 66 2c 20 72 65 61  ser, whatIf, rea
8130: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20  dOnly, safe);.. 
8140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8150: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8160: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8170: 72 6e 20 63 75 72 72 65 6e 74 55 73 65 72 3b 0d  rn currentUser;.
8180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8190: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
81a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
81b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
81c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
81f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
8200: 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b      private Mock
8210: 52 65 67 69 73 74 72 79 4b 65 79 20 64 79 6e 44  RegistryKey dynD
8220: 61 74 61 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ata;..          
8230: 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
8240: 69 73 74 72 79 4b 65 79 20 44 79 6e 44 61 74 61  istryKey DynData
8250: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
8260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8270: 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20   get..          
8280: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8290: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
82a0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
82b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
82c0: 20 20 20 20 20 69 66 20 28 64 79 6e 44 61 74 61       if (dynData
82d0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
82e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
82f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8300: 20 20 20 20 20 20 20 20 20 20 64 79 6e 44 61 74            dynDat
8310: 61 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69  a = new MockRegi
8320: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
8330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8340: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 44        Registry.D
8350: 79 6e 44 61 74 61 2c 20 77 68 61 74 49 66 2c 20  ynData, whatIf, 
8360: 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b  readOnly, safe);
8370: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8380: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
83a0: 65 74 75 72 6e 20 64 79 6e 44 61 74 61 3b 0d 0a  eturn dynData;..
83b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
83d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
83e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
83f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8420: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
8430: 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52     private MockR
8440: 65 67 69 73 74 72 79 4b 65 79 20 6c 6f 63 61 6c  egistryKey local
8450: 4d 61 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20 20  Machine;..      
8460: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
8470: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 4c 6f 63  kRegistryKey Loc
8480: 61 6c 4d 61 63 68 69 6e 65 0d 0a 20 20 20 20 20  alMachine..     
8490: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
84a0: 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20            get.. 
84b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
84c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
84d0: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
84e0: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
8500: 20 28 6c 6f 63 61 6c 4d 61 63 68 69 6e 65 20 3d   (localMachine =
8510: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
8520: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
8530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8540: 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61 63          localMac
8550: 68 69 6e 65 20 3d 20 6e 65 77 20 4d 6f 63 6b 52  hine = new MockR
8560: 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
8570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8580: 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72           Registr
8590: 79 2e 4c 6f 63 61 6c 4d 61 63 68 69 6e 65 2c 20  y.LocalMachine, 
85a0: 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79  whatIf, readOnly
85b0: 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20 20 20  , safe);..      
85c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
85d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
85e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c 6f         return lo
85f0: 63 61 6c 4d 61 63 68 69 6e 65 3b 0d 0a 20 20 20  calMachine;..   
8600: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
8610: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
8620: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8670: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8680: 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69  private MockRegi
8690: 73 74 72 79 4b 65 79 20 70 65 72 66 6f 72 6d 61  stryKey performa
86a0: 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20 20 20 20  nceData;..      
86b0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
86c0: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 50 65 72  kRegistryKey Per
86d0: 66 6f 72 6d 61 6e 63 65 44 61 74 61 0d 0a 20 20  formanceData..  
86e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
86f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
8700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8710: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8720: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
8730: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
8740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8750: 20 69 66 20 28 70 65 72 66 6f 72 6d 61 6e 63 65   if (performance
8760: 44 61 74 61 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Data == null).. 
8770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8780: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 65                pe
87a0: 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d 20  rformanceData = 
87b0: 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  new MockRegistry
87c0: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
87d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87e0: 20 20 52 65 67 69 73 74 72 79 2e 50 65 72 66 6f    Registry.Perfo
87f0: 72 6d 61 6e 63 65 44 61 74 61 2c 20 77 68 61 74  rmanceData, what
8800: 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61  If, readOnly, sa
8810: 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  fe);..          
8820: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
8830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8840: 20 20 20 72 65 74 75 72 6e 20 70 65 72 66 6f 72     return perfor
8850: 6d 61 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20 20  manceData;..    
8860: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
8870: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
8880: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
8890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
88d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
88e0: 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73  rivate MockRegis
88f0: 74 72 79 4b 65 79 20 75 73 65 72 73 3b 0d 0a 20  tryKey users;.. 
8900: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
8910: 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  c MockRegistryKe
8920: 79 20 55 73 65 72 73 0d 0a 20 20 20 20 20 20 20  y Users..       
8930: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8940: 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20          get..   
8950: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
8960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8970: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
8980: 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
8990: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
89a0: 75 73 65 72 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  users == null)..
89b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89c0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
89d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75                 u
89e0: 73 65 72 73 20 3d 20 6e 65 77 20 4d 6f 63 6b 52  sers = new MockR
89f0: 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
8a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a10: 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72           Registr
8a20: 79 2e 55 73 65 72 73 2c 20 77 68 61 74 49 66 2c  y.Users, whatIf,
8a30: 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29   readOnly, safe)
8a40: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
8a50: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a70: 72 65 74 75 72 6e 20 75 73 65 72 73 3b 0d 0a 20  return users;.. 
8a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
8a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
8aa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
8ab0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
8ac0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
8ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8b10: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
8b20: 6e 20 50 75 62 6c 69 63 20 22 52 65 67 69 73 74  n Public "Regist
8b30: 72 79 22 20 4d 65 74 68 6f 64 73 0d 0a 23 69 66  ry" Methods..#if
8b40: 20 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20 20   false..        
8b50: 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a 65 63      public objec
8b60: 74 20 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20  t GetValue(..   
8b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
8b80: 69 6e 67 20 6b 65 79 4e 61 6d 65 2c 0d 0a 20 20  ing keyName,..  
8b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
8ba0: 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65 2c 0d  ring valueName,.
8bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8bc0: 20 6f 62 6a 65 63 74 20 64 65 66 61 75 6c 74 56   object defaultV
8bd0: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
8be0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
8bf0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8c00: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
8c10: 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
8c20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
8c30: 72 6e 20 52 65 67 69 73 74 72 79 2e 47 65 74 56  rn Registry.GetV
8c40: 61 6c 75 65 28 6b 65 79 4e 61 6d 65 2c 20 76 61  alue(keyName, va
8c50: 6c 75 65 4e 61 6d 65 2c 20 64 65 66 61 75 6c 74  lueName, default
8c60: 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  Value);..       
8c70: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8c80: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
8c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
8cd0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
8ce0: 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28 0d 0a  void SetValue(..
8cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d00: 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65 2c 0d  string keyName,.
8d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8d20: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d   string valueNam
8d30: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
8d40: 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
8d50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8d60: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
8d70: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8d80: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
8d90: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
8da0: 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f        CheckReadO
8db0: 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly();....      
8dc0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77            if (!w
8dd0: 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20  hatIf)..        
8de0: 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67 69              Regi
8df0: 73 74 72 79 2e 53 65 74 56 61 6c 75 65 28 6b 65  stry.SetValue(ke
8e00: 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d 65  yName, valueName
8e10: 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20  , value);..     
8e20: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8e30: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
8e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
8e80: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
8e90: 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28  c void SetValue(
8ea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8eb0: 20 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65    string keyName
8ec0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
8ed0: 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e     string valueN
8ee0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
8ef0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
8f00: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
8f10: 20 20 20 20 20 52 65 67 69 73 74 72 79 56 61 6c       RegistryVal
8f20: 75 65 4b 69 6e 64 20 76 61 6c 75 65 4b 69 6e 64  ueKind valueKind
8f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8f40: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
8f50: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8f60: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
8f70: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
8f80: 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f        CheckReadO
8f90: 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly();....      
8fa0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77            if (!w
8fb0: 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20  hatIf)..        
8fc0: 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67 69              Regi
8fd0: 73 74 72 79 2e 53 65 74 56 61 6c 75 65 28 6b 65  stry.SetValue(ke
8fe0: 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d 65  yName, valueName
8ff0: 2c 20 76 61 6c 75 65 2c 20 76 61 6c 75 65 4b 69  , value, valueKi
9000: 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nd);..          
9010: 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20    }..#endif..   
9020: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
9030: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
9040: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9080: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9090: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
90a0: 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20  ivate Methods.. 
90b0: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
90c0: 74 65 20 76 6f 69 64 20 43 68 65 63 6b 52 65 61  te void CheckRea
90d0: 64 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20 20  dOnly()..       
90e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
90f0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
9100: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
9110: 4f 54 45 3a 20 49 6e 20 22 72 65 61 64 2d 6f 6e  OTE: In "read-on
9120: 6c 79 22 20 6d 6f 64 65 2c 20 77 65 20 64 69 73  ly" mode, we dis
9130: 61 6c 6c 6f 77 20 61 6c 6c 20 77 72 69 74 65 20  allow all write 
9140: 61 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20  access...       
9150: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
9160: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9170: 28 21 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20  (!readOnly)..   
9180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9190: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
91a0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
91b0: 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65  w new InvalidOpe
91c0: 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28  rationException(
91d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
91e0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
91f0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
9200: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
9210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
9250: 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
9260: 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
9270: 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72  "Pattern" Member
9280: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
9290: 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70  rivate bool disp
92a0: 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  osed;..         
92b0: 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
92c0: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20  CheckDisposed() 
92d0: 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
92e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
92f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9300: 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  !disposed)..    
9310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9320: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
9330: 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77             throw
9340: 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f   new ObjectDispo
9350: 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20  sedException(.. 
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9370: 20 20 20 74 79 70 65 6f 66 28 4d 6f 63 6b 52 65     typeof(MockRe
9380: 67 69 73 74 72 79 29 2e 4e 61 6d 65 29 3b 0d 0a  gistry).Name);..
9390: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
93a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
93b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9400: 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65  private /* prote
9410: 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20  cted virtual */ 
9420: 76 6f 69 64 20 44 69 73 70 6f 73 65 28 0d 0a 20  void Dispose(.. 
9430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
9440: 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 0d 0a 20  ool disposing.. 
9450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
9460: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
9470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9480: 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
9490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
94a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
94b0: 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73 70          if (disp
94c0: 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20  osing)..        
94d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
94e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
94f0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
9500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20  ///////////..   
9520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9530: 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20       // dispose 
9540: 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65  managed resource
9550: 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20  s here.....     
9560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9570: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9590: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
95a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95b0: 20 20 20 69 66 20 28 63 6c 61 73 73 65 73 52 6f     if (classesRo
95c0: 6f 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ot != null)..   
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
95e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
95f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9600: 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f 74 2e      classesRoot.
9610: 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20  Close();..      
9620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9630: 20 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f        classesRoo
9640: 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  t = null;..     
9650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9660: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9680: 69 66 20 28 63 75 72 72 65 6e 74 43 6f 6e 66 69  if (currentConfi
9690: 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  g != null)..    
96a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
96c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
96d0: 20 20 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67     currentConfig
96e0: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
96f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9700: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 43 6f         currentCo
9710: 6e 66 69 67 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  nfig = null;..  
9720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9730: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9750: 20 20 20 69 66 20 28 63 75 72 72 65 6e 74 55 73     if (currentUs
9760: 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  er != null)..   
9770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9780: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97a0: 20 20 20 20 63 75 72 72 65 6e 74 55 73 65 72 2e      currentUser.
97b0: 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20  Close();..      
97c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
97d0: 20 20 20 20 20 20 63 75 72 72 65 6e 74 55 73 65        currentUse
97e0: 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  r = null;..     
97f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9800: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
9810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9820: 69 66 20 28 64 79 6e 44 61 74 61 20 21 3d 20 6e  if (dynData != n
9830: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
9840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
9850: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9860: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 79 6e               dyn
9870: 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20  Data.Close();.. 
9880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9890: 20 20 20 20 20 20 20 20 20 20 20 64 79 6e 44 61             dynDa
98a0: 74 61 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ta = null;..    
98b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98c0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
98d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98e0: 20 69 66 20 28 6c 6f 63 61 6c 4d 61 63 68 69 6e   if (localMachin
98f0: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
9900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9910: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9930: 20 20 20 6c 6f 63 61 6c 4d 61 63 68 69 6e 65 2e     localMachine.
9940: 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20  Close();..      
9950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9960: 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61 63 68 69        localMachi
9970: 6e 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ne = null;..    
9980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9990: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
99a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99b0: 20 69 66 20 28 70 65 72 66 6f 72 6d 61 6e 63 65   if (performance
99c0: 44 61 74 61 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Data != null).. 
99d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99e0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
99f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a00: 20 20 20 20 20 20 70 65 72 66 6f 72 6d 61 6e 63        performanc
9a10: 65 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b 0d 0a  eData.Close();..
9a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a30: 20 20 20 20 20 20 20 20 20 20 20 20 70 65 72 66              perf
9a40: 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d 20 6e 75  ormanceData = nu
9a50: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
9a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
9a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9a80: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75 73            if (us
9a90: 65 72 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ers != null)..  
9aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ab0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ad0: 20 20 20 20 20 75 73 65 72 73 2e 43 6c 6f 73 65       users.Close
9ae0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
9af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b00: 20 75 73 65 72 73 20 3d 20 6e 75 6c 6c 3b 0d 0a   users = null;..
9b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b20: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9b40: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
9b50: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
9b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b90: 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75      // release u
9ba0: 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63  nmanaged resourc
9bb0: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
9bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9bf0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9c10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9c20: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
9c30: 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 6e 6f  his object is no
9c40: 77 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  w disposed...   
9c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c60: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
9c70: 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65           dispose
9c80: 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
9c90: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9ca0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9cb0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
9cc0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
9cd0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9d10: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
9d20: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44        #region ID
9d30: 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72  isposable Member
9d40: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
9d50: 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
9d60: 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se()..          
9d70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
9d80: 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
9d90: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
9da0: 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
9db0: 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
9dc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
9dd0: 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
9de0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
9df0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9e40: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
9e50: 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20   Destructor..   
9e60: 20 20 20 20 20 20 20 20 20 7e 4d 6f 63 6b 52 65           ~MockRe
9e70: 67 69 73 74 72 79 28 29 0d 0a 20 20 20 20 20 20  gistry()..      
9e80: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9e90: 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65           Dispose
9ea0: 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20  (false);..      
9eb0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9ec0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
9ed0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
9ee0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
9ef0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
9f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9f40: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
9f50: 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69 73 74 72  gion MockRegistr
9f60: 79 4b 65 79 20 43 6c 61 73 73 0d 0a 20 20 20 20  yKey Class..    
9f70: 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65 61      internal sea
9f80: 6c 65 64 20 63 6c 61 73 73 20 4d 6f 63 6b 52 65  led class MockRe
9f90: 67 69 73 74 72 79 4b 65 79 20 3a 20 49 44 69 73  gistryKey : IDis
9fa0: 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  posable..       
9fb0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9fc0: 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
9fd0: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
9fe0: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
9ff0: 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  e MockRegistryKe
a000: 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y()..           
a010: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a020: 20 20 20 20 77 68 61 74 49 66 20 3d 20 74 72 75      whatIf = tru
a030: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
a040: 20 20 20 20 72 65 61 64 4f 6e 6c 79 20 3d 20 74      readOnly = t
a050: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
a060: 20 20 20 20 20 20 73 61 66 65 20 3d 20 74 72 75        safe = tru
a070: 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
a080: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
a090: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
a0a0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
a0b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a0f0: 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
a100: 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
a110: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
a120: 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b       public Mock
a130: 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20  RegistryKey(..  
a140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65                Re
a150: 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a 20  gistryKey key.. 
a160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
a170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a180: 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
a190: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a1a0: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
a1b0: 6b 65 79 20 3d 20 6b 65 79 3b 0d 0a 20 20 20 20  key = key;..    
a1c0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
a1d0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
a1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a220: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
a230: 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
a240: 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
a250: 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79       RegistryKey
a260: 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
a270: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 75         string su
a280: 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20  bKeyName..      
a290: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
a2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74               : t
a2b0: 68 69 73 28 6b 65 79 29 0d 0a 20 20 20 20 20 20  his(key)..      
a2c0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
a2d0: 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73 75           this.su
a2e0: 62 4b 65 79 4e 61 6d 65 20 3d 20 73 75 62 4b 65  bKeyName = subKe
a2f0: 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
a300: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a310: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
a320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a350: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
a360: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d          public M
a370: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d  ockRegistryKey(.
a380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a390: 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79   RegistryKey key
a3a0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
a3b0: 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79     string subKey
a3c0: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
a3d0: 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74         bool what
a3e0: 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  If..            
a3f0: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
a400: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b 65         : this(ke
a410: 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29 0d 0a  y, subKeyName)..
a420: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
a440: 68 69 73 2e 77 68 61 74 49 66 20 3d 20 77 68 61  his.whatIf = wha
a450: 74 49 66 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf;..          
a460: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
a470: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a4b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
a4c0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
a4d0: 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20  kRegistryKey(.. 
a4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52                 R
a4f0: 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d  egistryKey key,.
a500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a510: 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61   string subKeyNa
a520: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
a530: 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
a540: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
a550: 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79     bool readOnly
a560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a570: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
a580: 20 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c       : this(key,
a590: 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61   subKeyName, wha
a5a0: 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
a5b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a5c0: 20 20 20 20 20 74 68 69 73 2e 72 65 61 64 4f 6e       this.readOn
a5d0: 6c 79 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a  ly = readOnly;..
a5e0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
a5f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
a600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a640: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
a650: 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73  public MockRegis
a660: 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  tryKey(..       
a670: 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72           Registr
a680: 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20  yKey key,..     
a690: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
a6a0: 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20  g subKeyName,.. 
a6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
a6c0: 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20  ool whatIf,..   
a6d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
a6e0: 6c 20 72 65 61 64 4f 6e 6c 79 2c 0d 0a 20 20 20  l readOnly,..   
a6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
a700: 6c 20 73 61 66 65 0d 0a 20 20 20 20 20 20 20 20  l safe..        
a710: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
a720: 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69             : thi
a730: 73 28 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d  s(key, subKeyNam
a740: 65 2c 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f  e, whatIf, readO
a750: 6e 6c 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20  nly)..          
a760: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a770: 20 20 20 20 20 74 68 69 73 2e 73 61 66 65 20 3d       this.safe =
a780: 20 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20 20   safe;..        
a790: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
a7a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
a7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7e0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
a7f0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d          public M
a800: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d  ockRegistryKey(.
a810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a820: 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79   RegistryKey key
a830: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
a840: 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 0d 0a     bool whatIf..
a850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a860: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
a870: 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c 20 6e     : this(key, n
a880: 75 6c 6c 2c 20 77 68 61 74 49 66 29 0d 0a 20 20  ull, whatIf)..  
a890: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
a8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
a8b0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
a8c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
a8d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
a8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
a920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
a930: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
a940: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
a950: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65        RegistryKe
a960: 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
a970: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
a980: 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
a990: 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f        bool readO
a9a0: 6e 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nly..           
a9b0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
a9c0: 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b          : this(k
a9d0: 65 79 2c 20 6e 75 6c 6c 2c 20 77 68 61 74 49 66  ey, null, whatIf
a9e0: 2c 20 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20  , readOnly)..   
a9f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
aa00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
aa10: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
aa20: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
aa30: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
aa40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aa70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
aa80: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
aa90: 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
aaa0: 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
aab0: 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79       RegistryKey
aac0: 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
aad0: 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74         bool what
aae0: 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If,..           
aaf0: 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e       bool readOn
ab00: 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ly,..           
ab10: 20 20 20 20 20 62 6f 6f 6c 20 73 61 66 65 0d 0a       bool safe..
ab20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ab30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
ab40: 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c 20 6e     : this(key, n
ab50: 75 6c 6c 2c 20 77 68 61 74 49 66 2c 20 72 65 61  ull, whatIf, rea
ab60: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 0d 0a 20 20  dOnly, safe)..  
ab70: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ab80: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
ab90: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
aba0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
abb0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
abc0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
abd0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
abe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
abf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
ac20: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
ac30: 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  lic Methods..   
ac40: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
ac50: 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20 20  void Close()..  
ac60: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
ac70: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
ac80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ac90: 20 2f 2f 20 4e 4f 54 45 3a 20 4e 6f 20 64 69 73   // NOTE: No dis
aca0: 70 6f 73 65 64 20 63 68 65 63 6b 20 68 65 72 65  posed check here
acb0: 20 62 65 63 61 75 73 65 20 63 61 6c 6c 69 6e 67   because calling
acc0: 20 74 68 69 73 20 6d 65 74 68 6f 64 0d 0a 20 20   this method..  
acd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
ace0: 20 20 20 20 20 20 20 73 68 6f 75 6c 64 20 62 65         should be
acf0: 20 6a 75 73 74 20 6c 69 6b 65 20 63 61 6c 6c 69   just like calli
ad00: 6e 67 20 44 69 73 70 6f 73 65 2e 0d 0a 20 20 20  ng Dispose...   
ad10: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
ad20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad30: 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
ad40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
ad50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
ad60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ada0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
adb0: 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73   public void Dis
adc0: 61 62 6c 65 43 6c 6f 73 65 28 29 0d 0a 20 20 20  ableClose()..   
add0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ade0: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
adf0: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
ae00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ae10: 6e 6f 43 6c 6f 73 65 20 3d 20 74 72 75 65 3b 0d  noClose = true;.
ae20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
ae30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
ae40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ae80: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
ae90: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
aea0: 73 74 72 79 4b 65 79 20 43 6c 6f 6e 65 28 0d 0a  stryKey Clone(..
aeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aec0: 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
aed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
aee0: 6f 6c 20 72 65 61 64 4f 6e 6c 79 2c 0d 0a 20 20  ol readOnly,..  
aef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
af00: 6f 6c 20 73 61 66 65 0d 0a 20 20 20 20 20 20 20  ol safe..       
af10: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
af20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
af30: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
af40: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
af50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
af60: 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63 6b 52 65  eturn new MockRe
af70: 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20  gistryKey(..    
af80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
af90: 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c  key, subKeyName,
afa0: 20 74 68 69 73 2e 77 68 61 74 49 66 20 7c 7c 20   this.whatIf || 
afb0: 77 68 61 74 49 66 2c 20 74 68 69 73 2e 72 65 61  whatIf, this.rea
afc0: 64 4f 6e 6c 79 20 7c 7c 0d 0a 20 20 20 20 20 20  dOnly ||..      
afd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
afe0: 61 64 4f 6e 6c 79 2c 20 74 68 69 73 2e 73 61 66  adOnly, this.saf
aff0: 65 20 7c 7c 20 73 61 66 65 29 3b 0d 0a 20 20 20  e || safe);..   
b000: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
b010: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
b020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
b060: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
b070: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
b080: 4b 65 79 20 43 72 65 61 74 65 53 75 62 4b 65 79  Key CreateSubKey
b090: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
b0a0: 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79     string subKey
b0b0: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
b0c0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
b0d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
b0e0: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
b0f0: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
b100: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52            CheckR
b110: 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  eadOnly();....  
b120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
b130: 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
b140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b150: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
b160: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b170: 20 20 20 20 69 66 20 28 77 68 61 74 49 66 29 0d      if (whatIf).
b180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b190: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
b1a0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
b1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b1c0: 2f 2f 20 48 41 43 4b 3a 20 41 74 74 65 6d 70 74  // HACK: Attempt
b1d0: 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 73 70 65   to open the spe
b1e0: 63 69 66 69 65 64 20 73 75 62 2d 6b 65 79 2e 20  cified sub-key. 
b1f0: 20 49 66 20 74 68 69 73 0d 0a 20 20 20 20 20 20   If this..      
b200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
b210: 20 20 20 20 20 20 20 66 61 69 6c 73 2c 20 77 65         fails, we
b220: 27 6c 6c 20 73 69 6d 70 6c 79 20 72 65 74 75 72  'll simply retur
b230: 6e 20 74 68 65 20 77 72 61 70 70 65 64 20 72 6f  n the wrapped ro
b240: 6f 74 20 6b 65 79 0d 0a 20 20 20 20 20 20 20 20  ot key..        
b250: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
b260: 20 20 20 20 20 69 74 73 65 6c 66 20 73 69 6e 63       itself sinc
b270: 65 20 6e 6f 20 77 72 69 74 65 73 20 61 72 65 20  e no writes are 
b280: 61 6c 6c 6f 77 65 64 20 69 6e 20 22 77 68 61 74  allowed in "what
b290: 2d 69 66 22 0d 0a 20 20 20 20 20 20 20 20 20 20  -if"..          
b2a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
b2b0: 20 20 20 6d 6f 64 65 20 61 6e 79 68 6f 77 2e 0d     mode anyhow..
b2c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b2d0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
b2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67               Reg
b2f0: 69 73 74 72 79 4b 65 79 20 73 75 62 4b 65 79 20  istryKey subKey 
b300: 3d 20 6b 65 79 2e 4f 70 65 6e 53 75 62 4b 65 79  = key.OpenSubKey
b310: 28 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d  (subKeyName);...
b320: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b330: 20 20 20 20 20 69 66 20 28 73 75 62 4b 65 79 20       if (subKey 
b340: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
b350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
b360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b370: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b380: 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  new MockRegistry
b390: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
b3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b3b0: 20 20 73 75 62 4b 65 79 2c 20 77 68 61 74 49 66    subKey, whatIf
b3c0: 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65  , readOnly, safe
b3d0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
b3e0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
b3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
b400: 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
b410: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b430: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 4d      return new M
b440: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d  ockRegistryKey(.
b450: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b460: 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79               key
b470: 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 77 68  , subKeyName, wh
b480: 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20  atIf, readOnly, 
b490: 73 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  safe);..        
b4a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
b4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
b4c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b4d0: 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20    else..        
b4e0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
b500: 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63 6b 52 65  eturn new MockRe
b510: 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20  gistryKey(..    
b520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b530: 20 20 20 20 6b 65 79 2e 43 72 65 61 74 65 53 75      key.CreateSu
b540: 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65 29  bKey(subKeyName)
b550: 2c 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e  , whatIf, readOn
b560: 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20  ly, safe);..    
b570: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
b580: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
b590: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
b5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
b5e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
b5f0: 75 62 6c 69 63 20 76 6f 69 64 20 44 65 6c 65 74  ublic void Delet
b600: 65 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  eSubKey(..      
b610: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
b620: 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20   subKeyName,..  
b630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
b640: 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e  ol throwOnMissin
b650: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
b660: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
b670: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
b680: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
b690: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
b6a0: 20 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64         CheckRead
b6b0: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
b6c0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b             if (k
b6d0: 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ey == null)..   
b6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b6f0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
b700: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
b710: 21 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20  !whatIf)..      
b720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65                ke
b730: 79 2e 44 65 6c 65 74 65 53 75 62 4b 65 79 28 73  y.DeleteSubKey(s
b740: 75 62 4b 65 79 4e 61 6d 65 2c 20 74 68 72 6f 77  ubKeyName, throw
b750: 4f 6e 4d 69 73 73 69 6e 67 29 3b 0d 0a 20 20 20  OnMissing);..   
b760: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
b770: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
b780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
b7c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
b7d0: 6c 69 63 20 76 6f 69 64 20 44 65 6c 65 74 65 53  lic void DeleteS
b7e0: 75 62 4b 65 79 54 72 65 65 28 0d 0a 20 20 20 20  ubKeyTree(..    
b7f0: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
b800: 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 0d 0a 20  ng subKeyName.. 
b810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
b820: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
b830: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b840: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
b850: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
b860: 20 20 20 43 68 65 63 6b 52 65 61 64 4f 6e 6c 79     CheckReadOnly
b870: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
b880: 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d         if (key =
b890: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
b8a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
b8b0: 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
b8c0: 20 20 20 20 20 20 20 20 69 66 20 28 21 77 68 61          if (!wha
b8d0: 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
b8e0: 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 44 65            key.De
b8f0: 6c 65 74 65 53 75 62 4b 65 79 54 72 65 65 28 73  leteSubKeyTree(s
b900: 75 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a 20 20 20  ubKeyName);..   
b910: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
b920: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
b930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
b970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
b980: 6c 69 63 20 76 6f 69 64 20 44 65 6c 65 74 65 56  lic void DeleteV
b990: 61 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20  alue(..         
b9a0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
b9b0: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
b9c0: 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
b9d0: 6e 4d 69 73 73 69 6e 67 0d 0a 20 20 20 20 20 20  nMissing..      
b9e0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
b9f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ba00: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
ba10: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
ba20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
ba30: 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a  eckReadOnly();..
ba40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ba50: 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c    if (key == nul
ba60: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
ba70: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
ba80: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
ba90: 20 20 20 69 66 20 28 21 77 68 61 74 49 66 29 0d     if (!whatIf).
baa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bab0: 20 20 20 20 20 6b 65 79 2e 44 65 6c 65 74 65 56       key.DeleteV
bac0: 61 6c 75 65 28 6e 61 6d 65 2c 20 74 68 72 6f 77  alue(name, throw
bad0: 4f 6e 4d 69 73 73 69 6e 67 29 3b 0d 0a 20 20 20  OnMissing);..   
bae0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
baf0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
bb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
bb40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
bb50: 6c 69 63 20 73 74 72 69 6e 67 5b 5d 20 47 65 74  lic string[] Get
bb60: 53 75 62 4b 65 79 4e 61 6d 65 73 28 29 0d 0a 20  SubKeyNames().. 
bb70: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
bb90: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
bba0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bbb0: 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c    if (key == nul
bbc0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
bbd0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
bbe0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
bbf0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b          return k
bc00: 65 79 2e 47 65 74 53 75 62 4b 65 79 4e 61 6d 65  ey.GetSubKeyName
bc10: 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  s();..          
bc20: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
bc30: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
bc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc70: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
bc80: 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a        public obj
bc90: 65 63 74 20 47 65 74 56 61 6c 75 65 28 0d 0a 20  ect GetValue(.. 
bca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
bcb0: 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20 20  tring name,..   
bcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a               obj
bcd0: 65 63 74 20 64 65 66 61 75 6c 74 56 61 6c 75 65  ect defaultValue
bce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bcf0: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
bd00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
bd10: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
bd20: 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  d();....        
bd30: 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20          if (key 
bd40: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
bd50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
bd60: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
bd70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
bd80: 74 75 72 6e 20 6b 65 79 2e 47 65 74 56 61 6c 75  turn key.GetValu
bd90: 65 28 6e 61 6d 65 2c 20 64 65 66 61 75 6c 74 56  e(name, defaultV
bda0: 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
bdb0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
bdc0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
bdd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bde0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bdf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
be00: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
be10: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
be20: 74 72 69 6e 67 5b 5d 20 47 65 74 56 61 6c 75 65  tring[] GetValue
be30: 4e 61 6d 65 73 28 29 0d 0a 20 20 20 20 20 20 20  Names()..       
be40: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
be50: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
be60: 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
be70: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
be80: 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  key == null)..  
be90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bea0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
beb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bec0: 20 20 72 65 74 75 72 6e 20 6b 65 79 2e 47 65 74    return key.Get
bed0: 56 61 6c 75 65 4e 61 6d 65 73 28 29 3b 0d 0a 20  ValueNames();.. 
bee0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
bef0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
bf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
bf40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
bf50: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
bf60: 72 79 4b 65 79 20 4f 70 65 6e 53 75 62 4b 65 79  ryKey OpenSubKey
bf70: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
bf80: 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79     string subKey
bf90: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
bfa0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
bfb0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
bfc0: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
bfd0: 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
bfe0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
bff0: 72 6e 20 4f 70 65 6e 53 75 62 4b 65 79 28 73 75  rn OpenSubKey(su
c000: 62 4b 65 79 4e 61 6d 65 2c 20 66 61 6c 73 65 29  bKeyName, false)
c010: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
c020: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c070: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
c080: 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65     public MockRe
c090: 67 69 73 74 72 79 4b 65 79 20 4f 70 65 6e 53 75  gistryKey OpenSu
c0a0: 62 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  bKey(..         
c0b0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 75         string su
c0c0: 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  bKeyName,..     
c0d0: 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
c0e0: 77 72 69 74 61 62 6c 65 0d 0a 20 20 20 20 20 20  writable..      
c0f0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
c100: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c110: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
c120: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
c130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c140: 69 66 20 28 77 72 69 74 61 62 6c 65 29 0d 0a 20  if (writable).. 
c150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c160: 20 20 20 43 68 65 63 6b 52 65 61 64 4f 6e 6c 79     CheckReadOnly
c170: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
c180: 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d         if (key =
c190: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
c1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
c1b0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
c1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67               Reg
c1d0: 69 73 74 72 79 4b 65 79 20 73 75 62 4b 65 79 20  istryKey subKey 
c1e0: 3d 20 6b 65 79 2e 4f 70 65 6e 53 75 62 4b 65 79  = key.OpenSubKey
c1f0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c200: 20 20 20 20 20 20 20 73 75 62 4b 65 79 4e 61 6d         subKeyNam
c210: 65 2c 20 77 68 61 74 49 66 20 3f 20 66 61 6c 73  e, whatIf ? fals
c220: 65 20 3a 20 77 72 69 74 61 62 6c 65 29 3b 0d 0a  e : writable);..
c230: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c240: 20 20 69 66 20 28 73 75 62 4b 65 79 20 3d 3d 20    if (subKey == 
c250: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
c260: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c270: 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
c280: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
c290: 6e 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74  n new MockRegist
c2a0: 72 79 4b 65 79 28 73 75 62 4b 65 79 2c 20 77 68  ryKey(subKey, wh
c2b0: 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20  atIf, readOnly, 
c2c0: 73 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  safe);..        
c2d0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
c2e0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
c2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c320: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
c330: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
c340: 6f 69 64 20 53 65 74 56 61 6c 75 65 28 0d 0a 20  oid SetValue(.. 
c350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
c360: 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20 20  tring name,..   
c370: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a               obj
c380: 65 63 74 20 76 61 6c 75 65 0d 0a 20 20 20 20 20  ect value..     
c390: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
c3a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
c3c0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
c3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
c3e0: 68 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d  heckReadOnly();.
c3f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c400: 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75     if (key == nu
c410: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
c420: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
c430: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c440: 20 20 20 20 69 66 20 28 21 77 68 61 74 49 66 29      if (!whatIf)
c450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c460: 20 20 20 20 20 20 6b 65 79 2e 53 65 74 56 61 6c        key.SetVal
c470: 75 65 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b  ue(name, value);
c480: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
c490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
c4a0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
c4b0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
c4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
c500: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
c510: 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
c520: 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ies..           
c530: 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 4e   public string N
c540: 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ame..           
c550: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
c560: 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
c570: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
c580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c590: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
c5a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c5b0: 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20          if (key 
c5c0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
c5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5e0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
c5f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c600: 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 53 74        return !St
c610: 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
c620: 74 79 28 73 75 62 4b 65 79 4e 61 6d 65 29 20 3f  ty(subKeyName) ?
c630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c640: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
c650: 72 79 48 65 6c 70 65 72 2e 4a 6f 69 6e 4b 65 79  ryHelper.JoinKey
c660: 4e 61 6d 65 73 28 6b 65 79 2e 4e 61 6d 65 2c 20  Names(key.Name, 
c670: 73 75 62 4b 65 79 4e 61 6d 65 29 20 3a 0d 0a 20  subKeyName) :.. 
c680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c690: 20 20 20 20 20 20 20 6b 65 79 2e 4e 61 6d 65 3b         key.Name;
c6a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c6b0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
c6c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
c6d0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
c6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c710: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
c720: 20 20 20 20 20 70 72 69 76 61 74 65 20 52 65 67       private Reg
c730: 69 73 74 72 79 4b 65 79 20 6b 65 79 3b 0d 0a 20  istryKey key;.. 
c740: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
c750: 63 20 52 65 67 69 73 74 72 79 4b 65 79 20 4b 65  c RegistryKey Ke
c760: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
c770: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c780: 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
c790: 70 6f 73 65 64 28 29 3b 20 43 68 65 63 6b 53 61  posed(); CheckSa
c7a0: 66 65 28 29 3b 20 72 65 74 75 72 6e 20 6b 65 79  fe(); return key
c7b0: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
c7c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
c7d0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
c7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c810: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
c820: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72       private str
c830: 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 3b 0d  ing subKeyName;.
c840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
c850: 6c 69 63 20 73 74 72 69 6e 67 20 53 75 62 4b 65  lic string SubKe
c860: 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  yName..         
c870: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c880: 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63        get { Chec
c890: 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74  kDisposed(); ret
c8a0: 75 72 6e 20 73 75 62 4b 65 79 4e 61 6d 65 3b 20  urn subKeyName; 
c8b0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
c8c0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c910: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
c920: 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
c930: 77 68 61 74 49 66 3b 0d 0a 20 20 20 20 20 20 20  whatIf;..       
c940: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
c950: 20 57 68 61 74 49 66 0d 0a 20 20 20 20 20 20 20   WhatIf..       
c960: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c970: 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68          get { Ch
c980: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72  eckDisposed(); r
c990: 65 74 75 72 6e 20 77 68 61 74 49 66 3b 20 7d 0d  eturn whatIf; }.
c9a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
c9b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
c9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ca00: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
ca10: 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 72 65   private bool re
ca20: 61 64 4f 6e 6c 79 3b 0d 0a 20 20 20 20 20 20 20  adOnly;..       
ca30: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
ca40: 20 52 65 61 64 4f 6e 6c 79 0d 0a 20 20 20 20 20   ReadOnly..     
ca50: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ca60: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
ca70: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
ca80: 20 72 65 74 75 72 6e 20 72 65 61 64 4f 6e 6c 79   return readOnly
ca90: 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
caa0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
cab0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
cac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
caf0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
cb00: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
cb10: 20 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20 20   safe;..        
cb20: 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
cb30: 53 61 66 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Safe..          
cb40: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cb50: 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
cb60: 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
cb70: 72 6e 20 73 61 66 65 3b 20 7d 0d 0a 20 20 20 20  rn safe; }..    
cb80: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
cb90: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
cba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
cbe0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
cbf0: 69 63 20 62 6f 6f 6c 20 6e 6f 43 6c 6f 73 65 3b  ic bool noClose;
cc00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
cc10: 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 43 6c 6f 73  blic bool NoClos
cc20: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  e..            {
cc30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
cc40: 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
cc50: 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
cc60: 6e 6f 43 6c 6f 73 65 3b 20 7d 0d 0a 20 20 20 20  noClose; }..    
cc70: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
cc80: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
cc90: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
cca0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
ccb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ccc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ccd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cce0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
ccf0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
cd00: 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20  ate Methods..   
cd10: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
cd20: 20 76 6f 69 64 20 43 68 65 63 6b 52 65 61 64 4f   void CheckReadO
cd30: 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20  nly()..         
cd40: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cd50: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
cd60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
cd70: 45 3a 20 49 6e 20 22 72 65 61 64 2d 6f 6e 6c 79  E: In "read-only
cd80: 22 20 6d 6f 64 65 2c 20 77 65 20 64 69 73 61 6c  " mode, we disal
cd90: 6c 6f 77 20 61 6c 6c 20 77 72 69 74 65 20 61 63  low all write ac
cda0: 63 65 73 73 2e 0d 0a 20 20 20 20 20 20 20 20 20  cess...         
cdb0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
cdc0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
cdd0: 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20 20 20  readOnly)..     
cde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
cdf0: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
ce00: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
ce10: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
ce20: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
ce30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
ce40: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
ce50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce90: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
cea0: 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43    private void C
ceb0: 68 65 63 6b 53 61 66 65 28 29 0d 0a 20 20 20 20  heckSafe()..    
cec0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ced0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
cee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
cef0: 2f 20 4e 4f 54 45 3a 20 49 6e 20 22 73 61 66 65  / NOTE: In "safe
cf00: 22 20 6d 6f 64 65 2c 20 77 65 20 64 69 73 61 6c  " mode, we disal
cf10: 6c 6f 77 20 61 6c 6c 20 64 69 72 65 63 74 20 61  low all direct a
cf20: 63 63 65 73 73 20 74 6f 20 74 68 65 0d 0a 20 20  ccess to the..  
cf30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
cf40: 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e 65 64         contained
cf50: 20 72 65 67 69 73 74 72 79 20 6b 65 79 2e 0d 0a   registry key...
cf60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf70: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
cf80: 20 20 20 20 69 66 20 28 21 73 61 66 65 29 0d 0a      if (!safe)..
cf90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfa0: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
cfb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
cfc0: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
cfd0: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
cfe0: 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  on();..         
cff0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
d000: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
d010: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
d020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
d060: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
d070: 72 65 67 69 6f 6e 20 53 79 73 74 65 6d 2e 4f 62  region System.Ob
d080: 6a 65 63 74 20 4f 76 65 72 72 69 64 65 73 0d 0a  ject Overrides..
d090: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
d0a0: 69 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69  ic override stri
d0b0: 6e 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20  ng ToString().. 
d0c0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
d0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
d0e0: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
d0f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d100: 20 20 72 65 74 75 72 6e 20 74 68 69 73 2e 4e 61    return this.Na
d110: 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
d120: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
d130: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
d140: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
d150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
d190: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
d1a0: 67 69 6f 6e 20 50 75 62 6c 69 63 20 53 74 61 74  gion Public Stat
d1b0: 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20  ic Methods..    
d1c0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
d1d0: 74 61 74 69 63 20 62 6f 6f 6c 20 4e 61 6d 65 45  tatic bool NameE
d1e0: 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
d1f0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
d200: 61 6d 65 31 2c 0d 0a 20 20 20 20 20 20 20 20 20  ame1,..         
d210: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
d220: 6d 65 32 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me2..           
d230: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
d240: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
d250: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74         return St
d260: 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20  ring.Equals(..  
d270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d280: 20 20 6e 61 6d 65 31 2c 20 6e 61 6d 65 32 2c 20    name1, name2, 
d290: 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e  StringComparison
d2a0: 2e 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61  .OrdinalIgnoreCa
d2b0: 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  se);..          
d2c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
d2d0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
d2e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d310: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
d320: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
d330: 74 69 63 20 62 6f 6f 6c 20 56 61 6c 75 65 45 71  tic bool ValueEq
d340: 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
d350: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
d360: 6c 75 65 31 2c 0d 0a 20 20 20 20 20 20 20 20 20  lue1,..         
d370: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
d380: 6c 75 65 32 0d 0a 20 20 20 20 20 20 20 20 20 20  lue2..          
d390: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
d3a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
d3b0: 20 20 20 20 20 20 20 20 69 66 20 28 28 76 61 6c          if ((val
d3c0: 75 65 31 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20  ue1 == null) || 
d3d0: 28 76 61 6c 75 65 32 20 3d 3d 20 6e 75 6c 6c 29  (value2 == null)
d3e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d3f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
d400: 76 61 6c 75 65 31 20 3d 3d 20 6e 75 6c 6c 29 20  value1 == null) 
d410: 26 26 20 28 76 61 6c 75 65 32 20 3d 3d 20 6e 75  && (value2 == nu
d420: 6c 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ll));....       
d430: 20 20 20 20 20 20 20 20 20 69 66 20 28 4f 62 6a           if (Obj
d440: 65 63 74 2e 52 65 66 65 72 65 6e 63 65 45 71 75  ect.ReferenceEqu
d450: 61 6c 73 28 76 61 6c 75 65 31 2c 20 76 61 6c 75  als(value1, valu
d460: 65 32 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e2))..          
d470: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d480: 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
d490: 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20 74            Type t
d4a0: 79 70 65 31 20 3d 20 76 61 6c 75 65 31 2e 47 65  ype1 = value1.Ge
d4b0: 74 54 79 70 65 28 29 3b 0d 0a 20 20 20 20 20 20  tType();..      
d4c0: 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20 74            Type t
d4d0: 79 70 65 32 20 3d 20 76 61 6c 75 65 32 2e 47 65  ype2 = value2.Ge
d4e0: 74 54 79 70 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  tType();....    
d4f0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d500: 21 4f 62 6a 65 63 74 2e 52 65 66 65 72 65 6e 63  !Object.Referenc
d510: 65 45 71 75 61 6c 73 28 74 79 70 65 31 2c 20 74  eEquals(type1, t
d520: 79 70 65 32 29 29 0d 0a 20 20 20 20 20 20 20 20  ype2))..        
d530: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
d540: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
d550: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
d560: 28 74 79 70 65 31 20 3d 3d 20 74 79 70 65 6f 66  (type1 == typeof
d570: 28 69 6e 74 29 29 20 2f 2f 20 44 57 6f 72 64 0d  (int)) // DWord.
d580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d590: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d5a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
d5b0: 28 69 6e 74 29 76 61 6c 75 65 31 20 3d 3d 20 28  (int)value1 == (
d5c0: 69 6e 74 29 76 61 6c 75 65 32 29 3b 0d 0a 20 20  int)value2);..  
d5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
d5e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d5f0: 20 65 6c 73 65 20 69 66 20 28 74 79 70 65 31 20   else if (type1 
d600: 3d 3d 20 74 79 70 65 6f 66 28 6c 6f 6e 67 29 29  == typeof(long))
d610: 20 2f 2f 20 51 57 6f 72 64 0d 0a 20 20 20 20 20   // QWord..     
d620: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
d630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d640: 20 20 72 65 74 75 72 6e 20 28 28 6c 6f 6e 67 29    return ((long)
d650: 76 61 6c 75 65 31 20 3d 3d 20 28 6c 6f 6e 67 29  value1 == (long)
d660: 76 61 6c 75 65 32 29 3b 0d 0a 20 20 20 20 20 20  value2);..      
d670: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
d680: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
d690: 65 20 69 66 20 28 74 79 70 65 31 20 3d 3d 20 74  e if (type1 == t
d6a0: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 20 2f  ypeof(string)) /
d6b0: 2f 20 53 74 72 69 6e 67 20 2f 20 45 78 70 61 6e  / String / Expan
d6c0: 64 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20  dString..       
d6d0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
d6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d6f0: 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 71  return String.Eq
d700: 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
d710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
d720: 73 74 72 69 6e 67 29 76 61 6c 75 65 31 2c 20 28  string)value1, (
d730: 73 74 72 69 6e 67 29 76 61 6c 75 65 32 2c 0d 0a  string)value2,..
d740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d750: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
d760: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
d770: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
d780: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
d790: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
d7a0: 74 79 70 65 31 20 3d 3d 20 74 79 70 65 6f 66 28  type1 == typeof(
d7b0: 73 74 72 69 6e 67 5b 5d 29 29 20 2f 2f 20 4d 75  string[])) // Mu
d7c0: 6c 74 69 53 74 72 69 6e 67 0d 0a 20 20 20 20 20  ltiString..     
d7d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
d7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d7f0: 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 72 61 79    string[] array
d800: 31 20 3d 20 28 73 74 72 69 6e 67 5b 5d 29 76 61  1 = (string[])va
d810: 6c 75 65 31 3b 0d 0a 20 20 20 20 20 20 20 20 20  lue1;..         
d820: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
d830: 67 5b 5d 20 61 72 72 61 79 32 20 3d 20 28 73 74  g[] array2 = (st
d840: 72 69 6e 67 5b 5d 29 76 61 6c 75 65 32 3b 0d 0a  ring[])value2;..
d850: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d860: 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
d870: 31 20 3d 20 61 72 72 61 79 31 2e 4c 65 6e 67 74  1 = array1.Lengt
d880: 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
d890: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6c 65            if (le
d8a0: 6e 67 74 68 31 20 21 3d 20 61 72 72 61 79 32 2e  ngth1 != array2.
d8b0: 4c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20 20 20  Length)..       
d8c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d8d0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
d8e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d8f0: 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
d900: 6e 64 65 78 31 20 3d 20 30 3b 20 69 6e 64 65 78  ndex1 = 0; index
d910: 31 20 3c 20 6c 65 6e 67 74 68 31 3b 20 69 6e 64  1 < length1; ind
d920: 65 78 31 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20  ex1++)..        
d930: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
d940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d950: 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
d960: 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ng.Equals(..    
d970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d980: 20 20 20 20 20 20 20 20 20 20 20 20 61 72 72 61              arra
d990: 79 31 5b 69 6e 64 65 78 31 5d 2c 20 61 72 72 61  y1[index1], arra
d9a0: 79 32 5b 69 6e 64 65 78 31 5d 2c 0d 0a 20 20 20  y2[index1],..   
d9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72               Str
d9d0: 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72  ingComparison.Or
d9e0: 64 69 6e 61 6c 29 29 0d 0a 20 20 20 20 20 20 20  dinal))..       
d9f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da00: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
da10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da20: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
da30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
da40: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
da50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
da60: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
da70: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
da80: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
da90: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
daa0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
dab0: 28 74 79 70 65 31 20 3d 3d 20 74 79 70 65 6f 66  (type1 == typeof
dac0: 28 62 79 74 65 5b 5d 29 29 20 2f 2f 20 42 69 6e  (byte[])) // Bin
dad0: 61 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ary..           
dae0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
daf0: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
db00: 5b 5d 20 61 72 72 61 79 31 20 3d 20 28 62 79 74  [] array1 = (byt
db10: 65 5b 5d 29 76 61 6c 75 65 31 3b 0d 0a 20 20 20  e[])value1;..   
db20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db30: 20 62 79 74 65 5b 5d 20 61 72 72 61 79 32 20 3d   byte[] array2 =
db40: 20 28 62 79 74 65 5b 5d 29 76 61 6c 75 65 32 3b   (byte[])value2;
db50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
db60: 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67          int leng
db70: 74 68 31 20 3d 20 61 72 72 61 79 31 2e 4c 65 6e  th1 = array1.Len
db80: 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gth;....        
db90: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
dba0: 6c 65 6e 67 74 68 31 20 21 3d 20 61 72 72 61 79  length1 != array
dbb0: 32 2e 4c 65 6e 67 74 68 29 0d 0a 20 20 20 20 20  2.Length)..     
dbc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dbd0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
dbe0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
dbf0: 20 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74          for (int
dc00: 20 69 6e 64 65 78 31 20 3d 20 30 3b 20 69 6e 64   index1 = 0; ind
dc10: 65 78 31 20 3c 20 6c 65 6e 67 74 68 31 3b 20 69  ex1 < length1; i
dc20: 6e 64 65 78 31 2b 2b 29 0d 0a 20 20 20 20 20 20  ndex1++)..      
dc30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc40: 20 20 69 66 20 28 61 72 72 61 79 31 5b 69 6e 64    if (array1[ind
dc50: 65 78 31 5d 20 21 3d 20 61 72 72 61 79 32 5b 69  ex1] != array2[i
dc60: 6e 64 65 78 31 5d 29 0d 0a 20 20 20 20 20 20 20  ndex1])..       
dc70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dc80: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
dc90: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
dca0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
dcb0: 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
dcc0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
dcd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
dce0: 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
dcf0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
dd00: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
dd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
dd50: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
dd60: 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 56 61  ic static int Va
dd70: 6c 75 65 48 61 73 68 43 6f 64 65 28 0d 0a 20 20  lueHashCode(..  
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
dd90: 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20 20 20 20  ject value..    
dda0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
ddb0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
ddc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
ddd0: 74 20 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d  t result = 0;...
dde0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ddf0: 20 69 66 20 28 76 61 6c 75 65 20 21 3d 20 6e 75   if (value != nu
de00: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
de10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
de20: 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65              Type
de30: 20 74 79 70 65 20 3d 20 76 61 6c 75 65 2e 47 65   type = value.Ge
de40: 74 54 79 70 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  tType();....    
de50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de60: 69 66 20 28 28 74 79 70 65 20 3d 3d 20 74 79 70  if ((type == typ
de70: 65 6f 66 28 69 6e 74 29 29 20 7c 7c 20 2f 2f 20  eof(int)) || // 
de80: 44 57 6f 72 64 0d 0a 20 20 20 20 20 20 20 20 20  DWord..         
de90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
dea0: 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 6c  type == typeof(l
deb0: 6f 6e 67 29 29 20 7c 7c 20 2f 2f 20 51 57 6f 72  ong)) || // QWor
dec0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
ded0: 20 20 20 20 20 20 20 20 20 20 20 28 74 79 70 65             (type
dee0: 20 3d 3d 20 74 79 70 65 6f 66 28 73 74 72 69 6e   == typeof(strin
def0: 67 29 29 29 20 2f 2f 20 53 74 72 69 6e 67 20 2f  g))) // String /
df00: 20 45 78 70 61 6e 64 53 74 72 69 6e 67 0d 0a 20   ExpandString.. 
df10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df20: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
df30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
df40: 73 75 6c 74 20 3d 20 76 61 6c 75 65 2e 47 65 74  sult = value.Get
df50: 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 20 20 20  HashCode();..   
df60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df70: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
df80: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
df90: 28 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66  ((type == typeof
dfa0: 28 73 74 72 69 6e 67 5b 5d 29 29 20 7c 7c 20 2f  (string[])) || /
dfb0: 2f 20 4d 75 6c 74 69 53 74 72 69 6e 67 0d 0a 20  / MultiString.. 
dfc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfd0: 20 20 20 20 20 20 20 28 74 79 70 65 20 3d 3d 20         (type == 
dfe0: 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 29 29  typeof(byte[])))
dff0: 20 2f 2f 20 42 69 6e 61 72 79 0d 0a 20 20 20 20   // Binary..    
e000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e010: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e020: 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79             Array
e030: 20 61 72 72 61 79 20 3d 20 28 41 72 72 61 79 29   array = (Array)
e040: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
e050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e060: 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 61 72 72  int length = arr
e070: 61 79 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20  ay.Length;....  
e080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e090: 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
e0a0: 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20  ndex = 0; index 
e0b0: 3c 20 6c 65 6e 67 74 68 3b 20 69 6e 64 65 78 2b  < length; index+
e0c0: 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0f0: 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
e100: 74 20 65 6c 65 6d 65 6e 74 20 3d 20 61 72 72 61  t element = arra
e110: 79 2e 47 65 74 56 61 6c 75 65 28 69 6e 64 65 78  y.GetValue(index
e120: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
e130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e140: 20 20 69 66 20 28 65 6c 65 6d 65 6e 74 20 3d 3d    if (element ==
e150: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
e160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e170: 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
e180: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
e190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1a0: 20 72 65 73 75 6c 74 20 5e 3d 20 65 6c 65 6d 65   result ^= eleme
e1b0: 6e 74 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29  nt.GetHashCode()
e1c0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e1d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
e1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e1f0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
e200: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
e210: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
e220: 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20   result;..      
e230: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
e240: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
e250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
e290: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
e2a0: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 56   static string V
e2b0: 61 6c 75 65 54 6f 53 74 72 69 6e 67 28 0d 0a 20  alueToString(.. 
e2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
e2d0: 62 6a 65 63 74 20 76 61 6c 75 65 2c 0d 0a 20 20  bject value,..  
e2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
e2f0: 72 69 6e 67 20 64 65 6c 69 6d 69 74 65 72 2c 0d  ring delimiter,.
e300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e310: 20 73 74 72 69 6e 67 20 6e 75 6c 6c 56 61 6c 75   string nullValu
e320: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
e330: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
e340: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e350: 20 20 20 20 20 73 74 72 69 6e 67 20 72 65 73 75       string resu
e360: 6c 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  lt = null;....  
e370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
e380: 20 28 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29   (value != null)
e390: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e3a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
e3b0: 20 20 20 20 20 20 20 20 20 54 79 70 65 20 74 79           Type ty
e3c0: 70 65 20 3d 20 76 61 6c 75 65 2e 47 65 74 54 79  pe = value.GetTy
e3d0: 70 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  pe();....       
e3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
e3f0: 28 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66  ((type == typeof
e400: 28 69 6e 74 29 29 20 7c 7c 20 2f 2f 20 44 57 6f  (int)) || // DWo
e410: 72 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rd..            
e420: 20 20 20 20 20 20 20 20 20 20 20 20 28 74 79 70              (typ
e430: 65 20 3d 3d 20 74 79 70 65 6f 66 28 6c 6f 6e 67  e == typeof(long
e440: 29 29 20 7c 7c 20 2f 2f 20 51 57 6f 72 64 0d 0a  )) || // QWord..
e450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e460: 20 20 20 20 20 20 20 20 28 74 79 70 65 20 3d 3d          (type ==
e470: 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29   typeof(string))
e480: 29 20 2f 2f 20 53 74 72 69 6e 67 20 2f 20 45 78  ) // String / Ex
e490: 70 61 6e 64 53 74 72 69 6e 67 0d 0a 20 20 20 20  pandString..    
e4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e4c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c             resul
e4d0: 74 20 3d 20 76 61 6c 75 65 2e 54 6f 53 74 72 69  t = value.ToStri
e4e0: 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ng();..         
e4f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
e500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e510: 20 20 65 6c 73 65 20 69 66 20 28 28 74 79 70 65    else if ((type
e520: 20 3d 3d 20 74 79 70 65 6f 66 28 73 74 72 69 6e   == typeof(strin
e530: 67 5b 5d 29 29 20 7c 7c 20 2f 2f 20 4d 75 6c 74  g[])) || // Mult
e540: 69 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20  iString..       
e550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e560: 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66   (type == typeof
e570: 28 62 79 74 65 5b 5d 29 29 29 20 2f 2f 20 42 69  (byte[]))) // Bi
e580: 6e 61 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20  nary..          
e590: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
e5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5b0: 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64       StringBuild
e5c0: 65 72 20 62 75 69 6c 64 65 72 20 3d 20 6e 65 77  er builder = new
e5d0: 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29   StringBuilder()
e5e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e5f0: 20 20 20 20 20 20 20 20 20 20 20 41 72 72 61 79             Array
e600: 20 61 72 72 61 79 20 3d 20 28 41 72 72 61 79 29   array = (Array)
e610: 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
e620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e630: 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20 61 72 72  int length = arr
e640: 61 79 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20  ay.Length;....  
e650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e660: 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69        for (int i
e670: 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20  ndex = 0; index 
e680: 3c 20 6c 65 6e 67 74 68 3b 20 69 6e 64 65 78 2b  < length; index+
e690: 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +)..            
e6a0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
e6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e6c0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
e6d0: 69 6e 64 65 78 20 3e 20 30 29 20 26 26 20 28 64  index > 0) && (d
e6e0: 65 6c 69 6d 69 74 65 72 20 21 3d 20 6e 75 6c 6c  elimiter != null
e6f0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
e700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e710: 20 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65      builder.Appe
e720: 6e 64 28 64 65 6c 69 6d 69 74 65 72 29 3b 0d 0a  nd(delimiter);..
e730: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
e750: 6a 65 63 74 20 65 6c 65 6d 65 6e 74 20 3d 20 61  ject element = a
e760: 72 72 61 79 2e 47 65 74 56 61 6c 75 65 28 69 6e  rray.GetValue(in
e770: 64 65 78 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  dex);....       
e780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e790: 20 20 20 20 20 69 66 20 28 65 6c 65 6d 65 6e 74       if (element
e7a0: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
e7b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7e0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 75            if (nu
e7f0: 6c 6c 56 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29  llValue != null)
e800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e820: 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 70        builder.Ap
e830: 70 65 6e 64 28 6e 75 6c 6c 56 61 6c 75 65 29 3b  pend(nullValue);
e840: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e860: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
e870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e880: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
e890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8a0: 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c              buil
e8b0: 64 65 72 2e 41 70 70 65 6e 64 28 65 6c 65 6d 65  der.Append(eleme
e8c0: 6e 74 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d  nt.ToString());.
e8d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e8e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
e8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e900: 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 62        result = b
e910: 75 69 6c 64 65 72 2e 54 6f 53 74 72 69 6e 67 28  uilder.ToString(
e920: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
e930: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e940: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
e950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e960: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
e970: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
e980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
e990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e9e0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f  public static bo
e9f0: 6f 6c 20 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ol Equals(..    
ea00: 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b              Mock
ea10: 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 31  RegistryKey key1
ea20: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
ea30: 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
ea40: 65 79 20 6b 65 79 32 0d 0a 20 20 20 20 20 20 20  ey key2..       
ea50: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
ea60: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
ea70: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
ea80: 6b 65 79 31 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  key1 == null) ||
ea90: 20 28 6b 65 79 32 20 3d 3d 20 6e 75 6c 6c 29 29   (key2 == null))
eaa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
eab0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 6b        return ((k
eac0: 65 79 31 20 3d 3d 20 6e 75 6c 6c 29 20 26 26 20  ey1 == null) && 
ead0: 28 6b 65 79 32 20 3d 3d 20 6e 75 6c 6c 29 29 3b  (key2 == null));
eae0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
eaf0: 20 20 20 20 69 66 20 28 4f 62 6a 65 63 74 2e 52      if (Object.R
eb00: 65 66 65 72 65 6e 63 65 45 71 75 61 6c 73 28 6b  eferenceEquals(k
eb10: 65 79 31 2c 20 6b 65 79 32 29 29 0d 0a 20 20 20  ey1, key2))..   
eb20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb30: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d   return true;...
eb40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
eb50: 20 72 65 74 75 72 6e 20 4e 61 6d 65 45 71 75 61   return NameEqua
eb60: 6c 73 28 6b 65 79 31 2e 4e 61 6d 65 2c 20 6b 65  ls(key1.Name, ke
eb70: 79 32 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  y2.Name);..     
eb80: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
eb90: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
eba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ebd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
ebe0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
ebf0: 63 20 73 74 61 74 69 63 20 69 6e 74 20 47 65 74  c static int Get
ec00: 48 61 73 68 43 6f 64 65 28 0d 0a 20 20 20 20 20  HashCode(..     
ec10: 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52             MockR
ec20: 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a  egistryKey key..
ec30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec40: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
ec50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ec60: 20 20 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c    if (key != nul
ec70: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
ec80: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
ec90: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
eca0: 67 20 6e 61 6d 65 20 3d 20 6b 65 79 2e 4e 61 6d  g name = key.Nam
ecb0: 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
ecc0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 61            if (na
ecd0: 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me != null)..   
ece0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecf0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65       return name
ed00: 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d  .GetHashCode();.
ed10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ed20: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
ed30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0d        return 0;.
ed40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
ed50: 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
ed60: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
ed70: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
ed80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eda0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
edc0: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
edd0: 20 49 6d 70 6c 69 63 69 74 20 43 6f 6e 76 65 72   Implicit Conver
ede0: 73 69 6f 6e 20 4f 70 65 72 61 74 6f 72 73 0d 0a  sion Operators..
edf0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
ee00: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 42              // B
ee10: 55 47 42 55 47 3a 20 52 65 6d 6f 76 65 20 6d 65  UGBUG: Remove me
ee20: 3f 20 20 54 68 69 73 20 73 68 6f 75 6c 64 20 62  ?  This should b
ee30: 65 20 73 61 66 65 20 62 65 63 61 75 73 65 20 69  e safe because i
ee40: 6e 20 22 77 68 61 74 2d 69 66 22 0d 0a 20 20 20  n "what-if"..   
ee50: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
ee60: 20 20 20 20 6d 6f 64 65 20 61 6c 6c 20 6b 65 79      mode all key
ee70: 73 20 61 72 65 20 6f 70 65 6e 65 64 20 72 65 61  s are opened rea
ee80: 64 2d 6f 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 20  d-only...       
ee90: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
eea0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
eeb0: 69 63 20 69 6d 70 6c 69 63 69 74 20 6f 70 65 72  ic implicit oper
eec0: 61 74 6f 72 20 52 65 67 69 73 74 72 79 4b 65 79  ator RegistryKey
eed0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
eee0: 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
eef0: 65 79 20 6b 65 79 0d 0a 20 20 20 20 20 20 20 20  ey key..        
ef00: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
ef10: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
ef20: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
ef30: 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 20 3f   (key != null) ?
ef40: 20 6b 65 79 2e 4b 65 79 20 3a 20 6e 75 6c 6c 3b   key.Key : null;
ef50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
ef60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
ef70: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
ef80: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
ef90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
efc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
efd0: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
efe0: 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50  n IDisposable "P
eff0: 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d  attern" Members.
f000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
f010: 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73  vate bool dispos
f020: 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed;..           
f030: 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68   private void Ch
f040: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a  eckDisposed() /*
f050: 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
f060: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f070: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64            if (!d
f080: 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
f090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
f0a0: 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
f0b0: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
f0c0: 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  ew ObjectDispose
f0d0: 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  dException(..   
f0e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f0f0: 20 74 79 70 65 6f 66 28 4d 6f 63 6b 52 65 67 69   typeof(MockRegi
f100: 73 74 72 79 4b 65 79 29 2e 4e 61 6d 65 29 3b 0d  stryKey).Name);.
f110: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
f120: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
f130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f170: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
f180: 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74   private /* prot
f190: 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f  ected virtual */
f1a0: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 0d 0a   void Dispose(..
f1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1c0: 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 0d 0a  bool disposing..
f1d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f1e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
f1f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f200: 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29    if (!disposed)
f210: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f220: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f230: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
f240: 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
f250: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f270: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
f280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
f2a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2b0: 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65        // dispose
f2c0: 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
f2d0: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
f2e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f2f0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
f300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f310: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
f320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f330: 20 20 20 20 69 66 20 28 6b 65 79 20 21 3d 20 6e      if (key != n
f340: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
f350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
f360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f370: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f380: 28 21 6e 6f 43 6c 6f 73 65 29 0d 0a 20 20 20 20  (!noClose)..    
f390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3a0: 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e              key.
f3b0: 43 6c 6f 73 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  Close();....    
f3c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f3d0: 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6e 75          key = nu
f3e0: 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
f3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f410: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
f420: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
f430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f440: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f450: 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
f460: 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65           // rele
f470: 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65  ase unmanaged re
f480: 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d  sources here....
f490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f4a0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
f4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
f4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f4e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
f4f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
f500: 54 45 3a 20 54 68 69 73 20 6f 62 6a 65 63 74 20  TE: This object 
f510: 69 73 20 6e 6f 77 20 64 69 73 70 6f 73 65 64 2e  is now disposed.
f520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f530: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
f540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69                di
f550: 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a  sposed = true;..
f560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f570: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
f580: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
f590: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
f5a0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
f5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
f5f0: 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
f600: 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d  on IDisposable M
f610: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
f620: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
f630: 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20  Dispose()..     
f640: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
f650: 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
f660: 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20  e(true);..      
f670: 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75 70            GC.Sup
f680: 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68  pressFinalize(th
f690: 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  is);..          
f6a0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
f6b0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
f6c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
f6d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f710: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
f720: 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72  egion Destructor
f730: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7e 4d  ..            ~M
f740: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 29  ockRegistryKey()
f750: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
f760: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f770: 20 44 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b   Dispose(false);
f780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
f790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
f7a0: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20  dregion..       
f7b0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
f7c0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
f7d0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
f820: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 52 65 67       #region Reg
f830: 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
f840: 73 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20  s Class..       
f850: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
f860: 63 6c 61 73 73 20 52 65 67 69 73 74 72 79 52 6f  class RegistryRo
f870: 6f 74 4b 65 79 4e 61 6d 65 73 0d 0a 20 20 20 20  otKeyNames..    
f880: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f890: 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20     public const 
f8a0: 73 74 72 69 6e 67 20 48 4b 45 59 5f 43 4c 41 53  string HKEY_CLAS
f8b0: 53 45 53 5f 52 4f 4f 54 20 3d 20 22 48 4b 45 59  SES_ROOT = "HKEY
f8c0: 5f 43 4c 41 53 53 45 53 5f 52 4f 4f 54 22 3b 0d  _CLASSES_ROOT";.
f8d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
f8e0: 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  lic const string
f8f0: 20 48 4b 43 52 20 3d 20 22 48 4b 43 52 22 3b 0d   HKCR = "HKCR";.
f900: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
f910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f950: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
f960: 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73    public const s
f970: 74 72 69 6e 67 20 48 4b 45 59 5f 43 55 52 52 45  tring HKEY_CURRE
f980: 4e 54 5f 43 4f 4e 46 49 47 20 3d 20 22 48 4b 45  NT_CONFIG = "HKE
f990: 59 5f 43 55 52 52 45 4e 54 5f 43 4f 4e 46 49 47  Y_CURRENT_CONFIG
f9a0: 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
f9b0: 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72  public const str
f9c0: 69 6e 67 20 48 4b 43 43 20 3d 20 22 48 4b 43 43  ing HKCC = "HKCC
f9d0: 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ";....          
f9e0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa20: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
fa30: 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73       public cons
fa40: 74 20 73 74 72 69 6e 67 20 48 4b 45 59 5f 43 55  t string HKEY_CU
fa50: 52 52 45 4e 54 5f 55 53 45 52 20 3d 20 22 48 4b  RRENT_USER = "HK
fa60: 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45 52 22  EY_CURRENT_USER"
fa70: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
fa80: 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69  ublic const stri
fa90: 6e 67 20 48 4b 43 55 20 3d 20 22 48 4b 43 55 22  ng HKCU = "HKCU"
faa0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
fab0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
fac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faf0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
fb00: 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74      public const
fb10: 20 73 74 72 69 6e 67 20 48 4b 45 59 5f 44 59 4e   string HKEY_DYN
fb20: 5f 44 41 54 41 20 3d 20 22 48 4b 45 59 5f 44 59  _DATA = "HKEY_DY
fb30: 4e 5f 44 41 54 41 22 3b 0d 0a 20 20 20 20 20 20  N_DATA";..      
fb40: 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e        public con
fb50: 73 74 20 73 74 72 69 6e 67 20 48 4b 44 44 20 3d  st string HKDD =
fb60: 20 22 48 4b 44 44 22 3b 0d 0a 0d 0a 20 20 20 20   "HKDD";....    
fb70: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
fb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
fbc0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
fbd0: 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48  c const string H
fbe0: 4b 45 59 5f 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e  KEY_LOCAL_MACHIN
fbf0: 45 20 3d 20 22 48 4b 45 59 5f 4c 4f 43 41 4c 5f  E = "HKEY_LOCAL_
fc00: 4d 41 43 48 49 4e 45 22 3b 0d 0a 20 20 20 20 20  MACHINE";..     
fc10: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f         public co
fc20: 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 4c 4d 20  nst string HKLM 
fc30: 3d 20 22 48 4b 4c 4d 22 3b 0d 0a 0d 0a 20 20 20  = "HKLM";....   
fc40: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
fc50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
fc90: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
fca0: 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  ic const string 
fcb0: 48 4b 45 59 5f 50 45 52 46 4f 52 4d 41 4e 43 45  HKEY_PERFORMANCE
fcc0: 5f 44 41 54 41 20 3d 20 22 48 4b 45 59 5f 50 45  _DATA = "HKEY_PE
fcd0: 52 46 4f 52 4d 41 4e 43 45 5f 44 41 54 41 22 3b  RFORMANCE_DATA";
fce0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
fcf0: 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e  blic const strin
fd00: 67 20 48 4b 50 44 20 3d 20 22 48 4b 50 44 22 3b  g HKPD = "HKPD";
fd10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd60: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
fd70: 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20     public const 
fd80: 73 74 72 69 6e 67 20 48 4b 45 59 5f 55 53 45 52  string HKEY_USER
fd90: 53 20 3d 20 22 48 4b 45 59 5f 55 53 45 52 53 22  S = "HKEY_USERS"
fda0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
fdb0: 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69  ublic const stri
fdc0: 6e 67 20 48 4b 55 20 3d 20 22 48 4b 55 22 3b 0d  ng HKU = "HKU";.
fdd0: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
fde0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
fdf0: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
fe00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe40: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
fe50: 67 69 6f 6e 20 52 65 67 69 73 74 72 79 48 65 6c  gion RegistryHel
fe60: 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20 20 20  per Class..     
fe70: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
fe80: 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20  te Constants..  
fe90: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
fea0: 6e 73 74 20 63 68 61 72 20 4b 65 79 4e 61 6d 65  nst char KeyName
feb0: 53 65 70 61 72 61 74 6f 72 20 3d 20 27 5c 5c 27  Separator = '\\'
fec0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  ;....        ///
fed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff10: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
ff20: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
ff30: 65 61 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 4b  eadonly char[] K
ff40: 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 73  eyNameSeparators
ff50: 20 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20   = {..          
ff60: 20 20 4b 65 79 4e 61 6d 65 53 65 70 61 72 61 74    KeyNameSeparat
ff70: 6f 72 0d 0a 20 20 20 20 20 20 20 20 7d 3b 0d 0a  or..        };..
ff80: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
ff90: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
ffa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffe0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
fff0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
10000 63 6c 61 73 73 20 52 65 67 69 73 74 72 79 48 65  class RegistryHe
10010 6c 70 65 72 0d 0a 20 20 20 20 20 20 20 20 7b 0d  lper..        {.
10020 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
10030 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74  gion Private Dat
10040 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  a..            /
10050 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
10060 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20  / NOTE: This is 
10070 75 73 65 64 20 74 6f 20 73 79 6e 63 68 72 6f 6e  used to synchron
10080 69 7a 65 20 61 63 63 65 73 73 20 74 6f 20 74 68  ize access to th
10090 65 20 6c 69 73 74 20 6f 66 20 6c 6f 67 67 65 64  e list of logged
100a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
100b0 20 20 20 20 20 20 20 72 65 67 69 73 74 72 79 20         registry 
100c0 6f 70 65 72 61 74 69 6f 6e 73 20 28 6a 75 73 74  operations (just
100d0 20 62 65 6c 6f 77 29 2e 0d 0a 20 20 20 20 20 20   below)...      
100e0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
100f0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
10100 61 74 69 63 20 6f 62 6a 65 63 74 20 73 79 6e 63  atic object sync
10110 52 6f 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63  Root = new objec
10120 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t();....        
10130 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
10140 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
10150 73 20 69 73 20 74 68 65 20 6c 69 73 74 20 6f 66  s is the list of
10160 20 72 65 67 69 73 74 72 79 20 77 72 69 74 65 20   registry write 
10170 6f 70 65 72 61 74 69 6f 6e 73 20 77 68 65 6e 20  operations when 
10180 69 74 20 69 73 0d 0a 20 20 20 20 20 20 20 20 20  it is..         
10190 20 20 20 2f 2f 20 20 20 20 20 20 20 73 65 74 20     //       set 
101a0 74 6f 20 6e 6f 6e 2d 6e 75 6c 6c 2e 0d 0a 20 20  to non-null...  
101b0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
101c0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
101d0 65 20 73 74 61 74 69 63 20 52 65 67 69 73 74 72  e static Registr
101e0 79 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 6f  yOperationList o
101f0 70 65 72 61 74 69 6f 6e 4c 69 73 74 3b 0d 0a 20  perationList;.. 
10200 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
10210 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
10220 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
10230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10260 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
10270 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
10280 50 75 62 6c 69 63 20 53 74 61 74 69 63 20 50 72  Public Static Pr
10290 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
102a0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
102b0 61 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  atic MockRegistr
102c0 79 20 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74  y readOnlyRegist
102d0 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry;..           
102e0 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 4d   public static M
102f0 6f 63 6b 52 65 67 69 73 74 72 79 20 52 65 61 64  ockRegistry Read
10300 4f 6e 6c 79 52 65 67 69 73 74 72 79 0d 0a 20 20  OnlyRegistry..  
10310 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10320 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
10330 20 7b 20 72 65 74 75 72 6e 20 72 65 61 64 4f 6e   { return readOn
10340 6c 79 52 65 67 69 73 74 72 79 3b 20 7d 0d 0a 20  lyRegistry; }.. 
10350 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
10360 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
10370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
103b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
103c0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 4d 6f  rivate static Mo
103d0 63 6b 52 65 67 69 73 74 72 79 20 72 65 61 64 57  ckRegistry readW
103e0 72 69 74 65 52 65 67 69 73 74 72 79 3b 0d 0a 20  riteRegistry;.. 
103f0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
10400 63 20 73 74 61 74 69 63 20 4d 6f 63 6b 52 65 67  c static MockReg
10410 69 73 74 72 79 20 52 65 61 64 57 72 69 74 65 52  istry ReadWriteR
10420 65 67 69 73 74 72 79 0d 0a 20 20 20 20 20 20 20  egistry..       
10430 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10440 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
10450 74 75 72 6e 20 72 65 61 64 57 72 69 74 65 52 65  turn readWriteRe
10460 67 69 73 74 72 79 3b 20 7d 0d 0a 20 20 20 20 20  gistry; }..     
10470 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10480 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
10490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
104c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
104d0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
104e0 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 73 75  te static int su
104f0 62 4b 65 79 73 43 72 65 61 74 65 64 3b 0d 0a 20  bKeysCreated;.. 
10500 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
10510 63 20 73 74 61 74 69 63 20 69 6e 74 20 53 75 62  c static int Sub
10520 4b 65 79 73 43 72 65 61 74 65 64 0d 0a 20 20 20  KeysCreated..   
10530 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10540 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
10550 7b 20 72 65 74 75 72 6e 20 73 75 62 4b 65 79 73  { return subKeys
10560 43 72 65 61 74 65 64 3b 20 7d 0d 0a 20 20 20 20  Created; }..    
10570 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10580 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
10590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
105c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
105d0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
105e0 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 73  ate static int s
105f0 75 62 4b 65 79 73 44 65 6c 65 74 65 64 3b 0d 0a  ubKeysDeleted;..
10600 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
10610 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 53 75  ic static int Su
10620 62 4b 65 79 73 44 65 6c 65 74 65 64 0d 0a 20 20  bKeysDeleted..  
10630 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10640 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
10650 20 7b 20 72 65 74 75 72 6e 20 73 75 62 4b 65 79   { return subKey
10660 73 44 65 6c 65 74 65 64 3b 20 7d 0d 0a 20 20 20  sDeleted; }..   
10670 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
10680 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
10690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
106d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
106e0 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20  vate static int 
106f0 6b 65 79 56 61 6c 75 65 73 52 65 61 64 3b 0d 0a  keyValuesRead;..
10700 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
10710 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 4b 65  ic static int Ke
10720 79 56 61 6c 75 65 73 52 65 61 64 0d 0a 20 20 20  yValuesRead..   
10730 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
10740 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
10750 7b 20 72 65 74 75 72 6e 20 6b 65 79 56 61 6c 75  { return keyValu
10760 65 73 52 65 61 64 3b 20 7d 0d 0a 20 20 20 20 20  esRead; }..     
10770 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10780 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
10790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
107d0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
107e0 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 6b 65  te static int ke
107f0 79 56 61 6c 75 65 73 57 72 69 74 74 65 6e 3b 0d  yValuesWritten;.
10800 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
10810 6c 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 4b  lic static int K
10820 65 79 56 61 6c 75 65 73 57 72 69 74 74 65 6e 0d  eyValuesWritten.
10830 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
10840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10850 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6b 65 79  get { return key
10860 56 61 6c 75 65 73 57 72 69 74 74 65 6e 3b 20 7d  ValuesWritten; }
10870 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
10880 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
10890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108d0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
108e0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
108f0 20 69 6e 74 20 6b 65 79 56 61 6c 75 65 73 44 65   int keyValuesDe
10900 6c 65 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  leted;..        
10910 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
10920 63 20 69 6e 74 20 4b 65 79 56 61 6c 75 65 73 44  c int KeyValuesD
10930 65 6c 65 74 65 64 0d 0a 20 20 20 20 20 20 20 20  eleted..        
10940 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10950 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
10960 75 72 6e 20 6b 65 79 56 61 6c 75 65 73 44 65 6c  urn keyValuesDel
10970 65 74 65 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20  eted; }..       
10980 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
10990 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
109a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
109b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
10a00 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
10a10 53 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a  Static Methods..
10a20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
10a30 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 45  ic static void E
10a40 6e 61 62 6c 65 4f 72 44 69 73 61 62 6c 65 4f 70  nableOrDisableOp
10a50 65 72 61 74 69 6f 6e 4c 69 73 74 28 0d 0a 20 20  erationList(..  
10a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
10a70 6f 6c 20 65 6e 61 62 6c 65 0d 0a 20 20 20 20 20  ol enable..     
10a80 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
10a90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63               loc
10ab0 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 2f 2a 20  k (syncRoot) /* 
10ac0 54 52 41 4e 53 41 43 54 49 4f 4e 41 4c 20 2a 2f  TRANSACTIONAL */
10ad0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10ae0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10af0 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6e 61           if (ena
10b00 62 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ble)..          
10b10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b30 20 20 20 20 20 69 66 20 28 6f 70 65 72 61 74 69       if (operati
10b40 6f 6e 4c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d  onList == null).
10b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10b60 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65               ope
10b70 72 61 74 69 6f 6e 4c 69 73 74 20 3d 20 6e 65 77  rationList = new
10b80 20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69   RegistryOperati
10b90 6f 6e 4c 69 73 74 28 29 3b 0d 0a 20 20 20 20 20  onList();..     
10ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
10bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10bc0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6f        else if (o
10bd0 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 21 3d 20  perationList != 
10be0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
10bf0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c10 20 20 20 20 20 20 6f 70 65 72 61 74 69 6f 6e 4c        operationL
10c20 69 73 74 2e 44 69 73 70 6f 73 65 28 29 3b 0d 0a  ist.Dispose();..
10c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c40 20 20 20 20 20 20 20 20 6f 70 65 72 61 74 69 6f          operatio
10c50 6e 4c 69 73 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  nList = null;.. 
10c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10c70 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
10c80 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
10c90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
10ca0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
10cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
10cf0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
10d00 73 74 61 74 69 63 20 76 6f 69 64 20 52 65 69 6e  static void Rein
10d10 69 74 69 61 6c 69 7a 65 44 65 66 61 75 6c 74 52  itializeDefaultR
10d20 65 67 69 73 74 72 69 65 73 28 0d 0a 20 20 20 20  egistries(..    
10d30 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
10d40 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20   whatIf,..      
10d50 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73            bool s
10d60 61 66 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  afe..           
10d70 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
10d80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
10d90 20 20 20 20 20 20 20 69 66 20 28 72 65 61 64 4f         if (readO
10da0 6e 6c 79 52 65 67 69 73 74 72 79 20 21 3d 20 6e  nlyRegistry != n
10db0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
10dc0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
10dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61               rea
10de0 64 4f 6e 6c 79 52 65 67 69 73 74 72 79 2e 44 69  dOnlyRegistry.Di
10df0 73 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20  spose();..      
10e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10e10 61 64 4f 6e 6c 79 52 65 67 69 73 74 72 79 20 3d  adOnlyRegistry =
10e20 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
10e30 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10e40 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
10e50 28 72 65 61 64 57 72 69 74 65 52 65 67 69 73 74  (readWriteRegist
10e60 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
10e70 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
10e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10e90 20 20 20 20 72 65 61 64 57 72 69 74 65 52 65 67      readWriteReg
10ea0 69 73 74 72 79 2e 44 69 73 70 6f 73 65 28 29 3b  istry.Dispose();
10eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10ec0 20 20 20 20 20 20 72 65 61 64 57 72 69 74 65 52        readWriteR
10ed0 65 67 69 73 74 72 79 20 3d 20 6e 75 6c 6c 3b 0d  egistry = null;.
10ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10ef0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
10f00 20 20 20 20 20 20 72 65 61 64 4f 6e 6c 79 52 65        readOnlyRe
10f10 67 69 73 74 72 79 20 3d 20 6e 65 77 20 4d 6f 63  gistry = new Moc
10f20 6b 52 65 67 69 73 74 72 79 28 77 68 61 74 49 66  kRegistry(whatIf
10f30 2c 20 74 72 75 65 2c 20 73 61 66 65 29 3b 0d 0a  , true, safe);..
10f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f50 72 65 61 64 57 72 69 74 65 52 65 67 69 73 74 72  readWriteRegistr
10f60 79 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69  y = new MockRegi
10f70 73 74 72 79 28 77 68 61 74 49 66 2c 20 66 61 6c  stry(whatIf, fal
10f80 73 65 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20  se, safe);..    
10f90 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
10fa0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
10fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10ff0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
11000 69 63 20 73 74 61 74 69 63 20 4d 6f 63 6b 52 65  ic static MockRe
11010 67 69 73 74 72 79 4b 65 79 20 47 65 74 52 65 61  gistryKey GetRea
11020 64 4f 6e 6c 79 52 6f 6f 74 4b 65 79 28 0d 0a 20  dOnlyRootKey(.. 
11030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
11040 74 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20  tring name..    
11050 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
11060 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11080 74 75 72 6e 20 47 65 74 52 6f 6f 74 4b 65 79 28  turn GetRootKey(
11090 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74 72 79  readOnlyRegistry
110a0 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  , name);..      
110b0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
110c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
110d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11110 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
11120 20 73 74 61 74 69 63 20 4d 6f 63 6b 52 65 67 69   static MockRegi
11130 73 74 72 79 4b 65 79 20 47 65 74 52 65 61 64 57  stryKey GetReadW
11140 72 69 74 65 52 6f 6f 74 4b 65 79 28 0d 0a 20 20  riteRootKey(..  
11150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
11160 72 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20 20  ring name..     
11170 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
11180 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11190 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
111a0 75 72 6e 20 47 65 74 52 6f 6f 74 4b 65 79 28 72  urn GetRootKey(r
111b0 65 61 64 57 72 69 74 65 52 65 67 69 73 74 72 79  eadWriteRegistry
111c0 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  , name);..      
111d0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
111e0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
111f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11230 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
11240 20 73 74 61 74 69 63 20 4d 6f 63 6b 52 65 67 69   static MockRegi
11250 73 74 72 79 4b 65 79 20 47 65 74 52 6f 6f 74 4b  stryKey GetRootK
11260 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
11270 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72       MockRegistr
11280 79 20 72 65 67 69 73 74 72 79 2c 0d 0a 20 20 20  y registry,..   
11290 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
112a0 69 6e 67 20 6e 61 6d 65 0d 0a 20 20 20 20 20 20  ing name..      
112b0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
112c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
112d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
112e0 72 65 67 69 73 74 72 79 20 3d 3d 20 6e 75 6c 6c  registry == null
112f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11300 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
11310 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
11320 20 20 20 20 20 20 20 69 66 20 28 4d 6f 63 6b 52         if (MockR
11330 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45  egistryKey.NameE
11340 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
11350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11360 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f  name, RegistryRo
11370 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 45 59 5f  otKeyNames.HKEY_
11380 43 4c 41 53 53 45 53 5f 52 4f 4f 54 29 20 7c 7c  CLASSES_ROOT) ||
11390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
113a0 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74        MockRegist
113b0 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73  ryKey.NameEquals
113c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
113d0 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c             name,
113e0 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79   RegistryRootKey
113f0 4e 61 6d 65 73 2e 48 4b 43 52 29 29 0d 0a 20 20  Names.HKCR))..  
11400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11420 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 67 69       return regi
11430 73 74 72 79 2e 43 6c 61 73 73 65 73 52 6f 6f 74  stry.ClassesRoot
11440 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11450 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
11460 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
11470 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e  ockRegistryKey.N
11480 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ameEquals(..    
11490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
114a0 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74      name, Regist
114b0 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48  ryRootKeyNames.H
114c0 4b 45 59 5f 43 55 52 52 45 4e 54 5f 43 4f 4e 46  KEY_CURRENT_CONF
114d0 49 47 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  IG) ||..        
114e0 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b              Mock
114f0 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65  RegistryKey.Name
11500 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20  Equals(..       
11510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11520 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52   name, RegistryR
11530 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 43 43  ootKeyNames.HKCC
11540 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
11550 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11560 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11570 6e 20 72 65 67 69 73 74 72 79 2e 43 75 72 72 65  n registry.Curre
11580 6e 74 43 6f 6e 66 69 67 3b 0d 0a 20 20 20 20 20  ntConfig;..     
11590 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
115a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
115b0 73 65 20 69 66 20 28 4d 6f 63 6b 52 65 67 69 73  se if (MockRegis
115c0 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c  tryKey.NameEqual
115d0 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
115e0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65              name
115f0 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65  , RegistryRootKe
11600 79 4e 61 6d 65 73 2e 48 4b 45 59 5f 43 55 52 52  yNames.HKEY_CURR
11610 45 4e 54 5f 55 53 45 52 29 20 7c 7c 0d 0a 20 20  ENT_USER) ||..  
11620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11630 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
11640 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  y.NameEquals(.. 
11650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11660 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67         name, Reg
11670 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
11680 73 2e 48 4b 43 55 29 29 0d 0a 20 20 20 20 20 20  s.HKCU))..      
11690 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
116a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
116b0 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72 79   return registry
116c0 2e 43 75 72 72 65 6e 74 55 73 65 72 3b 0d 0a 20  .CurrentUser;.. 
116d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
116e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
116f0 20 20 65 6c 73 65 20 69 66 20 28 4d 6f 63 6b 52    else if (MockR
11700 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45  egistryKey.NameE
11710 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
11720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11730 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f  name, RegistryRo
11740 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 45 59 5f  otKeyNames.HKEY_
11750 44 59 4e 5f 44 41 54 41 29 20 7c 7c 0d 0a 20 20  DYN_DATA) ||..  
11760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11770 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
11780 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  y.NameEquals(.. 
11790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
117a0 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67         name, Reg
117b0 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
117c0 73 2e 48 4b 44 44 29 29 0d 0a 20 20 20 20 20 20  s.HKDD))..      
117d0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
117e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
117f0 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72 79   return registry
11800 2e 44 79 6e 44 61 74 61 3b 0d 0a 20 20 20 20 20  .DynData;..     
11810 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
11830 73 65 20 69 66 20 28 4d 6f 63 6b 52 65 67 69 73  se if (MockRegis
11840 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c  tryKey.NameEqual
11850 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
11860 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65              name
11870 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65  , RegistryRootKe
11880 79 4e 61 6d 65 73 2e 48 4b 45 59 5f 4c 4f 43 41  yNames.HKEY_LOCA
11890 4c 5f 4d 41 43 48 49 4e 45 29 20 7c 7c 0d 0a 20  L_MACHINE) ||.. 
118a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
118b0 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
118c0 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a  ey.NameEquals(..
118d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
118e0 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65          name, Re
118f0 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d  gistryRootKeyNam
11900 65 73 2e 48 4b 4c 4d 29 29 0d 0a 20 20 20 20 20  es.HKLM))..     
11910 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11930 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72    return registr
11940 79 2e 4c 6f 63 61 6c 4d 61 63 68 69 6e 65 3b 0d  y.LocalMachine;.
11950 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11960 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11970 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 6f 63      else if (Moc
11980 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d  kRegistryKey.Nam
11990 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20  eEquals(..      
119a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119b0 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79    name, Registry
119c0 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 45  RootKeyNames.HKE
119d0 59 5f 50 45 52 46 4f 52 4d 41 4e 43 45 5f 44 41  Y_PERFORMANCE_DA
119e0 54 41 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20  TA) ||..        
119f0 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b              Mock
11a00 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65  RegistryKey.Name
11a10 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20  Equals(..       
11a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a30 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52   name, RegistryR
11a40 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 50 44  ootKeyNames.HKPD
11a50 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
11a60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11a70 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11a80 6e 20 72 65 67 69 73 74 72 79 2e 50 65 72 66 6f  n registry.Perfo
11a90 72 6d 61 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20  rmanceData;..   
11aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
11ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ac0 65 6c 73 65 20 69 66 20 28 4d 6f 63 6b 52 65 67  else if (MockReg
11ad0 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75  istryKey.NameEqu
11ae0 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  als(..          
11af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
11b00 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74  me, RegistryRoot
11b10 4b 65 79 4e 61 6d 65 73 2e 48 4b 45 59 5f 55 53  KeyNames.HKEY_US
11b20 45 52 53 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  ERS) ||..       
11b30 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
11b40 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d  kRegistryKey.Nam
11b50 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20  eEquals(..      
11b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b70 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79    name, Registry
11b80 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 55  RootKeyNames.HKU
11b90 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
11ba0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11bb0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
11bc0 6e 20 72 65 67 69 73 74 72 79 2e 55 73 65 72 73  n registry.Users
11bd0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11be0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
11bf0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
11c00 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
11c10 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
11c20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
11c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c60 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
11c70 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
11c80 74 69 63 20 73 74 72 69 6e 67 20 4a 6f 69 6e 4b  tic string JoinK
11c90 65 79 4e 61 6d 65 73 28 0d 0a 20 20 20 20 20 20  eyNames(..      
11ca0 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 73            params
11cb0 20 73 74 72 69 6e 67 5b 5d 20 6e 61 6d 65 73 0d   string[] names.
11cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11cd0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
11ce0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
11cf0 20 20 20 69 66 20 28 28 6e 61 6d 65 73 20 3d 3d     if ((names ==
11d00 20 6e 75 6c 6c 29 20 7c 7c 20 28 6e 61 6d 65 73   null) || (names
11d10 2e 4c 65 6e 67 74 68 20 3d 3d 20 30 29 29 0d 0a  .Length == 0))..
11d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d30 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
11d40 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11d50 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64 65      StringBuilde
11d60 72 20 62 75 69 6c 64 65 72 20 3d 20 6e 65 77 20  r builder = new 
11d70 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29 3b  StringBuilder();
11d80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
11d90 20 20 20 20 66 6f 72 65 61 63 68 20 28 73 74 72      foreach (str
11da0 69 6e 67 20 6e 61 6d 65 20 69 6e 20 6e 61 6d 65  ing name in name
11db0 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
11dc0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11dd0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e             if (n
11de0 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame == null)..  
11df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e00 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
11e10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11e20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 65         string ne
11e30 77 4e 61 6d 65 20 3d 20 6e 61 6d 65 2e 54 72 69  wName = name.Tri
11e40 6d 28 4b 65 79 4e 61 6d 65 53 65 70 61 72 61 74  m(KeyNameSeparat
11e50 6f 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  or);....        
11e60 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
11e70 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
11e80 6d 70 74 79 28 6e 65 77 4e 61 6d 65 29 29 0d 0a  mpty(newName))..
11e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ea0 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
11eb0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
11ec0 20 20 20 20 20 20 20 20 20 69 66 20 28 62 75 69           if (bui
11ed0 6c 64 65 72 2e 4c 65 6e 67 74 68 20 3e 20 30 29  lder.Length > 0)
11ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11ef0 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
11f00 72 2e 41 70 70 65 6e 64 28 4b 65 79 4e 61 6d 65  r.Append(KeyName
11f10 53 65 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a 20  Separator);.... 
11f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f30 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e     builder.Appen
11f40 64 28 6e 65 77 4e 61 6d 65 29 3b 0d 0a 20 20 20  d(newName);..   
11f50 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
11f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11f70 20 20 72 65 74 75 72 6e 20 62 75 69 6c 64 65 72    return builder
11f80 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
11f90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
11fa0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
11fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
11ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
12000 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
12010 6e 67 20 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28  ng JoinKeyNames(
12020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12030 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
12040 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
12050 20 20 20 20 20 20 20 20 70 61 72 61 6d 73 20 73          params s
12060 74 72 69 6e 67 5b 5d 20 6e 61 6d 65 73 0d 0a 20  tring[] names.. 
12070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
12080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
12090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
120a0 20 73 74 72 69 6e 67 20 72 65 73 75 6c 74 20 3d   string result =
120b0 20 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 6e 61   JoinKeyNames(na
120c0 6d 65 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  mes);....       
120d0 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
120e0 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
120f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12100 65 73 75 6c 74 20 3d 20 4a 6f 69 6e 4b 65 79 4e  esult = JoinKeyN
12110 61 6d 65 73 28 6b 65 79 2e 4e 61 6d 65 2c 20 72  ames(key.Name, r
12120 65 73 75 6c 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  esult);....     
12130 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12140 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
12150 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12160 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
12170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
121b0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
121c0 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 5b  c static string[
121d0 5d 20 53 70 6c 69 74 4b 65 79 4e 61 6d 65 28 0d  ] SplitKeyName(.
121e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
121f0 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65 0d   string keyName.
12200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12210 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
12220 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12230 20 20 20 69 66 20 28 6b 65 79 4e 61 6d 65 20 3d     if (keyName =
12240 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
12250 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12260 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
12270 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
12280 75 72 6e 20 6b 65 79 4e 61 6d 65 2e 53 70 6c 69  urn keyName.Spli
12290 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
122a0 20 20 20 20 20 20 20 20 4b 65 79 4e 61 6d 65 53          KeyNameS
122b0 65 70 61 72 61 74 6f 72 73 2c 20 53 74 72 69 6e  eparators, Strin
122c0 67 53 70 6c 69 74 4f 70 74 69 6f 6e 73 2e 52 65  gSplitOptions.Re
122d0 6d 6f 76 65 45 6d 70 74 79 45 6e 74 72 69 65 73  moveEmptyEntries
122e0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
122f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
12300 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
12310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12340 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
12350 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
12360 63 20 73 74 72 69 6e 67 20 4c 61 73 74 53 75 62  c string LastSub
12370 4b 65 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  KeyName(..      
12380 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
12390 20 6b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20   keyName..      
123a0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
123b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
123c0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
123d0 6e 67 5b 5d 20 73 75 62 4b 65 79 4e 61 6d 65 73  ng[] subKeyNames
123e0 20 3d 20 53 70 6c 69 74 4b 65 79 4e 61 6d 65 28   = SplitKeyName(
123f0 6b 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  keyName);....   
12400 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
12410 28 28 73 75 62 4b 65 79 4e 61 6d 65 73 20 3d 3d  ((subKeyNames ==
12420 20 6e 75 6c 6c 29 20 7c 7c 20 28 73 75 62 4b 65   null) || (subKe
12430 79 4e 61 6d 65 73 2e 4c 65 6e 67 74 68 20 3d 3d  yNames.Length ==
12440 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20   0))..          
12450 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12460 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20   null;....      
12470 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12480 20 73 75 62 4b 65 79 4e 61 6d 65 73 5b 73 75 62   subKeyNames[sub
12490 4b 65 79 4e 61 6d 65 73 2e 4c 65 6e 67 74 68 20  KeyNames.Length 
124a0 2d 20 31 5d 3b 0d 0a 20 20 20 20 20 20 20 20 20  - 1];..         
124b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
124c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
124d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
124f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12500 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
12510 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d         [MethodIm
12520 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74  pl(MethodImplOpt
12530 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29  ions.NoInlining)
12540 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ]..            p
12550 75 62 6c 69 63 20 73 74 61 74 69 63 20 4d 6f 63  ublic static Moc
12560 6b 52 65 67 69 73 74 72 79 4b 65 79 20 4f 70 65  kRegistryKey Ope
12570 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  nSubKey(..      
12580 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
12590 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65  gistryKey rootKe
125a0 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
125b0 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
125c0 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  yName,..        
125d0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 72 69          bool wri
125e0 74 61 62 6c 65 2c 0d 0a 20 20 20 20 20 20 20 20  table,..        
125f0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
12600 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
12610 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f        bool verbo
12620 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
12630 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
12640 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12650 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
12660 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
12670 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12680 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
12690 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
126a0 65 28 77 72 69 74 61 62 6c 65 20 3f 0d 0a 20 20  e(writable ?..  
126b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126c0 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
126d0 69 74 79 2e 48 69 67 68 65 73 74 20 3a 20 54 72  ity.Highest : Tr
126e0 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68  acePriority.High
126f0 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  er,..           
12700 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
12710 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63  ugCallback, trac
12720 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
12730 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
12740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12750 20 20 20 22 72 6f 6f 74 4b 65 79 20 3d 20 7b 30     "rootKey = {0
12760 7d 2c 20 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20  }, subKeyName = 
12770 7b 31 7d 2c 20 77 72 69 74 61 62 6c 65 20 3d 20  {1}, writable = 
12780 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {2}",..         
12790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
127a0 6f 72 44 69 73 70 6c 61 79 28 72 6f 6f 74 4b 65  orDisplay(rootKe
127b0 79 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 73  y), ForDisplay(s
127c0 75 62 4b 65 79 4e 61 6d 65 29 2c 0d 0a 20 20 20  ubKeyName),..   
127d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
127e0 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
127f0 77 72 69 74 61 62 6c 65 29 29 2c 20 74 72 61 63  writable)), trac
12800 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
12810 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
12820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12830 20 20 69 66 20 28 72 6f 6f 74 4b 65 79 20 3d 3d    if (rootKey ==
12840 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
12850 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12860 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
12870 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
12880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12890 2f 2f 20 48 41 43 4b 3a 20 41 6c 77 61 79 73 20  // HACK: Always 
128a0 66 6f 72 62 69 64 20 77 72 69 74 61 62 6c 65 20  forbid writable 
128b0 61 63 63 65 73 73 20 77 68 65 6e 20 6f 70 65 72  access when oper
128c0 61 74 69 6e 67 20 69 6e 0d 0a 20 20 20 20 20 20  ating in..      
128d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
128e0 20 20 20 22 77 68 61 74 2d 69 66 22 20 6d 6f 64     "what-if" mod
128f0 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
12900 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12910 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69          MockRegi
12920 73 74 72 79 4b 65 79 20 6b 65 79 20 3d 20 72 6f  stryKey key = ro
12930 6f 74 4b 65 79 2e 4f 70 65 6e 53 75 62 4b 65 79  otKey.OpenSubKey
12940 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
12950 20 20 20 20 20 20 20 73 75 62 4b 65 79 4e 61 6d         subKeyNam
12960 65 2c 20 77 68 61 74 49 66 20 3f 20 66 61 6c 73  e, whatIf ? fals
12970 65 20 3a 20 77 72 69 74 61 62 6c 65 29 3b 0d 0a  e : writable);..
12980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12990 20 20 72 65 74 75 72 6e 20 28 6b 65 79 20 21 3d    return (key !=
129a0 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20   null) ?..      
129b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65                ne
129c0 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  w MockRegistryKe
129d0 79 28 6b 65 79 2c 20 77 68 61 74 49 66 2c 20 66  y(key, whatIf, f
129e0 61 6c 73 65 2c 20 66 61 6c 73 65 29 20 3a 20 6e  alse, false) : n
129f0 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
12a00 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
12a10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
12a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a50 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
12a60 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70        [MethodImp
12a70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69  l(MethodImplOpti
12a80 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d  ons.NoInlining)]
12a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
12aa0 62 6c 69 63 20 73 74 61 74 69 63 20 4d 6f 63 6b  blic static Mock
12ab0 52 65 67 69 73 74 72 79 4b 65 79 20 43 72 65 61  RegistryKey Crea
12ac0 74 65 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20  teSubKey(..     
12ad0 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52             MockR
12ae0 65 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b  egistryKey rootK
12af0 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey,..           
12b00 20 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b       string subK
12b10 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  eyName,..       
12b20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68           bool wh
12b30 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20  atIf,..         
12b40 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62         bool verb
12b50 6f 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ose..           
12b60 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
12b70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12b80 20 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f         if (verbo
12b90 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se)..           
12ba0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
12bb0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
12bc0 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
12bd0 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79  ce(TracePriority
12be0 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20  .Highest,..     
12bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c00 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b     debugCallback
12c10 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  , traceCallback,
12c20 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
12c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12c40 20 20 20 20 20 20 20 20 20 22 72 6f 6f 74 4b 65           "rootKe
12c50 79 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79 4e  y = {0}, subKeyN
12c60 61 6d 65 20 3d 20 7b 31 7d 22 2c 0d 0a 20 20 20  ame = {1}",..   
12c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c80 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
12c90 72 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69 73  rootKey), ForDis
12ca0 70 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65 29  play(subKeyName)
12cb0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
12cc0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
12cd0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
12ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
12cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12d00 20 20 69 66 20 28 72 6f 6f 74 4b 65 79 20 3d 3d    if (rootKey ==
12d10 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
12d20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12d30 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
12d40 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
12d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12d60 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12d70 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
12d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d90 2f 2f 20 48 41 43 4b 3a 20 41 6c 77 61 79 73 20  // HACK: Always 
12da0 6f 70 65 6e 20 61 20 6b 65 79 2c 20 72 61 74 68  open a key, rath
12db0 65 72 20 74 68 61 6e 20 63 72 65 61 74 69 6e 67  er than creating
12dc0 20 6f 6e 65 20 77 68 65 6e 0d 0a 20 20 20 20 20   one when..     
12dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
12de0 2f 20 20 20 20 20 20 20 6f 70 65 72 61 74 69 6e  /       operatin
12df0 67 20 69 6e 20 22 77 68 61 74 2d 69 66 22 20 6d  g in "what-if" m
12e00 6f 64 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ode...          
12e10 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
12e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e30 20 20 69 66 20 28 77 68 61 74 49 66 29 0d 0a 20    if (whatIf).. 
12e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
12e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
12e70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12e80 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43            // HAC
12e90 4b 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 6f 70  K: Attempt to op
12ea0 65 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64  en the specified
12eb0 20 73 75 62 2d 6b 65 79 2e 20 20 49 66 0d 0a 20   sub-key.  If.. 
12ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ed0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
12ee0 74 68 69 73 20 66 61 69 6c 73 2c 20 77 65 20 77  this fails, we w
12ef0 69 6c 6c 20 73 69 6d 70 6c 79 20 72 65 74 75 72  ill simply retur
12f00 6e 20 74 68 65 20 72 6f 6f 74 0d 0a 20 20 20 20  n the root..    
12f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6b 65 79      //       key
12f30 20 69 74 73 65 6c 66 20 73 69 6e 63 65 20 6e 6f   itself since no
12f40 20 77 72 69 74 65 73 20 61 72 65 20 61 6c 6c 6f   writes are allo
12f50 77 65 64 20 69 6e 0d 0a 20 20 20 20 20 20 20 20  wed in..        
12f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f70 2f 2f 20 20 20 20 20 20 20 22 77 68 61 74 2d 69  //       "what-i
12f80 66 22 20 6d 6f 64 65 20 61 6e 79 68 6f 77 2e 0d  f" mode anyhow..
12f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12fa0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
12fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12fc0 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72       MockRegistr
12fd0 79 4b 65 79 20 6b 65 79 20 3d 20 72 6f 6f 74 4b  yKey key = rootK
12fe0 65 79 2e 4f 70 65 6e 53 75 62 4b 65 79 28 73 75  ey.OpenSubKey(su
12ff0 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  bKeyName);....  
13000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13010 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 6b 65        return (ke
13020 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20  y != null) ?..  
13030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13040 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3a 20            key : 
13050 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  new MockRegistry
13060 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
13070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13080 20 20 20 20 20 20 72 6f 6f 74 4b 65 79 2c 20 73        rootKey, s
13090 75 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61 74 49  ubKeyName, whatI
130a0 66 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 29  f, false, false)
130b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
130c0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
130d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
130e0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
130f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
13100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13110 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 4d 6f     return new Mo
13120 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a  ckRegistryKey(..
13130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13140 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f 74              root
13150 4b 65 79 2e 43 72 65 61 74 65 53 75 62 4b 65 79  Key.CreateSubKey
13160 28 73 75 62 4b 65 79 4e 61 6d 65 29 2c 20 77 68  (subKeyName), wh
13170 61 74 49 66 2c 20 66 61 6c 73 65 2c 0d 0a 20 20  atIf, false,..  
13180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13190 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65 29            false)
131a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
131b0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
131c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
131d0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6e               fin
131e0 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  ally..          
131f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13200 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 79               May
13210 62 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47  beLogOperation(G
13220 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20  etMethodName(), 
13230 72 6f 6f 74 4b 65 79 2c 20 73 75 62 4b 65 79 4e  rootKey, subKeyN
13240 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
13250 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62               sub
13260 4b 65 79 73 43 72 65 61 74 65 64 2b 2b 3b 0d 0a  KeysCreated++;..
13270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13280 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
13290 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
132a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
132e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
132f0 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d     [MethodImpl(M
13300 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73  ethodImplOptions
13310 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20  .NoInlining)].. 
13320 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
13330 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 44 65  c static void De
13340 6c 65 74 65 53 75 62 4b 65 79 28 0d 0a 20 20 20  leteSubKey(..   
13350 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
13360 6b 52 65 67 69 73 74 72 79 4b 65 79 20 72 6f 6f  kRegistryKey roo
13370 74 4b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tKey,..         
13380 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 75         string su
13390 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  bKeyName,..     
133a0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
133b0 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 2c 0d  throwOnMissing,.
133c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
133d0 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20   bool whatIf,.. 
133e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
133f0 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20  ool verbose..   
13400 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
13410 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
13430 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20  f (verbose)..   
13440 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
13450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13460 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
13470 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
13480 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74  Priority.Highest
13490 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
134a0 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
134b0 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
134c0 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
134d0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
134e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
134f0 20 22 72 6f 6f 74 4b 65 79 20 3d 20 7b 30 7d 2c   "rootKey = {0},
13500 20 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20 7b 31   subKeyName = {1
13510 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
13520 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
13530 44 69 73 70 6c 61 79 28 72 6f 6f 74 4b 65 79 29  Display(rootKey)
13540 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 73 75 62  , ForDisplay(sub
13550 4b 65 79 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20  KeyName)),..    
13560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13570 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
13580 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
13590 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
135a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 6f            if (ro
135b0 6f 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  otKey == null)..
135c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135d0 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
135e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
135f0 66 20 28 21 77 68 61 74 49 66 29 0d 0a 20 20 20  f (!whatIf)..   
13600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13610 20 72 6f 6f 74 4b 65 79 2e 44 65 6c 65 74 65 53   rootKey.DeleteS
13620 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65  ubKey(subKeyName
13630 2c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67  , throwOnMissing
13640 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
13650 20 20 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70        MaybeLogOp
13660 65 72 61 74 69 6f 6e 28 47 65 74 4d 65 74 68 6f  eration(GetMetho
13670 64 4e 61 6d 65 28 29 2c 20 72 6f 6f 74 4b 65 79  dName(), rootKey
13680 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a  , subKeyName);..
13690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
136a0 20 20 73 75 62 4b 65 79 73 44 65 6c 65 74 65 64    subKeysDeleted
136b0 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
136c0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
136d0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
136e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
136f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13710 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
13720 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c       [MethodImpl
13730 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f  (MethodImplOptio
13740 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d  ns.NoInlining)].
13750 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
13760 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20  lic static void 
13770 44 65 6c 65 74 65 53 75 62 4b 65 79 54 72 65 65  DeleteSubKeyTree
13780 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
13790 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
137a0 65 79 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20  ey rootKey,..   
137b0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
137c0 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d  ing subKeyName,.
137d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
137e0 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20   bool whatIf,.. 
137f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
13800 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20  ool verbose..   
13810 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
13820 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
13840 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20  f (verbose)..   
13850 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
13860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13870 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
13880 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
13890 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74  Priority.Highest
138a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
138b0 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
138c0 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
138d0 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
138e0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
138f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13900 20 22 72 6f 6f 74 4b 65 79 20 3d 20 7b 30 7d 2c   "rootKey = {0},
13910 20 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20 7b 31   subKeyName = {1
13920 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
13930 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
13940 44 69 73 70 6c 61 79 28 72 6f 6f 74 4b 65 79 29  Display(rootKey)
13950 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 73 75 62  , ForDisplay(sub
13960 4b 65 79 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20  KeyName)),..    
13970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13980 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
13990 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
139a0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
139b0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 6f            if (ro
139c0 6f 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  otKey == null)..
139d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
139e0 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
139f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
13a00 66 20 28 21 77 68 61 74 49 66 29 0d 0a 20 20 20  f (!whatIf)..   
13a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a20 20 72 6f 6f 74 4b 65 79 2e 44 65 6c 65 74 65 53   rootKey.DeleteS
13a30 75 62 4b 65 79 54 72 65 65 28 73 75 62 4b 65 79  ubKeyTree(subKey
13a40 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
13a50 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 4c            MaybeL
13a60 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47 65 74 4d  ogOperation(GetM
13a70 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20 72 6f 6f  ethodName(), roo
13a80 74 4b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65  tKey, subKeyName
13a90 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
13aa0 20 20 20 20 20 20 73 75 62 4b 65 79 73 44 65 6c        subKeysDel
13ab0 65 74 65 64 2b 2b 3b 0d 0a 20 20 20 20 20 20 20  eted++;..       
13ac0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13ad0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
13ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
13b20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64           [Method
13b30 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f  Impl(MethodImplO
13b40 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e  ptions.NoInlinin
13b50 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g)]..           
13b60 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
13b70 74 72 69 6e 67 5b 5d 20 47 65 74 53 75 62 4b 65  tring[] GetSubKe
13b80 79 4e 61 6d 65 73 28 0d 0a 20 20 20 20 20 20 20  yNames(..       
13b90 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
13ba0 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20  istryKey key,.. 
13bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
13bc0 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20  ool whatIf,..   
13bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
13be0 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20  l verbose..     
13bf0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
13c00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
13c10 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
13c20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20  (verbose)..     
13c30 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c50 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
13c60 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
13c70 69 6f 72 69 74 79 2e 48 69 67 68 2c 0d 0a 20 20  iority.High,..  
13c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c90 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
13ca0 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
13cb0 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
13cc0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
13cd0 20 20 20 20 20 20 20 20 20 20 20 20 22 6b 65 79              "key
13ce0 20 3d 20 7b 30 7d 22 2c 20 46 6f 72 44 69 73 70   = {0}", ForDisp
13cf0 6c 61 79 28 6b 65 79 29 29 2c 20 74 72 61 63 65  lay(key)), trace
13d00 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
13d10 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
13d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13d30 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c   if (key == null
13d40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13d50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
13d60 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ll;....         
13d70 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b 65         return ke
13d80 79 2e 47 65 74 53 75 62 4b 65 79 4e 61 6d 65 73  y.GetSubKeyNames
13d90 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
13da0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
13db0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
13dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13df0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
13e00 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c       [MethodImpl
13e10 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f  (MethodImplOptio
13e20 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d  ns.NoInlining)].
13e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
13e40 6c 69 63 20 73 74 61 74 69 63 20 6f 62 6a 65 63  lic static objec
13e50 74 20 47 65 74 56 61 6c 75 65 28 0d 0a 20 20 20  t GetValue(..   
13e60 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
13e70 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79  kRegistryKey key
13e80 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
13e90 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d     string name,.
13ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13eb0 20 6f 62 6a 65 63 74 20 64 65 66 61 75 6c 74 56   object defaultV
13ec0 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  alue,..         
13ed0 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74         bool what
13ee0 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If,..           
13ef0 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73       bool verbos
13f00 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
13f10 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
13f20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13f30 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65       if (verbose
13f40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
13f50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
13f60 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
13f70 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
13f80 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48  (TracePriority.H
13f90 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  igh,..          
13fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
13fb0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
13fc0 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
13fd0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
13fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ff0 20 20 20 20 22 6b 65 79 20 3d 20 7b 30 7d 2c 20      "key = {0}, 
14000 6e 61 6d 65 20 3d 20 7b 31 7d 2c 20 64 65 66 61  name = {1}, defa
14010 75 6c 74 56 61 6c 75 65 20 3d 20 7b 32 7d 22 2c  ultValue = {2}",
14020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14030 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
14040 70 6c 61 79 28 6b 65 79 29 2c 20 46 6f 72 44 69  play(key), ForDi
14050 73 70 6c 61 79 28 6e 61 6d 65 29 2c 0d 0a 20 20  splay(name),..  
14060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14070 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
14080 28 64 65 66 61 75 6c 74 56 61 6c 75 65 29 29 2c  (defaultValue)),
14090 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
140a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
140b0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
140c0 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d         if (key =
140d0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
140e0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
140f0 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
14100 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a               obj
14110 65 63 74 20 76 61 6c 75 65 20 3d 20 6b 65 79 2e  ect value = key.
14120 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 64  GetValue(name, d
14130 65 66 61 75 6c 74 56 61 6c 75 65 29 3b 0d 0a 0d  efaultValue);...
14140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14150 20 6b 65 79 56 61 6c 75 65 73 52 65 61 64 2b 2b   keyValuesRead++
14160 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
14170 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c 75       return valu
14180 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
14190 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
141a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
141b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
141f0 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
14200 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
14210 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
14220 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
14230 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 53  ic static void S
14240 65 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  etValue(..      
14250 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
14260 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a  gistryKey key,..
14270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14280 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20  string name,..  
14290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
142a0 6a 65 63 74 20 76 61 6c 75 65 2c 0d 0a 20 20 20  ject value,..   
142b0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
142c0 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20  l whatIf,..     
142d0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
142e0 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20 20  verbose..       
142f0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
14300 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14310 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
14320 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20 20 20  erbose)..       
14330 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
14340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14350 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
14360 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f  dTrace(TracePrio
14370 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20  rity.Highest,.. 
14380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14390 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c         debugCall
143a0 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
143b0 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
143c0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
143d0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6b 65               "ke
143e0 79 20 3d 20 7b 30 7d 2c 20 6e 61 6d 65 20 3d 20  y = {0}, name = 
143f0 7b 31 7d 2c 20 76 61 6c 75 65 20 3d 20 7b 32 7d  {1}, value = {2}
14400 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
14410 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
14420 69 73 70 6c 61 79 28 6b 65 79 29 2c 20 46 6f 72  isplay(key), For
14430 44 69 73 70 6c 61 79 28 6e 61 6d 65 29 2c 20 46  Display(name), F
14440 6f 72 44 69 73 70 6c 61 79 28 76 61 6c 75 65 29  orDisplay(value)
14450 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
14460 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
14470 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
14480 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
144a0 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c    if (key == nul
144b0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
144c0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
144d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
144e0 20 20 20 69 66 20 28 21 77 68 61 74 49 66 29 0d     if (!whatIf).
144f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14500 20 20 20 20 20 6b 65 79 2e 53 65 74 56 61 6c 75       key.SetValu
14510 65 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d  e(name, value);.
14520 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14530 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61     MaybeLogOpera
14540 74 69 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e 61  tion(GetMethodNa
14550 6d 65 28 29 2c 20 6b 65 79 2c 20 6e 61 6d 65 2c  me(), key, name,
14560 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20   value);....    
14570 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 56              keyV
14580 61 6c 75 65 73 57 72 69 74 74 65 6e 2b 2b 3b 0d  aluesWritten++;.
14590 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
145a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
145b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
145f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
14600 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74   [MethodImpl(Met
14610 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e  hodImplOptions.N
14620 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20  oInlining)]..   
14630 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
14640 73 74 61 74 69 63 20 76 6f 69 64 20 44 65 6c 65  static void Dele
14650 74 65 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  teValue(..      
14660 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
14670 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a  gistryKey key,..
14680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14690 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20  string name,..  
146a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
146b0 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e  ol throwOnMissin
146c0 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g,..            
146d0 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
146e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
146f0 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a    bool verbose..
14700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14710 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
14720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14730 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 0d 0a    if (verbose)..
14740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14750 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
14760 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
14770 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72  DebugAndTrace(Tr
14780 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68  acePriority.High
14790 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  est,..          
147a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
147b0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
147c0 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
147d0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
147e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
147f0 20 20 20 20 22 6b 65 79 20 3d 20 7b 30 7d 2c 20      "key = {0}, 
14800 6e 61 6d 65 20 3d 20 7b 31 7d 22 2c 20 46 6f 72  name = {1}", For
14810 44 69 73 70 6c 61 79 28 6b 65 79 29 2c 0d 0a 20  Display(key),.. 
14820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14830 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
14840 79 28 6e 61 6d 65 29 29 2c 20 74 72 61 63 65 43  y(name)), traceC
14850 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20  ategory);..     
14860 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
14870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14880 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29  if (key == null)
14890 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
148a0 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
148b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
148c0 20 69 66 20 28 21 77 68 61 74 49 66 29 0d 0a 20   if (!whatIf).. 
148d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
148e0 20 20 20 6b 65 79 2e 44 65 6c 65 74 65 56 61 6c     key.DeleteVal
148f0 75 65 28 6e 61 6d 65 2c 20 74 68 72 6f 77 4f 6e  ue(name, throwOn
14900 4d 69 73 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20  Missing);....   
14910 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 79               May
14920 62 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47  beLogOperation(G
14930 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20  etMethodName(), 
14940 6b 65 79 2c 20 6e 61 6d 65 2c 20 6e 75 6c 6c 29  key, name, null)
14950 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
14960 20 20 20 20 20 6b 65 79 56 61 6c 75 65 73 44 65       keyValuesDe
14970 6c 65 74 65 64 2b 2b 3b 0d 0a 20 20 20 20 20 20  leted++;..      
14980 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
14990 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
149a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
149e0 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f            [Metho
149f0 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c  dImpl(MethodImpl
14a00 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69  Options.NoInlini
14a10 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20  ng)]..          
14a20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
14a30 69 6e 74 20 57 72 69 74 65 4f 70 65 72 61 74 69  int WriteOperati
14a40 6f 6e 4c 69 73 74 28 0d 0a 20 20 20 20 20 20 20  onList(..       
14a50 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
14a60 66 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  fileName,..     
14a70 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
14a80 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20 20  verbose..       
14a90 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
14aa0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14ab0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
14ac0 6f 75 6e 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20  ount = 0;....   
14ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
14ae0 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
14af0 45 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29  Empty(fileName))
14b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14b10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
14b20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 65 72           if (ver
14b30 62 6f 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20  bose)..         
14b40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b60 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
14b70 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
14b80 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65  cePriority.Highe
14b90 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  st,..           
14ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14bb0 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20   debugCallback, 
14bc0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a  traceCallback,..
14bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14be0 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65 67              "Reg
14bf0 69 73 74 72 79 20 6f 70 65 72 61 74 69 6f 6e 20  istry operation 
14c00 6c 6f 67 20 66 69 6c 65 20 6e 61 6d 65 20 6e 6f  log file name no
14c10 74 20 73 65 74 2e 22 2c 0d 0a 20 20 20 20 20 20  t set.",..      
14c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c30 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
14c40 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ory);..         
14c50 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
14c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c70 20 20 20 20 72 65 74 75 72 6e 20 63 6f 75 6e 74      return count
14c80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
14c90 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14ca0 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28 73 79          lock (sy
14cb0 6e 63 52 6f 6f 74 29 20 2f 2a 20 54 52 41 4e 53  ncRoot) /* TRANS
14cc0 41 43 54 49 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20  ACTIONAL */..   
14cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
14ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14cf0 20 20 20 20 69 66 20 28 6f 70 65 72 61 74 69 6f      if (operatio
14d00 6e 4c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  nList == null)..
14d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14d20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
14d40 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20  f (verbose)..   
14d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14d60 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14d80 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
14d90 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
14da0 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74  Priority.Highest
14db0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
14dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14dd0 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b     debugCallback
14de0 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  , traceCallback,
14df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e10 20 20 22 52 65 67 69 73 74 72 79 20 6f 70 65 72    "Registry oper
14e20 61 74 69 6f 6e 20 6c 69 73 74 20 69 73 20 69 6e  ation list is in
14e30 76 61 6c 69 64 2e 22 2c 0d 0a 20 20 20 20 20 20  valid.",..      
14e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e50 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
14e60 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20  ategory);..     
14e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14e80 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ea0 72 65 74 75 72 6e 20 63 6f 75 6e 74 3b 0d 0a 20  return count;.. 
14eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14ec0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14ed0 20 20 20 20 20 20 20 20 20 20 20 20 75 73 69 6e              usin
14ee0 67 20 28 53 74 72 65 61 6d 57 72 69 74 65 72 20  g (StreamWriter 
14ef0 73 74 72 65 61 6d 57 72 69 74 65 72 20 3d 20 6e  streamWriter = n
14f00 65 77 20 53 74 72 65 61 6d 57 72 69 74 65 72 28  ew StreamWriter(
14f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
14f30 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
14f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14f60 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
14f70 20 28 52 65 67 69 73 74 72 79 4f 70 65 72 61 74   (RegistryOperat
14f80 69 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 69 6e  ion operation in
14f90 20 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 29 0d   operationList).
14fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14fb0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
14fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14fd0 20 20 20 20 20 20 20 20 69 66 20 28 6f 70 65 72          if (oper
14fe0 61 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ation == null)..
14ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15010 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
15020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15030 20 20 20 20 20 20 20 20 20 73 74 72 65 61 6d 57           streamW
15040 72 69 74 65 72 2e 57 72 69 74 65 4c 69 6e 65 28  riter.WriteLine(
15050 6f 70 65 72 61 74 69 6f 6e 2e 54 6f 53 74 72 69  operation.ToStri
15060 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ng());..        
15070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15080 20 20 20 20 63 6f 75 6e 74 2b 2b 3b 0d 0a 20 20      count++;..  
15090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
150b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150c0 20 20 20 73 74 72 65 61 6d 57 72 69 74 65 72 2e     streamWriter.
150d0 46 6c 75 73 68 28 29 3b 0d 0a 20 20 20 20 20 20  Flush();..      
150e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
150f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15100 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
15110 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
15120 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
15130 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15140 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
15150 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
15160 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
15170 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
15180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15190 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
151a0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
151b0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
151c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151d0 20 20 20 20 20 20 20 20 22 57 72 6f 74 65 20 7b          "Wrote {
151e0 30 7d 20 72 65 67 69 73 74 72 79 20 6f 70 65 72  0} registry oper
151f0 61 74 69 6f 6e 73 20 74 6f 20 69 74 73 20 6c 6f  ations to its lo
15200 67 20 66 69 6c 65 2e 22 2c 0d 0a 20 20 20 20 20  g file.",..     
15210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15220 20 20 20 63 6f 75 6e 74 29 2c 20 74 72 61 63 65     count), trace
15230 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
15240 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
15250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15260 20 72 65 74 75 72 6e 20 63 6f 75 6e 74 3b 0d 0a   return count;..
15270 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
15280 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
15290 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
152a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
152b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
152f0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
15300 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20 4d  Private Static M
15310 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
15320 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
15330 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
15340 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
15350 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
15360 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
15370 67 20 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28  g GetMethodName(
15380 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
15390 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
153a0 20 20 72 65 74 75 72 6e 20 54 72 61 63 65 4f 70    return TraceOp
153b0 73 2e 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28  s.GetMethodName(
153c0 6e 75 6c 6c 2c 20 31 29 3b 0d 0a 20 20 20 20 20  null, 1);..     
153d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
153e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
153f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
15430 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
15440 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 4d  te static void M
15450 61 79 62 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e  aybeLogOperation
15460 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
15470 20 20 20 73 74 72 69 6e 67 20 6d 65 74 68 6f 64     string method
15480 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
15490 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73         MockRegis
154a0 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20  tryKey key,..   
154b0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
154c0 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 0d 0a  ing subKeyName..
154d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
154e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
154f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15500 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61 74    MaybeLogOperat
15510 69 6f 6e 28 6d 65 74 68 6f 64 4e 61 6d 65 2c 20  ion(methodName, 
15520 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c  key, subKeyName,
15530 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 29 3b 0d 0a 20   null, null);.. 
15540 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
15550 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
15560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
155a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
155b0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f  rivate static vo
155c0 69 64 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61  id MaybeLogOpera
155d0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
155e0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65         string me
155f0 74 68 6f 64 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  thodName,..     
15600 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52             MockR
15610 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d  egistryKey key,.
15620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15630 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d   string valueNam
15640 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
15650 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
15660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15670 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
15680 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15690 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72      MaybeLogOper
156a0 61 74 69 6f 6e 28 6d 65 74 68 6f 64 4e 61 6d 65  ation(methodName
156b0 2c 20 6b 65 79 2c 20 6e 75 6c 6c 2c 20 76 61 6c  , key, null, val
156c0 75 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d  ueName, value);.
156d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
156e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
156f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15730 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
15740 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
15750 76 6f 69 64 20 4d 61 79 62 65 4c 6f 67 4f 70 65  void MaybeLogOpe
15760 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ration(..       
15770 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
15780 6d 65 74 68 6f 64 4e 61 6d 65 2c 0d 0a 20 20 20  methodName,..   
15790 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
157a0 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79  kRegistryKey key
157b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
157c0 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79     string subKey
157d0 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
157e0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
157f0 6c 75 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  lueName,..      
15800 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
15810 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
15820 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
15830 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15840 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
15850 73 79 6e 63 52 6f 6f 74 29 20 2f 2a 20 54 52 41  syncRoot) /* TRA
15860 4e 53 41 43 54 49 4f 4e 41 4c 20 2a 2f 0d 0a 20  NSACTIONAL */.. 
15870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
15880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15890 20 20 20 20 20 20 69 66 20 28 6f 70 65 72 61 74        if (operat
158a0 69 6f 6e 4c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29  ionList == null)
158b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
158c0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
158d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
158e0 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 65 74           if (met
158f0 68 6f 64 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29  hodName != null)
15900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15910 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15930 20 73 74 72 69 6e 67 20 74 79 70 65 50 72 65 66   string typePref
15940 69 78 20 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ix = String.Form
15950 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
15960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15970 20 22 7b 30 7d 7b 31 7d 22 2c 20 74 79 70 65 6f   "{0}{1}", typeo
15980 66 28 52 65 67 69 73 74 72 79 48 65 6c 70 65 72  f(RegistryHelper
15990 29 2e 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  ).Name,..       
159a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
159b0 20 20 20 20 20 54 79 70 65 2e 44 65 6c 69 6d 69       Type.Delimi
159c0 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
159d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
159e0 20 69 66 20 28 6d 65 74 68 6f 64 4e 61 6d 65 2e   if (methodName.
159f0 53 74 61 72 74 73 57 69 74 68 28 0d 0a 20 20 20  StartsWith(..   
15a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a10 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
15a20 65 50 72 65 66 69 78 2c 20 53 74 72 69 6e 67 43  ePrefix, StringC
15a30 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61  omparison.Ordina
15a40 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
15a50 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
15a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a70 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68              meth
15a80 6f 64 4e 61 6d 65 20 3d 20 6d 65 74 68 6f 64 4e  odName = methodN
15a90 61 6d 65 2e 53 75 62 73 74 72 69 6e 67 28 0d 0a  ame.Substring(..
15aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ac0 74 79 70 65 50 72 65 66 69 78 2e 4c 65 6e 67 74  typePrefix.Lengt
15ad0 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h);..           
15ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
15af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
15b10 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65               ope
15b20 72 61 74 69 6f 6e 4c 69 73 74 2e 41 64 64 28 6e  rationList.Add(n
15b30 65 77 20 52 65 67 69 73 74 72 79 4f 70 65 72 61  ew RegistryOpera
15b40 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
15b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
15b60 65 74 68 6f 64 4e 61 6d 65 2c 20 6b 65 79 2c 20  ethodName, key, 
15b70 73 75 62 4b 65 79 4e 61 6d 65 2c 20 76 61 6c 75  subKeyName, valu
15b80 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29 29 3b 0d  eName, value));.
15b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15ba0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
15bb0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
15bc0 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20  endregion..     
15bd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
15be0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
15bf0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
15c40 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 52         #region R
15c50 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e  egistryOperation
15c60 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20 20 20  List Class..    
15c70 20 20 20 20 5b 53 65 72 69 61 6c 69 7a 61 62 6c      [Serializabl
15c80 65 28 29 5d 0d 0a 20 20 20 20 20 20 20 20 70 72  e()]..        pr
15c90 69 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61  ivate sealed cla
15ca0 73 73 20 52 65 67 69 73 74 72 79 4f 70 65 72 61  ss RegistryOpera
15cb0 74 69 6f 6e 4c 69 73 74 20 3a 0d 0a 20 20 20 20  tionList :..    
15cc0 20 20 20 20 20 20 20 20 4c 69 73 74 3c 52 65 67          List<Reg
15cd0 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 3e 2c  istryOperation>,
15ce0 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20   IDisposable..  
15cf0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
15d00 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
15d10 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
15d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
15d30 62 6c 69 63 20 52 65 67 69 73 74 72 79 4f 70 65  blic RegistryOpe
15d40 72 61 74 69 6f 6e 4c 69 73 74 28 29 0d 0a 20 20  rationList()..  
15d50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15d60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
15d70 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
15d80 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
15d90 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
15da0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
15db0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
15dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15df0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
15e00 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
15e10 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72  sposable "Patter
15e20 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  n" Members..    
15e30 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
15e40 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
15e50 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
15e60 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
15e70 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
15e80 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
15e90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15ea0 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
15eb0 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
15ec0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
15ed0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15ee0 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62      throw new Ob
15ef0 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65  jectDisposedExce
15f00 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
15f10 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
15f20 6f 66 28 52 65 67 69 73 74 72 79 4f 70 65 72 61  of(RegistryOpera
15f30 74 69 6f 6e 4c 69 73 74 29 2e 4e 61 6d 65 29 3b  tionList).Name);
15f40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
15f50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
15f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15fa0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
15fb0 20 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f    private /* pro
15fc0 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a  tected virtual *
15fd0 2f 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 0d  / void Dispose(.
15fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15ff0 20 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 0d   bool disposing.
16000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16010 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
16020 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
16030 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64     if (!disposed
16040 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
16050 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
16060 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
16070 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
16080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
160a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
160b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
160c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
160d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
160e0 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73         // dispos
160f0 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  e managed resour
16100 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
16110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16120 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
16130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16140 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
16150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16160 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 52 65       foreach (Re
16170 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 20  gistryOperation 
16180 6f 70 65 72 61 74 69 6f 6e 20 69 6e 20 74 68 69  operation in thi
16190 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
161a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
161b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
161c0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
161d0 70 65 72 61 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c  peration == null
161e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
161f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16200 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
16210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16220 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65 72              oper
16230 61 74 69 6f 6e 2e 44 69 73 70 6f 73 65 28 29 3b  ation.Dispose();
16240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16250 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
16260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16270 20 20 20 20 20 20 20 43 6c 65 61 72 28 29 3b 0d         Clear();.
16280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16290 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
162a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
162b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162d0 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
162e0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
162f0 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
16300 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
16310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16320 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16360 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
16370 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
16380 4f 54 45 3a 20 54 68 69 73 20 6f 62 6a 65 63 74  OTE: This object
16390 20 69 73 20 6e 6f 77 20 64 69 73 70 6f 73 65 64   is now disposed
163a0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
163b0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
163c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
163d0 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  isposed = true;.
163e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
163f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
16400 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
16410 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
16420 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
16430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16470 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
16480 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
16490 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
164a0 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
164b0 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
164c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
164d0 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
164e0 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
164f0 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75             GC.Su
16500 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
16510 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  his);..         
16520 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
16530 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
16540 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
16550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16590 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
165a0 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f  region Destructo
165b0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7e  r..            ~
165c0 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
165d0 6e 4c 69 73 74 28 29 0d 0a 20 20 20 20 20 20 20  nList()..       
165e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
165f0 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
16600 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
16610 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
16620 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
16630 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
16640 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
16650 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
16660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
166a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
166b0 69 6f 6e 20 52 65 67 69 73 74 72 79 4f 70 65 72  ion RegistryOper
166c0 61 74 69 6f 6e 20 43 6c 61 73 73 0d 0a 20 20 20  ation Class..   
166d0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61       private sea
166e0 6c 65 64 20 63 6c 61 73 73 20 52 65 67 69 73 74  led class Regist
166f0 72 79 4f 70 65 72 61 74 69 6f 6e 0d 0a 20 20 20  ryOperation..   
16700 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
16710 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
16720 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ate Constants.. 
16730 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
16740 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 46 69  te const char Fi
16750 65 6c 64 44 65 6c 69 6d 69 74 65 72 20 3d 20 27  eldDelimiter = '
16760 5c 74 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  \t';..          
16770 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
16780 73 74 72 69 6e 67 20 4c 69 73 74 45 6c 65 6d 65  string ListEleme
16790 6e 74 44 65 6c 69 6d 69 74 65 72 20 3d 20 22 2c  ntDelimiter = ",
167a0 20 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ";..           
167b0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
167c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
167d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16810 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
16820 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e  egion Public Con
16830 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
16840 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 52 65         public Re
16850 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 28  gistryOperation(
16860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16870 20 20 73 74 72 69 6e 67 20 6d 65 74 68 6f 64 4e    string methodN
16880 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
16890 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74        MockRegist
168a0 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20  ryKey key,..    
168b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
168c0 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a  ng subKeyName,..
168d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
168e0 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65  string valueName
168f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
16900 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d     object value.
16910 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16920 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
16930 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
16940 20 20 20 74 68 69 73 2e 6d 65 74 68 6f 64 4e 61     this.methodNa
16950 6d 65 20 3d 20 6d 65 74 68 6f 64 4e 61 6d 65 3b  me = methodName;
16960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16970 20 20 74 68 69 73 2e 73 75 62 4b 65 79 4e 61 6d    this.subKeyNam
16980 65 20 3d 20 73 75 62 4b 65 79 4e 61 6d 65 3b 0d  e = subKeyName;.
16990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
169a0 20 74 68 69 73 2e 76 61 6c 75 65 4e 61 6d 65 20   this.valueName 
169b0 3d 20 76 61 6c 75 65 4e 61 6d 65 3b 0d 0a 20 20  = valueName;..  
169c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
169d0 69 73 2e 76 61 6c 75 65 20 3d 20 76 61 6c 75 65  is.value = value
169e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
169f0 20 20 20 20 20 53 65 74 4b 65 79 28 6b 65 79 29       SetKey(key)
16a00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
16a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
16a20 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
16a30 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
16a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16a80 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
16a90 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
16aa0 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
16ab0 70 72 69 76 61 74 65 20 76 6f 69 64 20 53 65 74  private void Set
16ac0 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
16ad0 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74        MockRegist
16ae0 72 79 4b 65 79 20 6b 65 79 0d 0a 20 20 20 20 20  ryKey key..     
16af0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
16b00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16b10 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
16b20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  (key != null).. 
16b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
16b40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16b50 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
16b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16b70 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 73 75 72 65   NOTE: Make sure
16b80 20 74 68 69 73 20 63 6f 70 79 20 6f 66 20 74 68   this copy of th
16b90 65 20 72 6f 6f 74 20 72 65 67 69 73 74 72 79 20  e root registry 
16ba0 6b 65 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  key..           
16bb0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
16bc0 20 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64    cannot be used
16bd0 20 74 6f 20 61 63 63 69 64 65 6e 74 61 6c 6c 79   to accidentally
16be0 20 6d 61 6b 65 20 72 65 67 69 73 74 72 79 0d 0a   make registry..
16bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16c00 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61      //       cha
16c10 6e 67 65 73 2e 20 20 41 6c 73 6f 2c 20 70 72 65  nges.  Also, pre
16c20 76 65 6e 74 20 74 68 69 73 20 4d 6f 63 6b 52 65  vent this MockRe
16c30 67 69 73 74 72 79 4b 65 79 0d 0a 20 20 20 20 20  gistryKey..     
16c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
16c50 2f 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 66  /       object f
16c60 72 6f 6d 20 63 6c 6f 73 69 6e 67 20 69 74 73 20  rom closing its 
16c70 75 6e 64 65 72 6c 79 69 6e 67 20 72 65 67 69 73  underlying regis
16c80 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
16c90 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
16ca0 20 20 6b 65 79 20 61 73 20 77 65 20 77 69 6c 6c    key as we will
16cb0 20 6e 65 65 64 20 69 74 20 6c 61 74 65 72 2e 20   need it later. 
16cc0 20 54 68 69 73 20 69 6e 73 74 61 6e 63 65 0d 0a   This instance..
16cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16ce0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 69 6c      //       wil
16cf0 6c 20 63 6c 6f 73 65 20 69 74 2e 0d 0a 20 20 20  l close it...   
16d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d10 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
16d20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6b 65           this.ke
16d30 79 20 3d 20 6b 65 79 2e 43 6c 6f 6e 65 28 74 72  y = key.Clone(tr
16d40 75 65 2c 20 74 72 75 65 2c 20 74 72 75 65 29 3b  ue, true, true);
16d50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16d60 20 20 20 20 20 20 20 20 6b 65 79 2e 44 69 73 61          key.Disa
16d70 62 6c 65 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20  bleClose();..   
16d80 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
16d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16da0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
16db0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
16dd0 73 2e 6b 65 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  s.key = null;.. 
16de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
16df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
16e00 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
16e10 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
16e20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
16e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
16e70 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
16e80 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
16e90 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ies..           
16ea0 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20   private string 
16eb0 6d 65 74 68 6f 64 4e 61 6d 65 3b 0d 0a 20 20 20  methodName;..   
16ec0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
16ed0 73 74 72 69 6e 67 20 4d 65 74 68 6f 64 4e 61 6d  string MethodNam
16ee0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  e..            {
16ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16f00 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
16f10 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
16f20 6d 65 74 68 6f 64 4e 61 6d 65 3b 20 7d 0d 0a 20  methodName; }.. 
16f30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
16f40 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
16f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16f90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
16fa0 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73  rivate MockRegis
16fb0 74 72 79 4b 65 79 20 6b 65 79 3b 0d 0a 20 20 20  tryKey key;..   
16fc0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
16fd0 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
16fe0 4b 65 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Key..           
16ff0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17000 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
17010 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
17020 6e 20 6b 65 79 3b 20 7d 0d 0a 20 20 20 20 20 20  n key; }..      
17030 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
17040 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
17050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17090 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
170a0 65 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e  e string subKeyN
170b0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
170c0 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
170d0 53 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20  SubKeyName..    
170e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
170f0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
17100 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
17110 3b 20 72 65 74 75 72 6e 20 73 75 62 4b 65 79 4e  ; return subKeyN
17120 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ame; }..        
17130 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
17140 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17180 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17190 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
171a0 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65  string valueName
171b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
171c0 75 62 6c 69 63 20 73 74 72 69 6e 67 20 56 61 6c  ublic string Val
171d0 75 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  ueName..        
171e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
171f0 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
17200 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
17210 74 75 72 6e 20 76 61 6c 75 65 4e 61 6d 65 3b 20  turn valueName; 
17220 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
17230 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17280 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
17290 20 20 20 70 72 69 76 61 74 65 20 6f 62 6a 65 63     private objec
172a0 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  t value;..      
172b0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a        public obj
172c0 65 63 74 20 56 61 6c 75 65 0d 0a 20 20 20 20 20  ect Value..     
172d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
172e0 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
172f0 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
17300 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 20 7d   return value; }
17310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
17320 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
17330 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
17340 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
17350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17390 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
173a0 6e 20 53 79 73 74 65 6d 2e 4f 62 6a 65 63 74 20  n System.Object 
173b0 4f 76 65 72 72 69 64 65 73 0d 0a 20 20 20 20 20  Overrides..     
173c0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
173d0 65 72 72 69 64 65 20 62 6f 6f 6c 20 45 71 75 61  erride bool Equa
173e0 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls(..           
173f0 20 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a 0d       object obj.
17400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17410 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
17420 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17430 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
17440 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
17450 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4f         RegistryO
17460 70 65 72 61 74 69 6f 6e 20 6f 70 65 72 61 74 69  peration operati
17470 6f 6e 20 3d 20 6f 62 6a 20 61 73 20 52 65 67 69  on = obj as Regi
17480 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 3b 0d 0a  stryOperation;..
17490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
174a0 20 20 69 66 20 28 6f 70 65 72 61 74 69 6f 6e 20    if (operation 
174b0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
174c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
174d0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
174e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
174f0 66 20 28 21 53 74 72 69 6e 67 2e 45 71 75 61 6c  f (!String.Equal
17500 73 28 6f 70 65 72 61 74 69 6f 6e 2e 6d 65 74 68  s(operation.meth
17510 6f 64 4e 61 6d 65 2c 20 6d 65 74 68 6f 64 4e 61  odName, methodNa
17520 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
17530 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
17540 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
17550 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
17560 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e  MockRegistryKey.
17570 45 71 75 61 6c 73 28 6f 70 65 72 61 74 69 6f 6e  Equals(operation
17580 2e 6b 65 79 2c 20 6b 65 79 29 29 0d 0a 20 20 20  .key, key))..   
17590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
175a0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
175b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
175c0 20 20 69 66 20 28 21 4d 6f 63 6b 52 65 67 69 73    if (!MockRegis
175d0 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c  tryKey.NameEqual
175e0 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
175f0 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65 72              oper
17600 61 74 69 6f 6e 2e 73 75 62 4b 65 79 4e 61 6d 65  ation.subKeyName
17610 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29 29 0d 0a  , subKeyName))..
17620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17630 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17640 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
17650 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
17660 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
17670 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
17680 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 6f 70  String.Equals(op
17690 65 72 61 74 69 6f 6e 2e 76 61 6c 75 65 4e 61 6d  eration.valueNam
176a0 65 2c 20 76 61 6c 75 65 4e 61 6d 65 29 29 0d 0a  e, valueName))..
176b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
176c0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
176d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
176e0 20 20 20 20 20 69 66 20 28 21 4d 6f 63 6b 52 65       if (!MockRe
176f0 67 69 73 74 72 79 4b 65 79 2e 56 61 6c 75 65 45  gistryKey.ValueE
17700 71 75 61 6c 73 28 6f 70 65 72 61 74 69 6f 6e 2e  quals(operation.
17710 76 61 6c 75 65 2c 20 76 61 6c 75 65 29 29 0d 0a  value, value))..
17720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17730 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
17740 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
17750 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
17760 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
17770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
177c0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
177d0 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
177e0 64 65 20 69 6e 74 20 47 65 74 48 61 73 68 43 6f  de int GetHashCo
177f0 64 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  de()..          
17800 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
17810 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
17820 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
17830 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
17840 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ult = 0;....    
17850 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
17860 6d 65 74 68 6f 64 4e 61 6d 65 20 21 3d 20 6e 75  methodName != nu
17870 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
17880 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
17890 5e 3d 20 6d 65 74 68 6f 64 4e 61 6d 65 2e 47 65  ^= methodName.Ge
178a0 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 0d 0a  tHashCode();....
178b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
178c0 72 65 73 75 6c 74 20 5e 3d 20 4d 6f 63 6b 52 65  result ^= MockRe
178d0 67 69 73 74 72 79 4b 65 79 2e 47 65 74 48 61 73  gistryKey.GetHas
178e0 68 43 6f 64 65 28 6b 65 79 29 3b 0d 0a 0d 0a 20  hCode(key);.... 
178f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
17900 66 20 28 73 75 62 4b 65 79 4e 61 6d 65 20 21 3d  f (subKeyName !=
17910 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
17920 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
17930 6c 74 20 5e 3d 20 73 75 62 4b 65 79 4e 61 6d 65  lt ^= subKeyName
17940 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d  .GetHashCode();.
17950 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
17960 20 20 20 69 66 20 28 76 61 6c 75 65 4e 61 6d 65     if (valueName
17970 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
17980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
17990 65 73 75 6c 74 20 5e 3d 20 76 61 6c 75 65 4e 61  esult ^= valueNa
179a0 6d 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29  me.GetHashCode()
179b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
179c0 20 20 20 20 20 72 65 73 75 6c 74 20 5e 3d 20 4d       result ^= M
179d0 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 56  ockRegistryKey.V
179e0 61 6c 75 65 48 61 73 68 43 6f 64 65 28 76 61 6c  alueHashCode(val
179f0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
17a00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
17a10 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20  esult;..        
17a20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
17a30 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17a80 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f          public o
17a90 76 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54  verride string T
17aa0 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20  oString()..     
17ab0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17ac0 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
17ad0 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
17ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
17af0 72 69 6e 67 42 75 69 6c 64 65 72 20 62 75 69 6c  ringBuilder buil
17b00 64 65 72 20 3d 20 6e 65 77 20 53 74 72 69 6e 67  der = new String
17b10 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20  Builder();....  
17b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75                bu
17b30 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 6f 72  ilder.Append(For
17b40 44 69 73 70 6c 61 79 28 6d 65 74 68 6f 64 4e 61  Display(methodNa
17b50 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  me));..         
17b60 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41         builder.A
17b70 70 70 65 6e 64 28 46 69 65 6c 64 44 65 6c 69 6d  ppend(FieldDelim
17b80 69 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  iter);..        
17b90 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e          builder.
17ba0 41 70 70 65 6e 64 28 46 6f 72 44 69 73 70 6c 61  Append(ForDispla
17bb0 79 28 6b 65 79 29 29 3b 0d 0a 20 20 20 20 20 20  y(key));..      
17bc0 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
17bd0 72 2e 41 70 70 65 6e 64 28 46 69 65 6c 64 44 65  r.Append(FieldDe
17be0 6c 69 6d 69 74 65 72 29 3b 0d 0a 20 20 20 20 20  limiter);..     
17bf0 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64             build
17c00 65 72 2e 41 70 70 65 6e 64 28 46 6f 72 44 69 73  er.Append(ForDis
17c10 70 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65 29  play(subKeyName)
17c20 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
17c30 20 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65      builder.Appe
17c40 6e 64 28 46 69 65 6c 64 44 65 6c 69 6d 69 74 65  nd(FieldDelimite
17c50 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
17c60 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70       builder.App
17c70 65 6e 64 28 46 6f 72 44 69 73 70 6c 61 79 28 76  end(ForDisplay(v
17c80 61 6c 75 65 4e 61 6d 65 29 29 3b 0d 0a 20 20 20  alueName));..   
17c90 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69               bui
17ca0 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 69 65 6c  lder.Append(Fiel
17cb0 64 44 65 6c 69 6d 69 74 65 72 29 3b 0d 0a 0d 0a  dDelimiter);....
17cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17cd0 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46  builder.Append(F
17ce0 6f 72 44 69 73 70 6c 61 79 28 4d 6f 63 6b 52 65  orDisplay(MockRe
17cf0 67 69 73 74 72 79 4b 65 79 2e 56 61 6c 75 65 54  gistryKey.ValueT
17d00 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  oString(..      
17d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61                va
17d20 6c 75 65 2c 20 4c 69 73 74 45 6c 65 6d 65 6e 74  lue, ListElement
17d30 44 65 6c 69 6d 69 74 65 72 2c 20 44 69 73 70 6c  Delimiter, Displ
17d40 61 79 4e 75 6c 6c 29 29 29 3b 0d 0a 0d 0a 20 20  ayNull)));....  
17d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
17d60 74 75 72 6e 20 62 75 69 6c 64 65 72 2e 54 6f 53  turn builder.ToS
17d70 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
17d80 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
17d90 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
17da0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
17db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17df0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
17e00 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
17e10 73 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20  sable "Pattern" 
17e20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
17e30 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
17e40 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20  l disposed;..   
17e50 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
17e60 20 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f   void CheckDispo
17e70 73 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a  sed() /* throw *
17e80 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  /..            {
17e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17ea0 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29    if (!disposed)
17eb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17ec0 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
17ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17ee0 20 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63   throw new Objec
17ef0 74 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69  tDisposedExcepti
17f00 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
17f10 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
17f20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
17f30 6e 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  n).Name);..     
17f40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
17f50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
17fa0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
17fb0 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65 64 20  te /* protected 
17fc0 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20  virtual */ void 
17fd0 44 69 73 70 6f 73 65 28 0d 0a 20 20 20 20 20 20  Dispose(..      
17fe0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 64            bool d
17ff0 69 73 70 6f 73 69 6e 67 0d 0a 20 20 20 20 20 20  isposing..      
18000 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
18010 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
18020 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18030 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20  !disposed)..    
18040 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
18050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18060 20 20 20 69 66 20 28 64 69 73 70 6f 73 69 6e 67     if (disposing
18070 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
18080 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
180a0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
180b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180c0 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20  //////..        
180d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
180e0 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67  // dispose manag
180f0 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72  ed resources her
18100 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  e.....          
18110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
18120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18140 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
18150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
18160 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a   (key != null)..
18170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18180 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
181a0 20 20 20 20 20 20 20 6b 65 79 2e 43 6c 6f 73 65         key.Close
181b0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
181c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
181d0 20 6b 65 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20   key = null;..  
181e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
181f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18200 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
18210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18220 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
18250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18260 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d    // release unm
18270 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73  anaged resources
18280 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20   here.....      
18290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
182a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182c0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
182d0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
182e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
182f0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69      // NOTE: Thi
18300 73 20 6f 62 6a 65 63 74 20 69 73 20 6e 6f 77 20  s object is now 
18310 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20  disposed...     
18320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
18330 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
18340 20 20 20 20 20 20 20 64 69 73 70 6f 73 65 64 20         disposed 
18350 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
18360 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
18370 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
18380 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
18390 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
183a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
183b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
183e0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
183f0 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73      #region IDis
18400 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d  posable Members.
18410 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
18420 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65  lic void Dispose
18430 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
18440 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18450 20 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29     Dispose(true)
18460 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
18470 20 20 20 47 43 2e 53 75 70 70 72 65 73 73 46 69     GC.SuppressFi
18480 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20  nalize(this);.. 
18490 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
184a0 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
184b0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
184c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
184d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
184f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18500 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18510 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44         #region D
18520 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20  estructor..     
18530 20 20 20 20 20 20 20 7e 52 65 67 69 73 74 72 79         ~Registry
18540 4f 70 65 72 61 74 69 6f 6e 28 29 0d 0a 20 20 20  Operation()..   
18550 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
18560 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
18570 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
18580 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
18590 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
185a0 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
185b0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
185c0 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
185d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
185f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18610 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
18620 23 72 65 67 69 6f 6e 20 53 74 72 69 6e 67 4c 69  #region StringLi
18630 73 74 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20  st Class..      
18640 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64    private sealed
18650 20 63 6c 61 73 73 20 53 74 72 69 6e 67 4c 69 73   class StringLis
18660 74 20 3a 20 4c 69 73 74 3c 73 74 72 69 6e 67 3e  t : List<string>
18670 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
18680 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
18690 53 74 72 69 6e 67 4c 69 73 74 28 29 0d 0a 20 20  StringList()..  
186a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
186b0 62 61 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20  base()..        
186c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
186d0 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
186e0 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
186f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
18700 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
18710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18740 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
18750 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 74         public St
18760 72 69 6e 67 4c 69 73 74 28 49 45 6e 75 6d 65 72  ringList(IEnumer
18770 61 62 6c 65 3c 73 74 72 69 6e 67 3e 20 63 6f 6c  able<string> col
18780 6c 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20  lection)..      
18790 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
187a0 28 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20  (collection)..  
187b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
187c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
187d0 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
187e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
187f0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
18800 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
18810 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
18820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
18860 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
18870 53 74 72 69 6e 67 44 69 63 74 69 6f 6e 61 72 79  StringDictionary
18880 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20   Class..        
18890 70 72 69 76 61 74 65 20 73 65 61 6c 65 64 20 63  private sealed c
188a0 6c 61 73 73 20 53 74 72 69 6e 67 44 69 63 74 69  lass StringDicti
188b0 6f 6e 61 72 79 20 3a 20 44 69 63 74 69 6f 6e 61  onary : Dictiona
188c0 72 79 3c 73 74 72 69 6e 67 2c 20 73 74 72 69 6e  ry<string, strin
188d0 67 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  g>..        {.. 
188e0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
188f0 63 20 53 74 72 69 6e 67 44 69 63 74 69 6f 6e 61  c StringDictiona
18900 72 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry()..          
18910 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
18920 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
18930 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
18940 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
18950 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
18960 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
18970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189b0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
189c0 23 72 65 67 69 6f 6e 20 56 65 72 73 69 6f 6e 4c  #region VersionL
189d0 69 73 74 20 43 6c 61 73 73 0d 0a 20 20 20 20 20  ist Class..     
189e0 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65     private seale
189f0 64 20 63 6c 61 73 73 20 56 65 72 73 69 6f 6e 4c  d class VersionL
18a00 69 73 74 20 3a 20 4c 69 73 74 3c 56 65 72 73 69  ist : List<Versi
18a10 6f 6e 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  on>..        {..
18a20 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
18a30 69 63 20 56 65 72 73 69 6f 6e 4c 69 73 74 28 29  ic VersionList()
18a40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18a50 20 20 3a 20 62 61 73 65 28 29 0d 0a 20 20 20 20    : base()..    
18a60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18a70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
18a80 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
18a90 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
18aa0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
18ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
18af0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
18b00 63 20 56 65 72 73 69 6f 6e 4c 69 73 74 28 49 45  c VersionList(IE
18b10 6e 75 6d 65 72 61 62 6c 65 3c 56 65 72 73 69 6f  numerable<Versio
18b20 6e 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a  n> collection)..
18b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18b40 3a 20 62 61 73 65 28 63 6f 6c 6c 65 63 74 69 6f  : base(collectio
18b50 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n)..            
18b60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
18b70 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
18b80 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ...            }
18b90 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
18ba0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
18bb0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
18c10 65 67 69 6f 6e 20 56 65 72 73 69 6f 6e 4d 61 70  egion VersionMap
18c20 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20   Class..        
18c30 70 72 69 76 61 74 65 20 73 65 61 6c 65 64 20 63  private sealed c
18c40 6c 61 73 73 20 56 65 72 73 69 6f 6e 4d 61 70 20  lass VersionMap 
18c50 3a 20 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72  : Dictionary<str
18c60 69 6e 67 2c 20 56 65 72 73 69 6f 6e 4c 69 73 74  ing, VersionList
18c70 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  >..        {..  
18c80 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
18c90 20 56 65 72 73 69 6f 6e 4d 61 70 28 29 0d 0a 20   VersionMap().. 
18ca0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
18cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
18cc0 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
18cd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
18ce0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
18cf0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
18d00 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
18d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18d50 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
18d60 20 50 61 63 6b 61 67 65 20 43 6c 61 73 73 0d 0a   Package Class..
18d70 20 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c          internal
18d80 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 50 61   sealed class Pa
18d90 63 6b 61 67 65 0d 0a 20 20 20 20 20 20 20 20 7b  ckage..        {
18da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
18db0 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e  egion Public Con
18dc0 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
18dd0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 50 61         public Pa
18de0 63 6b 61 67 65 28 29 0d 0a 20 20 20 20 20 20 20  ckage()..       
18df0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
18e00 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
18e10 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
18e20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
18e30 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
18e40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
18e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
18ea0 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50  #region Public P
18eb0 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20  roperties..     
18ec0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
18ed0 74 72 69 6e 67 20 70 72 6f 76 69 64 65 72 49 6e  tring providerIn
18ee0 76 61 72 69 61 6e 74 4e 61 6d 65 3b 0d 0a 20 20  variantName;..  
18ef0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
18f00 20 73 74 72 69 6e 67 20 50 72 6f 76 69 64 65 72   string Provider
18f10 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 0d 0a 20  InvariantName.. 
18f20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
18f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
18f40 74 20 7b 20 72 65 74 75 72 6e 20 70 72 6f 76 69  t { return provi
18f50 64 65 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65  derInvariantName
18f60 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
18f70 20 20 20 20 20 73 65 74 20 7b 20 70 72 6f 76 69       set { provi
18f80 64 65 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65  derInvariantName
18f90 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
18fa0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
18fb0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
18fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19000 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
19010 76 61 74 65 20 73 74 72 69 6e 67 20 66 61 63 74  vate string fact
19020 6f 72 79 54 79 70 65 4e 61 6d 65 3b 0d 0a 20 20  oryTypeName;..  
19030 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
19040 20 73 74 72 69 6e 67 20 46 61 63 74 6f 72 79 54   string FactoryT
19050 79 70 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ypeName..       
19060 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19070 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
19080 74 75 72 6e 20 66 61 63 74 6f 72 79 54 79 70 65  turn factoryType
19090 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  Name; }..       
190a0 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 66           set { f
190b0 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 20 3d  actoryTypeName =
190c0 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
190d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
190e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
190f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
19130 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
19140 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  te AssemblyName 
19150 70 72 6f 76 69 64 65 72 41 73 73 65 6d 62 6c 79  providerAssembly
19160 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
19170 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62     public Assemb
19180 6c 79 4e 61 6d 65 20 50 72 6f 76 69 64 65 72 41  lyName ProviderA
19190 73 73 65 6d 62 6c 79 4e 61 6d 65 0d 0a 20 20 20  ssemblyName..   
191a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
191b0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
191c0 7b 20 72 65 74 75 72 6e 20 70 72 6f 76 69 64 65  { return provide
191d0 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 20 7d  rAssemblyName; }
191e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
191f0 20 20 73 65 74 20 7b 20 70 72 6f 76 69 64 65 72    set { provider
19200 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 76  AssemblyName = v
19210 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
19220 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
19230 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19270 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19280 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
19290 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 64 65   AssemblyName de
192a0 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61  signerAssemblyNa
192b0 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
192c0 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c 79   public Assembly
192d0 4e 61 6d 65 20 44 65 73 69 67 6e 65 72 41 73 73  Name DesignerAss
192e0 65 6d 62 6c 79 4e 61 6d 65 0d 0a 20 20 20 20 20  emblyName..     
192f0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19300 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
19310 72 65 74 75 72 6e 20 64 65 73 69 67 6e 65 72 41  return designerA
19320 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 20 7d 0d 0a  ssemblyName; }..
19330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19340 73 65 74 20 7b 20 64 65 73 69 67 6e 65 72 41 73  set { designerAs
19350 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 76 61 6c  semblyName = val
19360 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
19370 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
19380 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
19390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
193c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
193d0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
193e0 6f 6f 6c 20 67 6c 6f 62 61 6c 41 73 73 65 6d 62  ool globalAssemb
193f0 6c 79 43 61 63 68 65 3b 0d 0a 20 20 20 20 20 20  lyCache;..      
19400 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
19410 6c 20 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79  l GlobalAssembly
19420 43 61 63 68 65 0d 0a 20 20 20 20 20 20 20 20 20  Cache..         
19430 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19440 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
19450 72 6e 20 67 6c 6f 62 61 6c 41 73 73 65 6d 62 6c  rn globalAssembl
19460 79 43 61 63 68 65 3b 20 7d 0d 0a 20 20 20 20 20  yCache; }..     
19470 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
19480 20 67 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43   globalAssemblyC
19490 61 63 68 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  ache = value; }.
194a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
194b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
194c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
194f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19500 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
19510 20 70 72 69 76 61 74 65 20 47 75 69 64 20 70 61   private Guid pa
19520 63 6b 61 67 65 49 64 3b 0d 0a 20 20 20 20 20 20  ckageId;..      
19530 20 20 20 20 20 20 70 75 62 6c 69 63 20 47 75 69        public Gui
19540 64 20 50 61 63 6b 61 67 65 49 64 0d 0a 20 20 20  d PackageId..   
19550 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
19560 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
19570 7b 20 72 65 74 75 72 6e 20 70 61 63 6b 61 67 65  { return package
19580 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  Id; }..         
19590 20 20 20 20 20 20 20 73 65 74 20 7b 20 70 61 63         set { pac
195a0 6b 61 67 65 49 64 20 3d 20 76 61 6c 75 65 3b 20  kageId = value; 
195b0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
195c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
195d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
195f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19610 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
19620 20 20 20 70 72 69 76 61 74 65 20 47 75 69 64 20     private Guid 
19630 73 65 72 76 69 63 65 49 64 3b 0d 0a 20 20 20 20  serviceId;..    
19640 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 47          public G
19650 75 69 64 20 53 65 72 76 69 63 65 49 64 0d 0a 20  uid ServiceId.. 
19660 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
19680 74 20 7b 20 72 65 74 75 72 6e 20 73 65 72 76 69  t { return servi
19690 63 65 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ceId; }..       
196a0 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 73           set { s
196b0 65 72 76 69 63 65 49 64 20 3d 20 76 61 6c 75 65  erviceId = value
196c0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
196d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
196e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
196f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19720 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19730 20 20 20 20 20 70 72 69 76 61 74 65 20 47 75 69       private Gui
19740 64 20 64 61 74 61 53 6f 75 72 63 65 49 64 3b 0d  d dataSourceId;.
19750 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
19760 6c 69 63 20 47 75 69 64 20 44 61 74 61 53 6f 75  lic Guid DataSou
19770 72 63 65 49 64 0d 0a 20 20 20 20 20 20 20 20 20  rceId..         
19780 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19790 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
197a0 72 6e 20 64 61 74 61 53 6f 75 72 63 65 49 64 3b  rn dataSourceId;
197b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
197c0 20 20 20 20 73 65 74 20 7b 20 64 61 74 61 53 6f      set { dataSo
197d0 75 72 63 65 49 64 20 3d 20 76 61 6c 75 65 3b 20  urceId = value; 
197e0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
197f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
19800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19840 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
19850 20 20 20 70 72 69 76 61 74 65 20 47 75 69 64 20     private Guid 
19860 64 61 74 61 50 72 6f 76 69 64 65 72 49 64 3b 0d  dataProviderId;.
19870 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
19880 6c 69 63 20 47 75 69 64 20 44 61 74 61 50 72 6f  lic Guid DataPro
19890 76 69 64 65 72 49 64 0d 0a 20 20 20 20 20 20 20  viderId..       
198a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
198b0 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
198c0 74 75 72 6e 20 64 61 74 61 50 72 6f 76 69 64 65  turn dataProvide
198d0 72 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  rId; }..        
198e0 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 64 61          set { da
198f0 74 61 50 72 6f 76 69 64 65 72 49 64 20 3d 20 76  taProviderId = v
19900 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
19910 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
19920 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19960 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
19970 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
19980 20 47 75 69 64 20 61 64 6f 4e 65 74 54 65 63 68   Guid adoNetTech
19990 6e 6f 6c 6f 67 79 49 64 3b 0d 0a 20 20 20 20 20  nologyId;..     
199a0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 47 75         public Gu
199b0 69 64 20 41 64 6f 4e 65 74 54 65 63 68 6e 6f 6c  id AdoNetTechnol
199c0 6f 67 79 49 64 0d 0a 20 20 20 20 20 20 20 20 20  ogyId..         
199d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
199e0 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
199f0 72 6e 20 61 64 6f 4e 65 74 54 65 63 68 6e 6f 6c  rn adoNetTechnol
19a00 6f 67 79 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20  ogyId; }..      
19a10 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
19a20 61 64 6f 4e 65 74 54 65 63 68 6e 6f 6c 6f 67 79  adoNetTechnology
19a30 49 64 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  Id = value; }.. 
19a40 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
19a50 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
19a60 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  gion..        }.
19a70 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
19a80 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
19a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ad0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
19ae0 20 20 23 72 65 67 69 6f 6e 20 43 6f 6e 66 69 67    #region Config
19af0 75 72 61 74 69 6f 6e 20 43 6c 61 73 73 0d 0a 20  uration Class.. 
19b00 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
19b10 65 61 6c 65 64 20 63 6c 61 73 73 20 43 6f 6e 66  ealed class Conf
19b20 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20 20 20 20  iguration..     
19b30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19b40 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
19b50 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20 20 20  e Constants..   
19b60 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
19b70 20 63 6f 6e 73 74 20 63 68 61 72 20 53 77 69 74   const char Swit
19b80 63 68 20 3d 20 27 2d 27 3b 0d 0a 20 20 20 20 20  ch = '-';..     
19b90 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
19ba0 6f 6e 73 74 20 63 68 61 72 20 41 6c 74 53 77 69  onst char AltSwi
19bb0 74 63 68 20 3d 20 27 2f 27 3b 0d 0a 0d 0a 20 20  tch = '/';....  
19bc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
19bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
19c20 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
19c30 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 53 77 69 74  only char[] Swit
19c40 63 68 43 68 61 72 73 20 3d 20 7b 0d 0a 20 20 20  chChars = {..   
19c50 20 20 20 20 20 20 20 20 20 20 20 20 20 53 77 69               Swi
19c60 74 63 68 2c 20 41 6c 74 53 77 69 74 63 68 0d 0a  tch, AltSwitch..
19c70 20 20 20 20 20 20 20 20 20 20 20 20 7d 3b 0d 0a              };..
19c80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
19c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19cd0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
19ce0 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
19cf0 74 72 69 6e 67 20 49 6e 76 61 72 69 61 6e 74 4e  tring InvariantN
19d00 61 6d 65 20 3d 20 22 53 79 73 74 65 6d 2e 44 61  ame = "System.Da
19d10 74 61 2e 53 51 4c 69 74 65 22 3b 0d 0a 20 20 20  ta.SQLite";..   
19d20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
19d30 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 66   const string Ef
19d40 36 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 20 3d  6InvariantName =
19d50 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51   "System.Data.SQ
19d60 4c 69 74 65 2e 45 46 36 22 3b 0d 0a 0d 0a 20 20  Lite.EF6";....  
19d70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
19d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19dc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
19dd0 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e  vate const strin
19de0 67 20 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d  g FactoryTypeNam
19df0 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e =..           
19e00 20 20 20 20 20 22 53 79 73 74 65 6d 2e 44 61 74       "System.Dat
19e10 61 2e 53 51 4c 69 74 65 2e 53 51 4c 69 74 65 46  a.SQLite.SQLiteF
19e20 61 63 74 6f 72 79 22 3b 0d 0a 0d 0a 20 20 20 20  actory";....    
19e30 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
19e40 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 66 36  const string Ef6
19e50 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 20  FactoryTypeName 
19e60 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
19e70 20 20 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e     "System.Data.
19e80 53 51 4c 69 74 65 2e 45 46 36 2e 53 51 4c 69 74  SQLite.EF6.SQLit
19e90 65 50 72 6f 76 69 64 65 72 46 61 63 74 6f 72 79  eProviderFactory
19ea0 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
19eb0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
19ec0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
19ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
19f10 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
19f20 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61  gion Private Sta
19f30 74 69 63 20 44 61 74 61 0d 0a 20 20 20 20 20 20  tic Data..      
19f40 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
19f50 61 74 69 63 20 41 73 73 65 6d 62 6c 79 20 73 79  atic Assembly sy
19f60 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 3b  stemEf6Assembly;
19f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
19f80 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
19f90 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
19fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
19fe0 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
19ff0 6f 6e 20 50 72 69 76 61 74 65 20 44 61 74 61 0d  on Private Data.
1a000 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
1a010 76 61 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d  vate AssemblyNam
1a020 65 20 63 6f 72 65 41 73 73 65 6d 62 6c 79 4e 61  e coreAssemblyNa
1a030 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
1a040 20 70 72 69 76 61 74 65 20 41 73 73 65 6d 62 6c   private Assembl
1a050 79 4e 61 6d 65 20 6c 69 6e 71 41 73 73 65 6d 62  yName linqAssemb
1a060 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  lyName;..       
1a070 20 20 20 20 20 70 72 69 76 61 74 65 20 41 73 73       private Ass
1a080 65 6d 62 6c 79 4e 61 6d 65 20 65 66 36 41 73 73  emblyName ef6Ass
1a090 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20  emblyName;..    
1a0a0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1a0b0 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 64 65 73  AssemblyName des
1a0c0 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  ignerAssemblyNam
1a0d0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1a0e0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
1a0f0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
1a100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1a140 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
1a150 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e  gion Private Con
1a160 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
1a170 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 43         private C
1a180 6f 6e 66 69 67 75 72 61 74 69 6f 6e 28 0d 0a 20  onfiguration(.. 
1a190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
1a1a0 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
1a1b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1a1c0 20 20 20 73 74 72 69 6e 67 20 6c 6f 67 46 69 6c     string logFil
1a1d0 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
1a1e0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 72          string r
1a1f0 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61  egistryLogFileNa
1a200 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
1a210 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
1a220 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  ctory,..        
1a230 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63          string c
1a240 6f 72 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20  oreFileName,..  
1a250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
1a260 72 69 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d  ring linqFileNam
1a270 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1a280 20 20 20 20 73 74 72 69 6e 67 20 65 66 36 46 69      string ef6Fi
1a290 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  leName,..       
1a2a0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1a2b0 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65  designerFileName
1a2c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1a2d0 20 20 20 73 74 72 69 6e 67 20 72 65 67 69 73 74     string regist
1a2e0 72 79 56 65 72 73 69 6f 6e 2c 0d 0a 20 20 20 20  ryVersion,..    
1a2f0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1a300 6e 67 20 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e  ng configVersion
1a310 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1a320 20 20 20 73 74 72 69 6e 67 20 76 73 56 65 72 73     string vsVers
1a330 69 6f 6e 53 75 66 66 69 78 2c 0d 0a 20 20 20 20  ionSuffix,..    
1a340 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1a350 6e 67 20 64 65 62 75 67 46 6f 72 6d 61 74 2c 0d  ng debugFormat,.
1a360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a370 20 73 74 72 69 6e 67 20 74 72 61 63 65 46 6f 72   string traceFor
1a380 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
1a390 20 20 20 20 20 20 49 6e 73 74 61 6c 6c 46 6c 61        InstallFla
1a3a0 67 73 20 69 6e 73 74 61 6c 6c 46 6c 61 67 73 2c  gs installFlags,
1a3b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a3c0 20 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73 20    ProviderFlags 
1a3d0 70 72 6f 76 69 64 65 72 46 6c 61 67 73 2c 0d 0a  providerFlags,..
1a3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a3f0 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 64 65  TracePriority de
1a400 62 75 67 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20  bugPriority,..  
1a410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1a420 61 63 65 50 72 69 6f 72 69 74 79 20 74 72 61 63  acePriority trac
1a430 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20 20 20  ePriority,..    
1a440 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
1a450 20 70 65 72 55 73 65 72 2c 0d 0a 20 20 20 20 20   perUser,..     
1a460 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
1a470 69 6e 73 74 61 6c 6c 2c 0d 0a 20 20 20 20 20 20  install,..      
1a480 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77            bool w
1a490 6f 77 36 34 2c 0d 0a 20 20 20 20 20 20 20 20 20  ow64,..         
1a4a0 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 52 75         bool noRu
1a4b0 6e 74 69 6d 65 56 65 72 73 69 6f 6e 2c 0d 0a 20  ntimeVersion,.. 
1a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1a4d0 6f 6f 6c 20 6e 6f 44 65 73 6b 74 6f 70 2c 0d 0a  ool noDesktop,..
1a4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a4f0 62 6f 6f 6c 20 6e 6f 43 6f 6d 70 61 63 74 2c 0d  bool noCompact,.
1a500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a510 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 32 30 2c   bool noNetFx20,
1a520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a530 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 33 35    bool noNetFx35
1a540 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1a550 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34     bool noNetFx4
1a560 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0,..            
1a570 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78      bool noNetFx
1a580 34 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  45,..           
1a590 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46       bool noNetF
1a5a0 78 34 35 31 2c 0d 0a 20 20 20 20 20 20 20 20 20  x451,..         
1a5b0 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65         bool noNe
1a5c0 74 46 78 34 35 32 2c 0d 0a 20 20 20 20 20 20 20  tFx452,..       
1a5d0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1a5e0 4e 65 74 46 78 34 36 2c 0d 0a 20 20 20 20 20 20  NetFx46,..      
1a5f0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e            bool n
1a600 6f 4e 65 74 46 78 34 36 31 2c 0d 0a 20 20 20 20  oNetFx461,..    
1a610 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
1a620 20 6e 6f 4e 65 74 46 78 34 36 32 2c 0d 0a 20 20   noNetFx462,..  
1a630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1a640 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 2c 0d 0a 20  ol noNetFx47,.. 
1a650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1a660 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 31 2c 0d  ool noNetFx471,.
1a670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a680 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30 35 2c 0d   bool noVs2005,.
1a690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a6a0 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30 38 2c 0d   bool noVs2008,.
1a6b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a6c0 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 30 2c 0d   bool noVs2010,.
1a6d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a6e0 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 32 2c 0d   bool noVs2012,.
1a6f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a700 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 33 2c 0d   bool noVs2013,.
1a710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a720 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 35 2c 0d   bool noVs2015,.
1a730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a740 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 37 2c 0d   bool noVs2017,.
1a750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a760 20 62 6f 6f 6c 20 6e 6f 54 72 61 63 65 2c 0d 0a   bool noTrace,..
1a770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a780 62 6f 6f 6c 20 6e 6f 43 6f 6e 73 6f 6c 65 2c 0d  bool noConsole,.
1a790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a7a0 20 62 6f 6f 6c 20 6e 6f 4c 6f 67 2c 0d 0a 20 20   bool noLog,..  
1a7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1a7c0 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e  ol throwOnMissin
1a7d0 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g,..            
1a7e0 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
1a7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a800 20 20 62 6f 6f 6c 20 64 65 62 75 67 2c 0d 0a 20    bool debug,.. 
1a810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1a820 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 0d 0a 20 20  ool verbose,..  
1a830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1a840 6f 6c 20 63 6f 6e 66 69 72 6d 0d 0a 20 20 20 20  ol confirm..    
1a850 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1a860 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1a870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1a880 69 73 2e 61 73 73 65 6d 62 6c 79 20 3d 20 61 73  is.assembly = as
1a890 73 65 6d 62 6c 79 3b 0d 0a 20 20 20 20 20 20 20  sembly;..       
1a8a0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6c 6f           this.lo
1a8b0 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6c 6f 67 46  gFileName = logF
1a8c0 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
1a8d0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72            this.r
1a8e0 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61  egistryLogFileNa
1a8f0 6d 65 20 3d 20 72 65 67 69 73 74 72 79 4c 6f 67  me = registryLog
1a900 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  FileName;..     
1a910 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1a920 64 69 72 65 63 74 6f 72 79 20 3d 20 64 69 72 65  directory = dire
1a930 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20  ctory;..        
1a940 20 20 20 20 20 20 20 20 74 68 69 73 2e 63 6f 72          this.cor
1a950 65 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 72 65  eFileName = core
1a960 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20  FileName;..     
1a970 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1a980 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 6c  linqFileName = l
1a990 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  inqFileName;..  
1a9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1a9b0 69 73 2e 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d  is.ef6FileName =
1a9c0 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20   ef6FileName;.. 
1a9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1a9e0 68 69 73 2e 64 65 73 69 67 6e 65 72 46 69 6c 65  his.designerFile
1a9f0 4e 61 6d 65 20 3d 20 64 65 73 69 67 6e 65 72 46  Name = designerF
1aa00 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
1aa10 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72            this.r
1aa20 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e 20 3d  egistryVersion =
1aa30 20 72 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e   registryVersion
1aa40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1aa50 20 20 20 74 68 69 73 2e 63 6f 6e 66 69 67 56 65     this.configVe
1aa60 72 73 69 6f 6e 20 3d 20 63 6f 6e 66 69 67 56 65  rsion = configVe
1aa70 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  rsion;..        
1aa80 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 73 56          this.vsV
1aa90 65 72 73 69 6f 6e 53 75 66 66 69 78 20 3d 20 76  ersionSuffix = v
1aaa0 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78 3b 0d  sVersionSuffix;.
1aab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1aac0 20 74 68 69 73 2e 64 65 62 75 67 46 6f 72 6d 61   this.debugForma
1aad0 74 20 3d 20 64 65 62 75 67 46 6f 72 6d 61 74 3b  t = debugFormat;
1aae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aaf0 20 20 74 68 69 73 2e 74 72 61 63 65 46 6f 72 6d    this.traceForm
1ab00 61 74 20 3d 20 74 72 61 63 65 46 6f 72 6d 61 74  at = traceFormat
1ab10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ab20 20 20 20 74 68 69 73 2e 69 6e 73 74 61 6c 6c 46     this.installF
1ab30 6c 61 67 73 20 3d 20 69 6e 73 74 61 6c 6c 46 6c  lags = installFl
1ab40 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ags;..          
1ab50 20 20 20 20 20 20 74 68 69 73 2e 70 72 6f 76 69        this.provi
1ab60 64 65 72 46 6c 61 67 73 20 3d 20 70 72 6f 76 69  derFlags = provi
1ab70 64 65 72 46 6c 61 67 73 3b 0d 0a 20 20 20 20 20  derFlags;..     
1ab80 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1ab90 64 65 62 75 67 50 72 69 6f 72 69 74 79 20 3d 20  debugPriority = 
1aba0 64 65 62 75 67 50 72 69 6f 72 69 74 79 3b 0d 0a  debugPriority;..
1abb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1abc0 74 68 69 73 2e 74 72 61 63 65 50 72 69 6f 72 69  this.tracePriori
1abd0 74 79 20 3d 20 74 72 61 63 65 50 72 69 6f 72 69  ty = tracePriori
1abe0 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ty;..           
1abf0 20 20 20 20 20 74 68 69 73 2e 70 65 72 55 73 65       this.perUse
1ac00 72 20 3d 20 70 65 72 55 73 65 72 3b 0d 0a 20 20  r = perUser;..  
1ac10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1ac20 69 73 2e 69 6e 73 74 61 6c 6c 20 3d 20 69 6e 73  is.install = ins
1ac30 74 61 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  tall;..         
1ac40 20 20 20 20 20 20 20 74 68 69 73 2e 77 6f 77 36         this.wow6
1ac50 34 20 3d 20 77 6f 77 36 34 3b 0d 0a 20 20 20 20  4 = wow64;..    
1ac60 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1ac70 2e 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f  .noRuntimeVersio
1ac80 6e 20 3d 20 6e 6f 52 75 6e 74 69 6d 65 56 65 72  n = noRuntimeVer
1ac90 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  sion;..         
1aca0 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 44 65         this.noDe
1acb0 73 6b 74 6f 70 20 3d 20 6e 6f 44 65 73 6b 74 6f  sktop = noDeskto
1acc0 70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  p;..            
1acd0 20 20 20 20 74 68 69 73 2e 6e 6f 43 6f 6d 70 61      this.noCompa
1ace0 63 74 20 3d 20 6e 6f 43 6f 6d 70 61 63 74 3b 0d  ct = noCompact;.
1acf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ad00 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 32 30 20   this.noNetFx20 
1ad10 3d 20 6e 6f 4e 65 74 46 78 32 30 3b 0d 0a 20 20  = noNetFx20;..  
1ad20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1ad30 69 73 2e 6e 6f 4e 65 74 46 78 33 35 20 3d 20 6e  is.noNetFx35 = n
1ad40 6f 4e 65 74 46 78 33 35 3b 0d 0a 20 20 20 20 20  oNetFx35;..     
1ad50 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1ad60 6e 6f 4e 65 74 46 78 34 30 20 3d 20 6e 6f 4e 65  noNetFx40 = noNe
1ad70 74 46 78 34 30 3b 0d 0a 20 20 20 20 20 20 20 20  tFx40;..        
1ad80 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e          this.noN
1ad90 65 74 46 78 34 35 20 3d 20 6e 6f 4e 65 74 46 78  etFx45 = noNetFx
1ada0 34 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  45;..           
1adb0 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46       this.noNetF
1adc0 78 34 35 31 20 3d 20 6e 6f 4e 65 74 46 78 34 35  x451 = noNetFx45
1add0 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
1ade0 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78      this.noNetFx
1adf0 34 35 32 20 3d 20 6e 6f 4e 65 74 46 78 34 35 32  452 = noNetFx452
1ae00 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1ae10 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34     this.noNetFx4
1ae20 36 20 3d 20 6e 6f 4e 65 74 46 78 34 36 3b 0d 0a  6 = noNetFx46;..
1ae30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ae40 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34 36 31 20  this.noNetFx461 
1ae50 3d 20 6e 6f 4e 65 74 46 78 34 36 31 3b 0d 0a 20  = noNetFx461;.. 
1ae60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1ae70 68 69 73 2e 6e 6f 4e 65 74 46 78 34 36 32 20 3d  his.noNetFx462 =
1ae80 20 6e 6f 4e 65 74 46 78 34 36 32 3b 0d 0a 20 20   noNetFx462;..  
1ae90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1aea0 69 73 2e 6e 6f 4e 65 74 46 78 34 37 20 3d 20 6e  is.noNetFx47 = n
1aeb0 6f 4e 65 74 46 78 34 37 3b 0d 0a 20 20 20 20 20  oNetFx47;..     
1aec0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1aed0 6e 6f 4e 65 74 46 78 34 37 31 20 3d 20 6e 6f 4e  noNetFx471 = noN
1aee0 65 74 46 78 34 37 31 3b 0d 0a 20 20 20 20 20 20  etFx471;..      
1aef0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e            this.n
1af00 6f 56 73 32 30 30 35 20 3d 20 6e 6f 56 73 32 30  oVs2005 = noVs20
1af10 30 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  05;..           
1af20 20 20 20 20 20 74 68 69 73 2e 6e 6f 56 73 32 30       this.noVs20
1af30 30 38 20 3d 20 6e 6f 56 73 32 30 30 38 3b 0d 0a  08 = noVs2008;..
1af40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1af50 74 68 69 73 2e 6e 6f 56 73 32 30 31 30 20 3d 20  this.noVs2010 = 
1af60 6e 6f 56 73 32 30 31 30 3b 0d 0a 20 20 20 20 20  noVs2010;..     
1af70 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1af80 6e 6f 56 73 32 30 31 32 20 3d 20 6e 6f 56 73 32  noVs2012 = noVs2
1af90 30 31 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  012;..          
1afa0 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 56 73 32        this.noVs2
1afb0 30 31 33 20 3d 20 6e 6f 56 73 32 30 31 33 3b 0d  013 = noVs2013;.
1afc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1afd0 20 74 68 69 73 2e 6e 6f 56 73 32 30 31 35 20 3d   this.noVs2015 =
1afe0 20 6e 6f 56 73 32 30 31 35 3b 0d 0a 20 20 20 20   noVs2015;..    
1aff0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1b000 2e 6e 6f 56 73 32 30 31 37 20 3d 20 6e 6f 56 73  .noVs2017 = noVs
1b010 32 30 31 37 3b 0d 0a 20 20 20 20 20 20 20 20 20  2017;..         
1b020 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 54 72         this.noTr
1b030 61 63 65 20 3d 20 6e 6f 54 72 61 63 65 3b 0d 0a  ace = noTrace;..
1b040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b050 74 68 69 73 2e 6e 6f 43 6f 6e 73 6f 6c 65 20 3d  this.noConsole =
1b060 20 6e 6f 43 6f 6e 73 6f 6c 65 3b 0d 0a 20 20 20   noConsole;..   
1b070 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1b080 73 2e 6e 6f 4c 6f 67 20 3d 20 6e 6f 4c 6f 67 3b  s.noLog = noLog;
1b090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b0a0 20 20 74 68 69 73 2e 74 68 72 6f 77 4f 6e 4d 69    this.throwOnMi
1b0b0 73 73 69 6e 67 20 3d 20 74 68 72 6f 77 4f 6e 4d  ssing = throwOnM
1b0c0 69 73 73 69 6e 67 3b 0d 0a 20 20 20 20 20 20 20  issing;..       
1b0d0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 68           this.wh
1b0e0 61 74 49 66 20 3d 20 77 68 61 74 49 66 3b 0d 0a  atIf = whatIf;..
1b0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b100 74 68 69 73 2e 64 65 62 75 67 20 3d 20 64 65 62  this.debug = deb
1b110 75 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ug;..           
1b120 20 20 20 20 20 74 68 69 73 2e 76 65 72 62 6f 73       this.verbos
1b130 65 20 3d 20 76 65 72 62 6f 73 65 3b 0d 0a 20 20  e = verbose;..  
1b140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1b150 69 73 2e 63 6f 6e 66 69 72 6d 20 3d 20 63 6f 6e  is.confirm = con
1b160 66 69 72 6d 3b 0d 0a 20 20 20 20 20 20 20 20 20  firm;..         
1b170 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1b180 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1b190 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1b1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1b1e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
1b1f0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53  region Private S
1b200 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  tatic Methods.. 
1b210 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
1b220 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 47  te static void G
1b230 65 74 44 65 66 61 75 6c 74 46 69 6c 65 4e 61 6d  etDefaultFileNam
1b240 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
1b250 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
1b260 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
1b270 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
1b280 73 74 72 69 6e 67 20 63 6f 72 65 46 69 6c 65 4e  string coreFileN
1b290 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
1b2a0 20 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67        ref string
1b2b0 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 2c 0d 0a   linqFileName,..
1b2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b2d0 72 65 66 20 73 74 72 69 6e 67 20 65 66 36 46 69  ref string ef6Fi
1b2e0 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  leName,..       
1b2f0 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
1b300 69 6e 67 20 64 65 73 69 67 6e 65 72 46 69 6c 65  ing designerFile
1b310 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
1b320 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1b330 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1b340 20 20 20 20 20 20 20 20 69 66 20 28 74 68 69 73          if (this
1b350 41 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c  Assembly == null
1b360 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1b370 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
1b380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b390 20 20 64 69 72 65 63 74 6f 72 79 20 3d 20 50 61    directory = Pa
1b3a0 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79 4e  th.GetDirectoryN
1b3b0 61 6d 65 28 74 68 69 73 41 73 73 65 6d 62 6c 79  ame(thisAssembly
1b3c0 2e 4c 6f 63 61 74 69 6f 6e 29 3b 0d 0a 0d 0a 20  .Location);.... 
1b3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1b3e0 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c  f (String.IsNull
1b3f0 4f 72 45 6d 70 74 79 28 64 69 72 65 63 74 6f 72  OrEmpty(director
1b400 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y))..           
1b410 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
1b420 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1b430 20 20 20 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65      coreFileName
1b440 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28   = Path.Combine(
1b450 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
1b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b470 49 6e 73 74 61 6c 6c 65 72 2e 43 6f 72 65 46 69  Installer.CoreFi
1b480 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
1b490 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 71              linq
1b4a0 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  FileName = Path.
1b4b0 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72  Combine(director
1b4c0 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
1b4d0 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c 6c 65          Installe
1b4e0 72 2e 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 29 3b  r.LinqFileName);
1b4f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1b500 20 20 20 20 65 66 36 46 69 6c 65 4e 61 6d 65 20      ef6FileName 
1b510 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64  = Path.Combine(d
1b520 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20  irectory,..     
1b530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
1b540 6e 73 74 61 6c 6c 65 72 2e 45 66 36 46 69 6c 65  nstaller.Ef6File
1b550 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
1b560 20 20 20 20 20 20 20 20 20 20 64 65 73 69 67 6e            design
1b570 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74  erFileName = Pat
1b580 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74  h.Combine(direct
1b590 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ory,..          
1b5a0 20 20 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c            Instal
1b5b0 6c 65 72 2e 44 65 73 69 67 6e 65 72 46 69 6c 65  ler.DesignerFile
1b5c0 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
1b5d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1b5e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1b5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b620 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1b630 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1b640 73 74 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63  static bool Chec
1b650 6b 4f 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  kOption(..      
1b660 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
1b670 72 69 6e 67 20 61 72 67 0d 0a 20 20 20 20 20 20  ring arg..      
1b680 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
1b690 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b6a0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1b6b0 6e 67 20 72 65 73 75 6c 74 20 3d 20 61 72 67 3b  ng result = arg;
1b6c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1b6d0 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e      if (!String.
1b6e0 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 72 65  IsNullOrEmpty(re
1b6f0 73 75 6c 74 29 29 0d 0a 20 20 20 20 20 20 20 20  sult))..        
1b700 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1b710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1b720 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1b730 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1b740 52 65 6d 6f 76 65 20 61 6c 6c 20 6c 65 61 64 69  Remove all leadi
1b750 6e 67 20 73 77 69 74 63 68 20 63 68 61 72 73 2e  ng switch chars.
1b760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b770 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1b780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1b790 73 75 6c 74 20 3d 20 72 65 73 75 6c 74 2e 54 72  sult = result.Tr
1b7a0 69 6d 53 74 61 72 74 28 53 77 69 74 63 68 43 68  imStart(SwitchCh
1b7b0 61 72 73 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ars);....       
1b7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1b7d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b7e0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 48 6f       // NOTE: Ho
1b7f0 77 20 6d 61 6e 79 20 63 68 61 72 73 20 77 65 72  w many chars wer
1b800 65 20 72 65 6d 6f 76 65 64 3f 0d 0a 20 20 20 20  e removed?..    
1b810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b820 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1b830 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f 75 6e          int coun
1b840 74 20 3d 20 61 72 67 2e 4c 65 6e 67 74 68 20 2d  t = arg.Length -
1b850 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74 68 3b 0d   result.Length;.
1b860 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1b870 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1b880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1b890 2f 20 4e 4f 54 45 3a 20 57 61 73 20 74 68 65 72  / NOTE: Was ther
1b8a0 65 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 3f 0d  e at least one?.
1b8b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b8c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1b8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1b8e0 28 63 6f 75 6e 74 20 3e 20 30 29 0d 0a 20 20 20  (count > 0)..   
1b8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b900 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1b910 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1b920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b930 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
1b940 20 4f 6b 2c 20 72 65 70 6c 61 63 65 20 74 68 65   Ok, replace the
1b950 69 72 20 6f 72 69 67 69 6e 61 6c 0d 0a 20 20 20  ir original..   
1b960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b970 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 72       //       ar
1b980 67 75 6d 65 6e 74 2e 0d 0a 20 20 20 20 20 20 20  gument...       
1b990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9a0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1b9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72 67               arg
1b9c0 20 3d 20 72 65 73 75 6c 74 3b 0d 0a 0d 0a 20 20   = result;....  
1b9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9e0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1b9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba00 20 20 2f 2f 20 4e 4f 54 45 3a 20 59 65 73 2c 20    // NOTE: Yes, 
1ba10 74 68 69 73 20 69 73 20 61 20 73 77 69 74 63 68  this is a switch
1ba20 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1ba30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1ba40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ba50 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
1ba60 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
1ba70 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1ba80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1ba90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1baa0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
1bab0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1bac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
1bad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1baf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1bb20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
1bb30 6f 6f 6c 20 4d 61 74 63 68 4f 70 74 69 6f 6e 28  ool MatchOption(
1bb40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bb50 20 20 73 74 72 69 6e 67 20 61 72 67 2c 0d 0a 20    string arg,.. 
1bb60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1bb70 74 72 69 6e 67 20 6f 70 74 69 6f 6e 0d 0a 20 20  tring option..  
1bb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
1bb90 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1bba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bbb0 69 66 20 28 28 61 72 67 20 3d 3d 20 6e 75 6c 6c  if ((arg == null
1bbc0 29 20 7c 7c 20 28 6f 70 74 69 6f 6e 20 3d 3d 20  ) || (option == 
1bbd0 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20 20  null))..        
1bbe0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1bbf0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
1bc00 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1bc10 75 72 6e 20 53 74 72 69 6e 67 2e 43 6f 6d 70 61  urn String.Compa
1bc20 72 65 28 61 72 67 2c 20 30 2c 20 6f 70 74 69 6f  re(arg, 0, optio
1bc30 6e 2c 20 30 2c 0d 0a 20 20 20 20 20 20 20 20 20  n, 0,..         
1bc40 20 20 20 20 20 20 20 20 20 20 20 61 72 67 2e 4c             arg.L
1bc50 65 6e 67 74 68 2c 20 53 74 72 69 6e 67 43 6f 6d  ength, StringCom
1bc60 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
1bc70 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d 20 30 3b  gnoreCase) == 0;
1bc80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1bc90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
1bca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bce0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
1bcf0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
1bd00 20 62 6f 6f 6c 3f 20 50 61 72 73 65 42 6f 6f 6c   bool? ParseBool
1bd10 65 61 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ean(..          
1bd20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78        string tex
1bd30 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
1bd40 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
1bd50 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1bd60 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
1bd70 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74  .IsNullOrEmpty(t
1bd80 65 78 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ext))..         
1bd90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1bda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1bdb0 6f 6c 20 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20  ol value;....   
1bdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bdd0 20 69 66 20 28 62 6f 6f 6c 2e 54 72 79 50 61 72   if (bool.TryPar
1bde0 73 65 28 74 65 78 74 2c 20 6f 75 74 20 76 61 6c  se(text, out val
1bdf0 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
1be00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1be10 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20  turn value;..   
1be20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1be30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1be40 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
1be50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1be60 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
1be70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1be90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1beb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1bec0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6f  private static o
1bed0 62 6a 65 63 74 20 50 61 72 73 65 45 6e 75 6d 28  bject ParseEnum(
1bee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bef0 20 20 54 79 70 65 20 65 6e 75 6d 54 79 70 65 2c    Type enumType,
1bf00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bf10 20 20 73 74 72 69 6e 67 20 74 65 78 74 2c 0d 0a    string text,..
1bf20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf30 62 6f 6f 6c 20 6e 6f 43 61 73 65 0d 0a 20 20 20  bool noCase..   
1bf40 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
1bf50 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1bf60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1bf70 66 20 28 28 65 6e 75 6d 54 79 70 65 20 3d 3d 20  f ((enumType == 
1bf80 6e 75 6c 6c 29 20 7c 7c 20 21 65 6e 75 6d 54 79  null) || !enumTy
1bf90 70 65 2e 49 73 45 6e 75 6d 29 0d 0a 20 20 20 20  pe.IsEnum)..    
1bfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfb0 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a  return null;....
1bfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfd0 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75  if (!String.IsNu
1bfe0 6c 6c 4f 72 45 6d 70 74 79 28 74 65 78 74 29 29  llOrEmpty(text))
1bff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c000 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c010 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1c020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c030 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c040 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1c050 75 72 6e 20 45 6e 75 6d 2e 50 61 72 73 65 28 65  urn Enum.Parse(e
1c060 6e 75 6d 54 79 70 65 2c 20 74 65 78 74 2c 20 6e  numType, text, n
1c070 6f 43 61 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  oCase);..       
1c080 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1c090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0a0 20 20 20 20 63 61 74 63 68 0d 0a 20 20 20 20 20      catch..     
1c0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1c0c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c0d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
1c0e0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
1c0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1c100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c110 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1c120 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
1c130 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
1c140 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1c150 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1c160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c190 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1c1a0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
1c1b0 69 63 20 62 6f 6f 6c 20 49 73 53 79 73 74 65 6d  ic bool IsSystem
1c1c0 45 66 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61  Ef6AssemblyGloba
1c1d0 6c 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l()..           
1c1e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1c1f0 20 20 20 20 69 66 20 28 73 79 73 74 65 6d 45 66      if (systemEf
1c200 36 41 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c  6Assembly == nul
1c210 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1c220 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1c230 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
1c240 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1c250 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c  systemEf6Assembl
1c260 79 2e 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79  y.GlobalAssembly
1c270 43 61 63 68 65 3b 0d 0a 20 20 20 20 20 20 20 20  Cache;..        
1c280 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1c290 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
1c2a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
1c2b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c2f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c300 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 53  #region Public S
1c310 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  tatic Methods.. 
1c320 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
1c330 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 42 72  c static void Br
1c340 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65 72 28  eakIntoDebugger(
1c350 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1c360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c370 20 20 43 6f 6e 73 6f 6c 65 2e 57 72 69 74 65 4c    Console.WriteL
1c380 69 6e 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ine(..          
1c390 20 20 20 20 20 20 20 20 20 20 22 41 74 74 61 63            "Attac
1c3a0 68 20 61 20 64 65 62 75 67 67 65 72 20 74 6f 20  h a debugger to 
1c3b0 70 72 6f 63 65 73 73 20 7b 30 7d 20 61 6e 64 20  process {0} and 
1c3c0 70 72 65 73 73 20 22 20 2b 0d 0a 20 20 20 20 20  press " +..     
1c3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1c3e0 61 6e 79 20 6b 65 79 20 74 6f 20 63 6f 6e 74 69  any key to conti
1c3f0 6e 75 65 2e 22 2c 20 28 74 68 69 73 50 72 6f 63  nue.", (thisProc
1c400 65 73 73 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a  ess != null) ?..
1c410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c420 20 20 20 20 74 68 69 73 50 72 6f 63 65 73 73 2e      thisProcess.
1c430 49 64 2e 54 6f 53 74 72 69 6e 67 28 29 20 3a 20  Id.ToString() : 
1c440 22 3c 75 6e 6b 6e 6f 77 6e 3e 22 29 3b 0d 0a 0d  "<unknown>");...
1c450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c460 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1c470 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1c480 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e               Con
1c490 73 6f 6c 65 2e 52 65 61 64 4b 65 79 28 74 72 75  sole.ReadKey(tru
1c4a0 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
1c4b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c4c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1c4d0 20 20 20 20 63 61 74 63 68 20 28 49 6e 76 61 6c      catch (Inval
1c4e0 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
1c4f0 74 69 6f 6e 29 20 2f 2f 20 43 6f 6e 73 6f 6c 65  tion) // Console
1c500 2e 52 65 61 64 4b 65 79 0d 0a 20 20 20 20 20 20  .ReadKey..      
1c510 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1c520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c530 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
1c540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c550 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1c560 20 20 20 20 20 20 44 65 62 75 67 67 65 72 2e 42        Debugger.B
1c570 72 65 61 6b 28 29 3b 0d 0a 20 20 20 20 20 20 20  reak();..       
1c580 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1c590 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1c5a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c5d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1c5e0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
1c5f0 73 74 61 74 69 63 20 43 6f 6e 66 69 67 75 72 61  static Configura
1c600 74 69 6f 6e 20 43 72 65 61 74 65 44 65 66 61 75  tion CreateDefau
1c610 6c 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  lt()..          
1c620 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1c630 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72 65       string dire
1c640 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  ctory = null;.. 
1c650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1c660 74 72 69 6e 67 20 63 6f 72 65 46 69 6c 65 4e 61  tring coreFileNa
1c670 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  me = null;..    
1c680 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1c690 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20  ng linqFileName 
1c6a0 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
1c6b0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1c6c0 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75  ef6FileName = nu
1c6d0 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll;..           
1c6e0 20 20 20 20 20 73 74 72 69 6e 67 20 64 65 73 69       string desi
1c6f0 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 6e  gnerFileName = n
1c700 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1c710 20 20 20 20 20 20 20 20 47 65 74 44 65 66 61 75          GetDefau
1c720 6c 74 46 69 6c 65 4e 61 6d 65 73 28 0d 0a 20 20  ltFileNames(..  
1c730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c740 20 20 72 65 66 20 64 69 72 65 63 74 6f 72 79 2c    ref directory,
1c750 20 72 65 66 20 63 6f 72 65 46 69 6c 65 4e 61 6d   ref coreFileNam
1c760 65 2c 20 72 65 66 20 6c 69 6e 71 46 69 6c 65 4e  e, ref linqFileN
1c770 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
1c780 20 20 20 20 20 20 20 20 20 20 72 65 66 20 65 66            ref ef
1c790 36 46 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 64  6FileName, ref d
1c7a0 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 29  esignerFileName)
1c7b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1c7c0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
1c7d0 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 28 0d 0a  Configuration(..
1c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c7f0 20 20 20 20 74 68 69 73 41 73 73 65 6d 62 6c 79      thisAssembly
1c800 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 20 64 69  , null, null, di
1c810 72 65 63 74 6f 72 79 2c 20 63 6f 72 65 46 69 6c  rectory, coreFil
1c820 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
1c830 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 71              linq
1c840 46 69 6c 65 4e 61 6d 65 2c 20 65 66 36 46 69 6c  FileName, ef6Fil
1c850 65 4e 61 6d 65 2c 20 64 65 73 69 67 6e 65 72 46  eName, designerF
1c860 69 6c 65 4e 61 6d 65 2c 20 6e 75 6c 6c 2c 20 6e  ileName, null, n
1c870 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ull,..          
1c880 20 20 20 20 20 20 20 20 20 20 6e 75 6c 6c 2c 20            null, 
1c890 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 46 6f  TraceOps.DebugFo
1c8a0 72 6d 61 74 2c 20 54 72 61 63 65 4f 70 73 2e 54  rmat, TraceOps.T
1c8b0 72 61 63 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  raceFormat,..   
1c8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c8d0 20 49 6e 73 74 61 6c 6c 46 6c 61 67 73 2e 44 65   InstallFlags.De
1c8e0 66 61 75 6c 74 2c 20 50 72 6f 76 69 64 65 72 46  fault, ProviderF
1c8f0 6c 61 67 73 2e 44 65 66 61 75 6c 74 2c 0d 0a 20  lags.Default,.. 
1c900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c910 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
1c920 2e 44 65 66 61 75 6c 74 2c 20 54 72 61 63 65 50  .Default, TraceP
1c930 72 69 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 2c  riority.Default,
1c940 20 66 61 6c 73 65 2c 20 74 72 75 65 2c 0d 0a 20   false, true,.. 
1c950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c960 20 20 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c     false, false,
1c970 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66   false, false, f
1c980 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c  alse, false, fal
1c990 73 65 2c 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20  se, false,..    
1c9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9b0 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61  false, false, fa
1c9c0 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73  lse, false, fals
1c9d0 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c  e, false, false,
1c9e0 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20   false,..       
1c9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c               fal
1ca00 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65  se, false, false
1ca10 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20  , false, false, 
1ca20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61  false, false, fa
1ca30 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lse,..          
1ca40 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65 2c            false,
1ca50 20 74 72 75 65 2c 20 74 72 75 65 2c 20 66 61 6c   true, true, fal
1ca60 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65  se, false, false
1ca70 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1ca80 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1ca90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1caa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cad0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
1cae0 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
1caf0 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
1cb00 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
1cb10 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
1cb20 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 46  ic static bool F
1cb30 72 6f 6d 41 72 67 73 28 0d 0a 20 20 20 20 20 20  romArgs(..      
1cb40 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1cb50 5b 5d 20 61 72 67 73 2c 0d 0a 20 20 20 20 20 20  [] args,..      
1cb60 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73            bool s
1cb70 74 72 69 63 74 2c 0d 0a 20 20 20 20 20 20 20 20  trict,..        
1cb80 20 20 20 20 20 20 20 20 72 65 66 20 43 6f 6e 66          ref Conf
1cb90 69 67 75 72 61 74 69 6f 6e 20 63 6f 6e 66 69 67  iguration config
1cba0 75 72 61 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20  uration,..      
1cbb0 20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74            ref st
1cbc0 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20  ring error..    
1cbd0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
1cbe0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1cbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1cc00 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
1cc10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1cc20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72            if (ar
1cc30 67 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  gs == null)..   
1cc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc50 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
1cc60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1cc70 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
1cc80 66 69 67 75 72 61 74 69 6f 6e 20 3d 3d 20 6e 75  figuration == nu
1cc90 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1cca0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1ccb0 66 69 67 75 72 61 74 69 6f 6e 20 3d 20 43 6f 6e  figuration = Con
1ccc0 66 69 67 75 72 61 74 69 6f 6e 2e 43 72 65 61 74  figuration.Creat
1ccd0 65 44 65 66 61 75 6c 74 28 29 3b 0d 0a 0d 0a 20  eDefault();.... 
1cce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ccf0 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 20 3d 20     int length = 
1cd00 61 72 67 73 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a  args.Length;....
1cd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd20 20 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64      for (int ind
1cd30 65 78 20 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20  ex = 0; index < 
1cd40 6c 65 6e 67 74 68 3b 20 69 6e 64 65 78 2b 2b 29  length; index++)
1cd50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cd60 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1cd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd80 20 73 74 72 69 6e 67 20 61 72 67 20 3d 20 61 72   string arg = ar
1cd90 67 73 5b 69 6e 64 65 78 5d 3b 0d 0a 0d 0a 20 20  gs[index];....  
1cda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cdb0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1cdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cdd0 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 6b 69 70 20    // NOTE: Skip 
1cde0 61 6e 79 20 61 72 67 75 6d 65 6e 74 20 74 68 61  any argument tha
1cdf0 74 20 69 73 20 6e 75 6c 6c 20 28 3f 29 20 6f 72  t is null (?) or
1ce00 20 61 6e 20 65 6d 70 74 79 0d 0a 20 20 20 20 20   an empty..     
1ce10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 74 72 69     //       stri
1ce30 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
1ce40 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1ce50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ce60 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74 72           if (Str
1ce70 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
1ce80 79 28 61 72 67 29 29 0d 0a 20 20 20 20 20 20 20  y(arg))..       
1ce90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cea0 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
1ceb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cec0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1ced0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cee0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57        // NOTE: W
1cef0 65 20 61 72 65 20 67 6f 69 6e 67 20 74 6f 20 6d  e are going to m
1cf00 6f 64 69 66 79 20 74 68 65 20 6f 72 69 67 69 6e  odify the origin
1cf10 61 6c 20 61 72 67 75 6d 65 6e 74 0d 0a 20 20 20  al argument..   
1cf20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf30 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 79       //       by
1cf40 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79 20 6c 65   removing any le
1cf50 61 64 69 6e 67 20 6f 70 74 69 6f 6e 20 63 68 61  ading option cha
1cf60 72 61 63 74 65 72 73 3b 0d 0a 20 20 20 20 20 20  racters;..      
1cf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf80 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65 72 65    //       there
1cf90 66 6f 72 65 2c 20 77 65 20 75 73 65 20 61 20 6e  fore, we use a n
1cfa0 65 77 20 73 74 72 69 6e 67 20 74 6f 20 68 6f 6c  ew string to hol
1cfb0 64 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20  d the..         
1cfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1cfd0 2f 20 20 20 20 20 20 20 6d 6f 64 69 66 69 65 64  /       modified
1cfe0 20 61 72 67 75 6d 65 6e 74 2e 0d 0a 20 20 20 20   argument...    
1cff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d000 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1d010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d020 73 74 72 69 6e 67 20 6e 65 77 41 72 67 20 3d 20  string newArg = 
1d030 61 72 67 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  arg;....        
1d040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d050 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1d060 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
1d070 4f 54 45 3a 20 41 6c 6c 20 74 68 65 20 73 75 70  OTE: All the sup
1d080 70 6f 72 74 65 64 20 63 6f 6d 6d 61 6e 64 20 6c  ported command l
1d090 69 6e 65 20 6f 70 74 69 6f 6e 73 20 6d 75 73 74  ine options must
1d0a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d0b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1d0c0 20 20 20 62 65 67 69 6e 20 77 69 74 68 20 61 6e     begin with an
1d0d0 20 6f 70 74 69 6f 6e 20 63 68 61 72 61 63 74 65   option characte
1d0e0 72 20 28 65 2e 67 2e 20 61 20 6d 69 6e 75 73 0d  r (e.g. a minus.
1d0f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d100 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1d110 20 20 6f 72 20 66 6f 72 77 61 72 64 20 73 6c 61    or forward sla
1d120 73 68 29 3b 20 61 74 74 65 6d 70 74 20 74 6f 20  sh); attempt to 
1d130 76 61 6c 69 64 61 74 65 20 74 68 61 74 0d 0a 20  validate that.. 
1d140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d150 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1d160 6e 6f 77 2e 20 20 49 66 20 77 65 20 66 61 69 6c  now.  If we fail
1d170 20 69 6e 20 73 74 72 69 63 74 20 6d 6f 64 65 2c   in strict mode,
1d180 20 77 65 20 61 72 65 20 64 6f 6e 65 3b 0d 0a 20   we are done;.. 
1d190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d1a0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1d1b0 6f 74 68 65 72 77 69 73 65 2c 20 6a 75 73 74 20  otherwise, just 
1d1c0 73 6b 69 70 20 74 68 69 73 20 61 72 67 75 6d 65  skip this argume
1d1d0 6e 74 20 61 6e 64 20 61 64 76 61 6e 63 65 0d 0a  nt and advance..
1d1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d1f0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1d200 20 74 6f 20 74 68 65 20 6e 65 78 74 20 6f 6e 65   to the next one
1d210 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1d220 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1d230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d240 20 20 20 20 20 20 20 69 66 20 28 21 43 68 65 63         if (!Chec
1d250 6b 4f 70 74 69 6f 6e 28 72 65 66 20 6e 65 77 41  kOption(ref newA
1d260 72 67 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  rg))..          
1d270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1d280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d290 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
1d2a0 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
1d2b0 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
1d2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1d2e0 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
1d2f0 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
1d300 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
1d310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d320 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
1d330 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
1d340 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1d350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d360 20 20 20 22 55 6e 73 75 70 70 6f 72 74 65 64 20     "Unsupported 
1d370 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72 67  command line arg
1d380 75 6d 65 6e 74 3a 20 7b 30 7d 22 2c 0d 0a 20 20  ument: {0}",..  
1d390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
1d3b0 72 44 69 73 70 6c 61 79 28 61 72 67 29 29 2c 20  rDisplay(arg)), 
1d3c0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
1d3d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1d3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1d3f0 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
1d400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d410 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1d420 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
1d430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d440 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
1d450 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1d460 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1d470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d480 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1d490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d4a0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6c       // NOTE: Al
1d4b0 6c 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20  l the supported 
1d4c0 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f 70 74  command line opt
1d4d0 69 6f 6e 73 20 6d 75 73 74 0d 0a 20 20 20 20 20  ions must..     
1d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d4f0 20 20 20 2f 2f 20 20 20 20 20 20 20 68 61 76 65     //       have
1d500 20 61 20 76 61 6c 75 65 3b 20 74 68 65 72 65 66   a value; theref
1d510 6f 72 65 2c 20 61 74 74 65 6d 70 74 20 74 6f 20  ore, attempt to 
1d520 61 64 76 61 6e 63 65 0d 0a 20 20 20 20 20 20 20  advance..       
1d530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d540 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 69 74 20   //       to it 
1d550 6e 6f 77 2e 20 20 49 66 20 77 65 20 66 61 69 6c  now.  If we fail
1d560 2c 20 77 65 20 61 72 65 20 64 6f 6e 65 2e 0d 0a  , we are done...
1d570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d580 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1d590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d5a0 20 20 20 20 69 6e 64 65 78 2b 2b 3b 0d 0a 0d 0a      index++;....
1d5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d5c0 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 64 65          if (inde
1d5d0 78 20 3e 3d 20 6c 65 6e 67 74 68 29 0d 0a 20 20  x >= length)..  
1d5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d5f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1d600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d610 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
1d620 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
1d630 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
1d640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d650 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
1d660 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
1d670 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
1d680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d690 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
1d6a0 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
1d6b0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
1d6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d6d0 20 20 20 20 20 20 20 20 20 20 20 22 4d 69 73 73             "Miss
1d6e0 69 6e 67 20 76 61 6c 75 65 20 66 6f 72 20 6f 70  ing value for op
1d6f0 74 69 6f 6e 3a 20 7b 30 7d 22 2c 0d 0a 20 20 20  tion: {0}",..   
1d700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d710 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
1d720 44 69 73 70 6c 61 79 28 61 72 67 29 29 2c 20 74  Display(arg)), t
1d730 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
1d740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1d760 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
1d770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d780 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1d790 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
1d7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d7b0 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
1d7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d7d0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1d7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d7f0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1d800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d810 20 2f 2f 20 4e 4f 54 45 3a 20 47 72 61 62 20 74   // NOTE: Grab t
1d820 68 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65  he textual value
1d830 20 6f 66 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64   of this command
1d840 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 20   line..         
1d850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1d860 2f 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 2e 0d  /       option..
1d870 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d880 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1d890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d8a0 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74       string text
1d8b0 20 3d 20 61 72 67 73 5b 69 6e 64 65 78 5d 3b 0d   = args[index];.
1d8c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1d8d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1d8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d8f0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1d900 46 69 67 75 72 65 20 6f 75 74 20 77 68 69 63 68  Figure out which
1d910 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f 70   command line op
1d920 74 69 6f 6e 20 74 68 69 73 20 69 73 0d 0a 20 20  tion this is..  
1d930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d940 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 28        //       (
1d950 62 61 73 65 64 20 6f 6e 20 61 20 70 61 72 74 69  based on a parti
1d960 61 6c 20 6e 61 6d 65 20 6d 61 74 63 68 29 20 61  al name match) a
1d970 6e 64 20 74 68 65 6e 20 74 72 79 0d 0a 20 20 20  nd then try..   
1d980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d990 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f       //       to
1d9a0 20 69 6e 74 65 72 70 72 65 74 20 74 68 65 20 74   interpret the t
1d9b0 65 78 74 75 61 6c 20 76 61 6c 75 65 20 61 73 20  extual value as 
1d9c0 74 68 65 20 63 6f 72 72 65 63 74 0d 0a 20 20 20  the correct..   
1d9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d9e0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 79       //       ty
1d9f0 70 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe...           
1da00 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1da10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1da20 20 20 20 20 20 20 20 20 20 69 66 20 28 4d 61 74           if (Mat
1da30 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
1da40 20 22 62 72 65 61 6b 22 29 29 0d 0a 20 20 20 20   "break"))..    
1da50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1da70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da80 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
1da90 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
1daa0 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
1dab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dac0 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
1dad0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1dae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1daf0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1db00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db10 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
1db20 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
1db30 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
1db40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db50 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
1db60 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
1db70 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
1db80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1db90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dba0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
1dbb0 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
1dbc0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1dbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dbe0 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
1dbf0 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
1dc00 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
1dc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc30 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
1dc40 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
1dc50 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
1dc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc70 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
1dc80 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
1dc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dca0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1dcb0 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
1dcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1dce0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
1dcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
1dd10 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
1dd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd30 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1dd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd50 20 20 20 20 20 20 69 66 20 28 28 62 6f 6f 6c 29        if ((bool)
1dd60 76 61 6c 75 65 29 0d 0a 20 20 20 20 20 20 20 20  value)..        
1dd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd80 20 20 20 20 20 20 20 20 42 72 65 61 6b 49 6e 74          BreakInt
1dd90 6f 44 65 62 75 67 67 65 72 28 29 3b 0d 0a 20 20  oDebugger();..  
1dda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ddb0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1ddc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ddd0 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
1dde0 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 63  ption(newArg, "c
1ddf0 6f 6e 66 69 67 56 65 72 73 69 6f 6e 22 29 29 0d  onfigVersion")).
1de00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1de10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1de20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de30 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1de40 61 74 69 6f 6e 2e 63 6f 6e 66 69 67 56 65 72 73  ation.configVers
1de50 69 6f 6e 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20  ion = text;..   
1de60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1de80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de90 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1dea0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 63 6f  tion(newArg, "co
1deb0 6e 66 69 72 6d 22 29 29 0d 0a 20 20 20 20 20 20  nfirm"))..      
1dec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ded0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1dee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1def0 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
1df00 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
1df10 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1df20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df30 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1df40 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1df50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df60 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1df70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df80 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
1df90 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
1dfa0 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
1dfb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfc0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
1dfd0 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
1dfe0 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
1dff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e010 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
1e020 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
1e030 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1e040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e050 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
1e060 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
1e070 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
1e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
1e0a0 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
1e0b0 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
1e0c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1e0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e0e0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
1e0f0 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
1e100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e110 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
1e120 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
1e130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e140 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1e150 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
1e160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e170 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
1e180 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
1e190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1a0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1e1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1c0 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
1e1d0 6e 2e 63 6f 6e 66 69 72 6d 20 3d 20 28 62 6f 6f  n.confirm = (boo
1e1e0 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
1e1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e200 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1e210 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1e220 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
1e230 6e 28 6e 65 77 41 72 67 2c 20 22 63 6f 72 65 46  n(newArg, "coreF
1e240 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20 20  ileName"))..    
1e250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e260 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1e270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e280 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
1e290 2e 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20  .coreFileName = 
1e2a0 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  text;..         
1e2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1e2c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e2d0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
1e2e0 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
1e2f0 65 77 41 72 67 2c 20 22 64 65 62 75 67 22 29 29  ewArg, "debug"))
1e300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e310 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1e320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e330 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
1e340 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
1e350 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
1e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e370 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
1e380 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
1e390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1e3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
1e3d0 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
1e3e0 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
1e3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e410 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
1e420 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
1e430 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
1e440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e450 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
1e460 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
1e470 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
1e480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1e4a0 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
1e4b0 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
1e4c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4e0 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
1e4f0 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
1e500 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
1e510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1e530 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
1e540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e560 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
1e570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e590 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1e5a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1e5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5c0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
1e5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1e5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e600 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1e610 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75 67 20  iguration.debug 
1e620 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
1e630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e640 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1e650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e660 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
1e670 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
1e680 22 64 65 62 75 67 46 6f 72 6d 61 74 22 29 29 0d  "debugFormat")).
1e690 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e6a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1e6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6c0 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1e6d0 61 74 69 6f 6e 2e 64 65 62 75 67 46 6f 72 6d 61  ation.debugForma
1e6e0 74 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20  t = text;..     
1e6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e700 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
1e710 44 65 62 75 67 46 6f 72 6d 61 74 20 3d 20 63 6f  DebugFormat = co
1e720 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75  nfiguration.debu
1e730 67 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20 20  gFormat;..      
1e740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e750 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1e760 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1e770 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
1e780 6e 28 6e 65 77 41 72 67 2c 20 22 64 65 62 75 67  n(newArg, "debug
1e790 50 72 69 6f 72 69 74 79 22 29 29 0d 0a 20 20 20  Priority"))..   
1e7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1e7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7d0 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
1e7e0 20 3d 20 50 61 72 73 65 45 6e 75 6d 28 0d 0a 20   = ParseEnum(.. 
1e7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1e810 79 70 65 6f 66 28 54 72 61 63 65 50 72 69 6f 72  ypeof(TracePrior
1e820 69 74 79 29 2c 20 74 65 78 74 2c 20 74 72 75 65  ity), text, true
1e830 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1e840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e850 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1e860 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1e870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e880 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8a0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
1e8b0 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
1e8c0 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
1e8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8e0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
1e8f0 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
1e900 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
1e910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e930 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
1e940 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
1e950 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1e960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e970 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
1e980 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  {0} value: {1}",
1e990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e9b0 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
1e9c0 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
1e9d0 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
1e9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1ea00 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
1ea10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ea20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea30 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
1ea40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea60 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1ea70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ea80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea90 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
1eaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eab0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1eac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ead0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1eae0 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75 67 50  iguration.debugP
1eaf0 72 69 6f 72 69 74 79 20 3d 20 28 54 72 61 63 65  riority = (Trace
1eb00 50 72 69 6f 72 69 74 79 29 76 61 6c 75 65 3b 0d  Priority)value;.
1eb10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1eb20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1eb30 63 65 4f 70 73 2e 44 65 62 75 67 50 72 69 6f 72  ceOps.DebugPrior
1eb40 69 74 79 20 3d 20 63 6f 6e 66 69 67 75 72 61 74  ity = configurat
1eb50 69 6f 6e 2e 64 65 62 75 67 50 72 69 6f 72 69 74  ion.debugPriorit
1eb60 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
1eb70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1eb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb90 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
1eba0 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
1ebb0 72 67 2c 20 22 64 65 73 69 67 6e 65 72 46 69 6c  rg, "designerFil
1ebc0 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20 20 20 20  eName"))..      
1ebd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ebe0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1ebf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec00 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64   configuration.d
1ec10 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20  esignerFileName 
1ec20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20  = text;..       
1ec30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec40 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1ec50 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
1ec60 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
1ec70 28 6e 65 77 41 72 67 2c 20 22 64 69 72 65 63 74  (newArg, "direct
1ec80 6f 72 79 22 29 29 0d 0a 20 20 20 20 20 20 20 20  ory"))..        
1ec90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eca0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1ecb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1ecc0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 69 72  onfiguration.dir
1ecd0 65 63 74 6f 72 79 20 3d 20 74 65 78 74 3b 0d 0a  ectory = text;..
1ece0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ecf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1ed00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ed10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1ed20 20 4e 4f 54 45 3a 20 2a 53 50 45 43 49 41 4c 2a   NOTE: *SPECIAL*
1ed30 20 4d 75 73 74 20 72 65 66 72 65 73 68 20 74 68   Must refresh th
1ed40 65 20 66 69 6c 65 20 6e 61 6d 65 73 0d 0a 20 20  e file names..  
1ed50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed60 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1ed70 20 20 20 68 65 72 65 20 62 65 63 61 75 73 65 20     here because 
1ed80 74 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 64  the underlying d
1ed90 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20  irectory..      
1eda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1edb0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68        //       h
1edc0 61 73 20 63 68 61 6e 67 65 64 2e 0d 0a 20 20 20  as changed...   
1edd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ede0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1edf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee00 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1ee10 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20 63  coreFileName = c
1ee20 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 63 6f 72  onfiguration.cor
1ee30 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  eFileName;....  
1ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53            if (!S
1ee60 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
1ee70 70 74 79 28 63 6f 72 65 46 69 6c 65 4e 61 6d 65  pty(coreFileName
1ee80 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
1ee90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eea0 20 20 20 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65      coreFileName
1eeb0 20 3d 20 50 61 74 68 2e 47 65 74 46 69 6c 65 4e   = Path.GetFileN
1eec0 61 6d 65 28 63 6f 72 65 46 69 6c 65 4e 61 6d 65  ame(coreFileName
1eed0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1eee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eef0 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
1ef00 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 72 65 46  ullOrEmpty(coreF
1ef10 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
1ef20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef30 20 20 20 20 20 20 20 20 20 20 20 63 6f 72 65 46             coreF
1ef40 69 6c 65 4e 61 6d 65 20 3d 20 49 6e 73 74 61 6c  ileName = Instal
1ef50 6c 65 72 2e 43 6f 72 65 46 69 6c 65 4e 61 6d 65  ler.CoreFileName
1ef60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1ef70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef80 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 63   configuration.c
1ef90 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61  oreFileName = Pa
1efa0 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20  th.Combine(..   
1efb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1efc0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1efd0 66 69 67 75 72 61 74 69 6f 6e 2e 64 69 72 65 63  figuration.direc
1efe0 74 6f 72 79 2c 20 63 6f 72 65 46 69 6c 65 4e 61  tory, coreFileNa
1eff0 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
1f000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f010 20 20 20 20 73 74 72 69 6e 67 20 6c 69 6e 71 46      string linqF
1f020 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 6e 66 69 67  ileName = config
1f030 75 72 61 74 69 6f 6e 2e 6c 69 6e 71 46 69 6c 65  uration.linqFile
1f040 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  Name;....       
1f050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f060 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
1f070 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 6c  .IsNullOrEmpty(l
1f080 69 6e 71 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  inqFileName)).. 
1f090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1f0b0 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61  inqFileName = Pa
1f0c0 74 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65 28 6c  th.GetFileName(l
1f0d0 69 6e 71 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  inqFileName);...
1f0e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1f100 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
1f110 45 6d 70 74 79 28 6c 69 6e 71 46 69 6c 65 4e 61  Empty(linqFileNa
1f120 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  me))..          
1f130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f140 20 20 20 20 20 20 6c 69 6e 71 46 69 6c 65 4e 61        linqFileNa
1f150 6d 65 20 3d 20 49 6e 73 74 61 6c 6c 65 72 2e 4c  me = Installer.L
1f160 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a  inqFileName;....
1f170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f180 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1f190 69 67 75 72 61 74 69 6f 6e 2e 6c 69 6e 71 46 69  iguration.linqFi
1f1a0 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f  leName = Path.Co
1f1b0 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20 20 20  mbine(..        
1f1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f1d0 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1f1e0 61 74 69 6f 6e 2e 64 69 72 65 63 74 6f 72 79 2c  ation.directory,
1f1f0 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29 3b 0d   linqFileName);.
1f200 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1f210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1f220 74 72 69 6e 67 20 65 66 36 46 69 6c 65 4e 61 6d  tring ef6FileNam
1f230 65 20 3d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  e = configuratio
1f240 6e 2e 65 66 36 46 69 6c 65 4e 61 6d 65 3b 0d 0a  n.ef6FileName;..
1f250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1f270 20 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c   (!String.IsNull
1f280 4f 72 45 6d 70 74 79 28 65 66 36 46 69 6c 65 4e  OrEmpty(ef6FileN
1f290 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
1f2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2b0 20 20 20 20 20 20 20 65 66 36 46 69 6c 65 4e 61         ef6FileNa
1f2c0 6d 65 20 3d 20 50 61 74 68 2e 47 65 74 46 69 6c  me = Path.GetFil
1f2d0 65 4e 61 6d 65 28 65 66 36 46 69 6c 65 4e 61 6d  eName(ef6FileNam
1f2e0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
1f2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f300 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
1f310 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 65 66 36 46  NullOrEmpty(ef6F
1f320 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
1f330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f340 20 20 20 20 20 20 20 20 20 20 20 65 66 36 46 69             ef6Fi
1f350 6c 65 4e 61 6d 65 20 3d 20 49 6e 73 74 61 6c 6c  leName = Install
1f360 65 72 2e 45 66 36 46 69 6c 65 4e 61 6d 65 3b 0d  er.Ef6FileName;.
1f370 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1f380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1f390 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 65 66 36  onfiguration.ef6
1f3a0 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  FileName = Path.
1f3b0 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20  Combine(..      
1f3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f3d0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
1f3e0 75 72 61 74 69 6f 6e 2e 64 69 72 65 63 74 6f 72  uration.director
1f3f0 79 2c 20 65 66 36 46 69 6c 65 4e 61 6d 65 29 3b  y, ef6FileName);
1f400 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f420 73 74 72 69 6e 67 20 64 65 73 69 67 6e 65 72 46  string designerF
1f430 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 6e 66 69 67  ileName = config
1f440 75 72 61 74 69 6f 6e 2e 64 65 73 69 67 6e 65 72  uration.designer
1f450 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  FileName;....   
1f460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f470 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
1f480 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
1f490 74 79 28 64 65 73 69 67 6e 65 72 46 69 6c 65 4e  ty(designerFileN
1f4a0 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
1f4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4c0 20 20 20 20 20 20 20 64 65 73 69 67 6e 65 72 46         designerF
1f4d0 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 47  ileName = Path.G
1f4e0 65 74 46 69 6c 65 4e 61 6d 65 28 64 65 73 69 67  etFileName(desig
1f4f0 6e 65 72 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  nerFileName);...
1f500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f510 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1f520 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
1f530 45 6d 70 74 79 28 64 65 73 69 67 6e 65 72 46 69  Empty(designerFi
1f540 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
1f550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f560 20 20 20 20 20 20 20 20 20 20 64 65 73 69 67 6e            design
1f570 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 49 6e 73  erFileName = Ins
1f580 74 61 6c 6c 65 72 2e 44 65 73 69 67 6e 65 72 46  taller.DesignerF
1f590 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  ileName;....    
1f5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5b0 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1f5c0 61 74 69 6f 6e 2e 64 65 73 69 67 6e 65 72 46 69  ation.designerFi
1f5d0 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f  leName = Path.Co
1f5e0 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20 20 20 20  mbine(..        
1f5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f600 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1f610 61 74 69 6f 6e 2e 64 69 72 65 63 74 6f 72 79 2c  ation.directory,
1f620 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d   designerFileNam
1f630 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
1f640 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1f650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f660 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
1f670 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
1f680 41 72 67 2c 20 22 65 66 36 46 69 6c 65 4e 61 6d  Arg, "ef6FileNam
1f690 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e"))..          
1f6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1f6b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1f6d0 66 69 67 75 72 61 74 69 6f 6e 2e 65 66 36 46 69  figuration.ef6Fi
1f6e0 6c 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a  leName = text;..
1f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f700 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1f710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f720 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
1f730 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
1f740 22 69 6e 73 74 61 6c 6c 22 29 29 0d 0a 20 20 20  "install"))..   
1f750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f760 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1f770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f780 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
1f790 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
1f7a0 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
1f7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7c0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
1f7d0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1f7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1f800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f810 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
1f820 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
1f830 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
1f840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f850 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1f860 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
1f870 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
1f880 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1f890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f8a0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
1f8b0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
1f8c0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
1f8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f8e0 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
1f8f0 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
1f900 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
1f910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f930 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
1f940 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
1f950 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
1f960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f970 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
1f980 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
1f990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1f9b0 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
1f9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1f9e0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
1f9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1fa10 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
1fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa30 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1fa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa50 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
1fa60 74 69 6f 6e 2e 69 6e 73 74 61 6c 6c 20 3d 20 28  tion.install = (
1fa70 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
1fa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa90 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1faa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fab0 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1fac0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 69 6e  tion(newArg, "in
1fad0 73 74 61 6c 6c 46 6c 61 67 73 22 29 29 0d 0a 20  stallFlags")).. 
1fae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1faf0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1fb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb10 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
1fb20 75 65 20 3d 20 50 61 72 73 65 45 6e 75 6d 28 0d  ue = ParseEnum(.
1fb30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fb40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb50 20 74 79 70 65 6f 66 28 49 6e 73 74 61 6c 6c 46   typeof(InstallF
1fb60 6c 61 67 73 29 2c 20 74 65 78 74 2c 20 74 72 75  lags), text, tru
1fb70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
1fb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb90 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
1fba0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1fbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1fbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbe0 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
1fbf0 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
1fc00 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
1fc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1fc30 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
1fc40 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
1fc50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc70 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
1fc80 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
1fc90 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1fca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fcb0 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
1fcc0 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31 7d 22   {0} value: {1}"
1fcd0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1fce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fcf0 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
1fd00 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
1fd10 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
1fd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd40 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
1fd50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1fd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd70 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
1fd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fda0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1fdb0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1fdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fdd0 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
1fde0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fdf0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1fe00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fe10 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1fe20 66 69 67 75 72 61 74 69 6f 6e 2e 69 6e 73 74 61  figuration.insta
1fe30 6c 6c 46 6c 61 67 73 20 3d 20 28 49 6e 73 74 61  llFlags = (Insta
1fe40 6c 6c 46 6c 61 67 73 29 76 61 6c 75 65 3b 0d 0a  llFlags)value;..
1fe50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe60 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1fe70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe80 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
1fe90 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
1fea0 22 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 22 29 29  "linqFileName"))
1feb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fec0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1fed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fee0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
1fef0 72 61 74 69 6f 6e 2e 6c 69 6e 71 46 69 6c 65 4e  ration.linqFileN
1ff00 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20  ame = text;..   
1ff10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ff30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff40 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1ff50 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6c 6f  tion(newArg, "lo
1ff60 67 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20  gFileName"))..  
1ff70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff80 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1ff90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ffa0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
1ffb0 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d  on.logFileName =
1ffc0 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20   text;..        
1ffd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ffe0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1fff0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
20000 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
20010 6e 65 77 41 72 67 2c 20 22 6e 6f 43 6f 6d 70 61  newArg, "noCompa
20020 63 74 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ct"))..         
20030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
20040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
20060 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
20070 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
20080 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
20090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
200a0 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
200b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
200c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
200d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
200e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200f0 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
20100 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
20110 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
20120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20130 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f         TracePrio
20140 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
20150 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
20160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20180 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
20190 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
201a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201c0 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
201d0 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
201e0 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
201f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20200 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
20210 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
20220 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
20230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20250 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
20260 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
20270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20280 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
20290 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
202a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202b0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
202c0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
202d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202e0 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
202f0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
20300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20310 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
20320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20330 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
20340 6f 43 6f 6d 70 61 63 74 20 3d 20 28 62 6f 6f 6c  oCompact = (bool
20350 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
20360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20370 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
20380 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
20390 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
203a0 28 6e 65 77 41 72 67 2c 20 22 6e 6f 43 6f 6e 73  (newArg, "noCons
203b0 6f 6c 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20  ole"))..        
203c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
203d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
203e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
203f0 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
20400 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
20410 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
20420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20430 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
20440 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
20450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20460 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
20470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20480 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
20490 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
204a0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
204b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
204c0 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
204d0 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
204e0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
204f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20510 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
20520 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
20530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20550 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
20560 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
20570 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
20580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20590 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
205a0 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
205b0 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
205c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
205d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205e0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
205f0 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
20600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20610 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
20620 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
20630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20640 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
20650 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
20660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20670 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
20680 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
20690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
206b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206c0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
206d0 6e 6f 43 6f 6e 73 6f 6c 65 20 3d 20 28 62 6f 6f  noConsole = (boo
206e0 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
206f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20700 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
20710 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
20720 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
20730 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 44 65 73  n(newArg, "noDes
20740 6b 74 6f 70 22 29 29 0d 0a 20 20 20 20 20 20 20  ktop"))..       
20750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20760 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20780 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
20790 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
207a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
207b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207c0 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
207d0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
207e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20810 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
20820 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
20830 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
20840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20850 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
20860 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
20870 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
20880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208a0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
208b0 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
208c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
208d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208e0 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
208f0 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
20900 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
20910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20920 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
20930 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
20940 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
20950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20970 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
20980 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
20990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209a0 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72           if (str
209b0 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
209c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
209e0 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
209f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a00 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
20a10 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
20a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a30 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
20a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a50 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
20a60 2e 6e 6f 44 65 73 6b 74 6f 70 20 3d 20 28 62 6f  .noDesktop = (bo
20a70 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
20a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a90 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
20aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
20ab0 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
20ac0 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4c 6f  on(newArg, "noLo
20ad0 67 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  g"))..          
20ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
20af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20b00 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
20b10 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
20b20 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
20b30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
20b50 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
20b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
20b80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ba0 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
20bb0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
20bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20be0 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
20bf0 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
20c00 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
20c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c30 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
20c40 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
20c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c70 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
20c80 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
20c90 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
20ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20cb0 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
20cc0 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
20cd0 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
20ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d00 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
20d10 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
20d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d30 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
20d40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
20d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d60 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
20d70 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
20d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d90 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
20da0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
20db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
20dc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
20dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20de0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
20df0 4c 6f 67 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75  Log = (bool)valu
20e00 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
20e10 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
20e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e30 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
20e40 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
20e50 72 67 2c 20 22 6e 6f 4e 65 74 46 78 32 30 22 29  rg, "noNetFx20")
20e60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
20e70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
20e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e90 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20            bool? 
20ea0 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
20eb0 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
20ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ed0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
20ee0 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
20ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
20f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
20f30 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
20f40 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
20f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f70 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
20f80 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
20f90 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
20fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
20fc0 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
20fd0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
20fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21000 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
21010 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
21020 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
21030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21040 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
21050 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
21060 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
21070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21090 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
210a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
210b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210c0 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
210d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210f0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
21100 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
21110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21120 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
21130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21140 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
21150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21160 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
21170 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74  figuration.noNet
21180 46 78 32 30 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  Fx20 = (bool)val
21190 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
211a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
211b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211c0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
211d0 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
211e0 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 33 35 22  Arg, "noNetFx35"
211f0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
21200 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
21210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21220 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
21230 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
21240 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
21250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21260 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
21270 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
21280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21290 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
212a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
212c0 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
212d0 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
212e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21300 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
21310 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
21320 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
21330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
21350 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
21360 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
21370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21390 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
213a0 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
213b0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
213c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213d0 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
213e0 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
213f0 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
21400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21420 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
21430 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21450 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
21460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21480 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
21490 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
214a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
214b0 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
214c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
214d0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
214e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
214f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
21500 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65  nfiguration.noNe
21510 74 46 78 33 35 20 3d 20 28 62 6f 6f 6c 29 76 61  tFx35 = (bool)va
21520 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
21530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
21540 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21550 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
21560 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
21570 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34 30  wArg, "noNetFx40
21580 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
21590 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
215a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
215b0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
215c0 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
215d0 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
215e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
215f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
21600 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
21610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21620 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
21630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21650 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
21660 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
21670 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21690 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
216a0 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
216b0 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
216c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
216e0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
216f0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
21700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21720 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
21730 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
21740 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
21750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21760 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
21770 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
21780 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
21790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217b0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
217c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
217d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217e0 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
217f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21810 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
21820 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
21830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21840 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
21850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
21870 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
21880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
21890 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
218a0 65 74 46 78 34 30 20 3d 20 28 62 6f 6f 6c 29 76  etFx40 = (bool)v
218b0 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
218c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
218d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
218e0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
218f0 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
21900 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34  ewArg, "noNetFx4
21910 35 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  5"))..          
21920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
21930 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21940 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
21950 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
21960 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
21970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
21990 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
219a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
219b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
219c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
219d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219e0 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
219f0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
21a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
21a30 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
21a40 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
21a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a70 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
21a80 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
21a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ab0 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
21ac0 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
21ad0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
21ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21af0 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
21b00 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
21b10 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
21b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b40 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
21b50 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
21b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b70 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
21b80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
21b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ba0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
21bb0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
21bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21bd0 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
21be0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
21bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
21c00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
21c30 4e 65 74 46 78 34 35 20 3d 20 28 62 6f 6f 6c 29  NetFx45 = (bool)
21c40 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
21c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c60 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
21c70 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
21c80 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
21c90 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78  newArg, "noNetFx
21ca0 34 35 31 22 29 29 0d 0a 20 20 20 20 20 20 20 20  451"))..        
21cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21cc0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
21ce0 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
21cf0 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
21d00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
21d30 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
21d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d50 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
21d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d70 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
21d80 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
21d90 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
21da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21db0 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
21dc0 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
21dd0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
21de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e00 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
21e10 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
21e20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e40 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
21e50 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
21e60 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
21e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e80 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
21e90 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
21ea0 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
21eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ed0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
21ee0 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
21ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f00 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
21f10 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
21f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f30 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
21f40 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
21f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f60 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
21f70 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
21f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f90 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
21fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21fb0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
21fc0 6e 6f 4e 65 74 46 78 34 35 31 20 3d 20 28 62 6f  noNetFx451 = (bo
21fd0 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
21fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ff0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
22000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
22010 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
22020 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65  on(newArg, "noNe
22030 74 46 78 34 35 32 22 29 29 0d 0a 20 20 20 20 20  tFx452"))..     
22040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22050 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
22060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22070 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
22080 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
22090 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
220a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220b0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
220c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
220d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
220f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22100 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
22110 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
22120 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
22130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22140 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
22150 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
22160 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
22170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22190 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
221a0 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
221b0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
221c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221d0 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
221e0 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
221f0 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
22200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
22220 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
22230 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
22240 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
22250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22260 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
22270 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
22280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22290 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
222a0 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
222b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
222c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
222d0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
222e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
222f0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
22300 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
22310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22320 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
22330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22340 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
22350 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 32 20 3d 20  on.noNetFx452 = 
22360 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
22370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22380 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
22390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
223a0 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
223b0 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e  ption(newArg, "n
223c0 6f 4e 65 74 46 78 34 36 22 29 29 0d 0a 20 20 20  oNetFx46"))..   
223d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
223e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
223f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22400 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
22410 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
22420 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
22430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22440 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
22450 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
22460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22470 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
22480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22490 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
224a0 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
224b0 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
224c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224d0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
224e0 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
224f0 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
22500 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
22510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22520 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
22530 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
22540 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
22550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22560 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
22570 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
22580 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
22590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225b0 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
225c0 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
225d0 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
225e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225f0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
22600 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
22610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22620 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
22630 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
22640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
22660 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
22670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
22690 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
226a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
226b0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
226c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
226d0 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
226e0 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 36 20 3d  tion.noNetFx46 =
226f0 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
22700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22710 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
22720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22730 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
22740 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
22750 6e 6f 4e 65 74 46 78 34 36 31 22 29 29 0d 0a 20  noNetFx461")).. 
22760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22770 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22790 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
227a0 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
227b0 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
227c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227d0 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
227e0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
227f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22800 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
22810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22820 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
22830 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
22840 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
22850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
22870 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
22880 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
22890 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
228a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228b0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
228c0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
228d0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
228e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228f0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
22900 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
22910 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
22920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22940 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
22950 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
22960 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
22970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22980 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
22990 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
229a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
229c0 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
229d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229f0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
22a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
22a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a40 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
22a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a60 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
22a70 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 36  ration.noNetFx46
22a80 31 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  1 = (bool)value;
22a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22aa0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
22ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ac0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
22ad0 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
22ae0 2c 20 22 6e 6f 4e 65 74 46 78 34 36 32 22 29 29  , "noNetFx462"))
22af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22b00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
22b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
22b30 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
22b40 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
22b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
22b70 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
22b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
22ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
22bc0 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
22bd0 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
22be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c00 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
22c10 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
22c20 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
22c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c40 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
22c50 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
22c60 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
22c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
22c90 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
22ca0 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
22cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22cd0 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
22ce0 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
22cf0 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
22d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
22d20 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
22d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d50 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
22d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d80 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
22d90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22db0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
22dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22dd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
22de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22df0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
22e00 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46  iguration.noNetF
22e10 78 34 36 32 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  x462 = (bool)val
22e20 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
22e30 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
22e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e50 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
22e60 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
22e70 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34 37 22  Arg, "noNetFx47"
22e80 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
22e90 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
22ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22eb0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
22ec0 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
22ed0 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
22ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ef0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
22f00 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
22f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
22f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
22f50 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
22f60 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
22f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f90 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
22fa0 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
22fb0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
22fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
22fe0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
22ff0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
23000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23020 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
23030 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
23040 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
23050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23060 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
23070 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
23080 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
23090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230b0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
230c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
230d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230e0 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
230f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23110 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
23120 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
23130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23140 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
23150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23160 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
23170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
23190 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65  nfiguration.noNe
231a0 74 46 78 34 37 20 3d 20 28 62 6f 6f 6c 29 76 61  tFx47 = (bool)va
231b0 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
231c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
231d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
231e0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
231f0 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
23200 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34 37  wArg, "noNetFx47
23210 31 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  1"))..          
23220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
23230 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23240 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
23250 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
23260 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
23270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
23290 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
232a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
232b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
232c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
232d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
232e0 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
232f0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
23300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23320 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
23330 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
23340 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
23350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23370 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
23380 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
23390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233b0 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
233c0 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
233d0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
233e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233f0 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
23400 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
23410 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
23420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23440 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
23450 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
23460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23470 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
23480 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
23490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
234a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
234b0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
234c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
234d0 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
234e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
234f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
23500 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
23510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23520 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
23530 4e 65 74 46 78 34 37 31 20 3d 20 28 62 6f 6f 6c  NetFx471 = (bool
23540 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
23550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23560 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
23570 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
23580 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
23590 28 6e 65 77 41 72 67 2c 20 22 6e 6f 52 75 6e 74  (newArg, "noRunt
235a0 69 6d 65 56 65 72 73 69 6f 6e 22 29 29 0d 0a 20  imeVersion")).. 
235b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
235c0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
235d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
235e0 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
235f0 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
23600 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
23610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23620 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
23630 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
23640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23650 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
23660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23670 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
23680 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
23690 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
236a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
236b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
236c0 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
236d0 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
236e0 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
236f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23700 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
23710 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
23720 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
23730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23740 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
23750 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
23760 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
23770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23790 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
237a0 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
237b0 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
237c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237d0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
237e0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
237f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
23810 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
23820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23840 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
23850 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23870 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
23880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23890 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
238a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
238b0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
238c0 72 61 74 69 6f 6e 2e 6e 6f 52 75 6e 74 69 6d 65  ration.noRuntime
238d0 56 65 72 73 69 6f 6e 20 3d 20 28 62 6f 6f 6c 29  Version = (bool)
238e0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
238f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23900 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
23910 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
23920 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
23930 6e 65 77 41 72 67 2c 20 22 6e 6f 54 72 61 63 65  newArg, "noTrace
23940 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
23950 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
23960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23970 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
23980 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
23990 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
239a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
239b0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
239c0 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
239d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
239e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
239f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a10 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
23a20 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
23a30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a50 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
23a60 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
23a70 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
23a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
23aa0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
23ab0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
23ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ae0 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
23af0 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
23b00 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
23b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
23b30 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
23b40 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
23b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b70 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
23b80 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
23b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ba0 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
23bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23bd0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
23be0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
23bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c00 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
23c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
23c30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
23c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
23c50 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 54  onfiguration.noT
23c60 72 61 63 65 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  race = (bool)val
23c70 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
23c80 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
23c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ca0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
23cb0 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
23cc0 41 72 67 2c 20 22 6e 6f 56 73 32 30 30 35 22 29  Arg, "noVs2005")
23cd0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
23ce0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
23cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d00 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20            bool? 
23d10 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
23d20 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
23d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
23d50 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
23d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
23d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
23da0 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
23db0 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
23dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23de0 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
23df0 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
23e00 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
23e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
23e30 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
23e40 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
23e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e70 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
23e80 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
23e90 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
23ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23eb0 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
23ec0 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
23ed0 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
23ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f00 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
23f10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
23f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f30 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
23f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f60 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
23f70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
23f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f90 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
23fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23fb0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
23fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
23fe0 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32  figuration.noVs2
23ff0 30 30 35 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75  005 = (bool)valu
24000 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
24010 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
24020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24030 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
24040 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
24050 72 67 2c 20 22 6e 6f 56 73 32 30 30 38 22 29 29  rg, "noVs2008"))
24060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24070 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
24080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24090 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
240a0 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
240b0 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
240c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240d0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
240e0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
240f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24100 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
24110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24120 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
24130 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
24140 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
24150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24170 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
24180 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
24190 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
241a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
241b0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
241c0 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
241d0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
241e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
241f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
24200 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
24210 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
24220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24240 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
24250 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
24260 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
24270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
24290 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
242a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
242b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242c0 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
242d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242f0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
24300 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24320 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
24330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24340 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
24350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24360 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
24370 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30  iguration.noVs20
24380 30 38 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  08 = (bool)value
24390 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
243a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
243b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243c0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
243d0 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
243e0 67 2c 20 22 6e 6f 56 73 32 30 31 30 22 29 29 0d  g, "noVs2010")).
243f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24400 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
24410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24420 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
24430 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
24440 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
24450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24460 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
24470 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
24480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24490 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
244a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244b0 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
244c0 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
244d0 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
244e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24500 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
24510 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
24520 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
24530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24540 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
24550 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
24560 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
24570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
24590 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
245a0 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
245b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
245c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245d0 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
245e0 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
245f0 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
24600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
24620 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
24630 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24650 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
24660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24680 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
24690 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
246a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246b0 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
246c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
246e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246f0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
24700 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31  guration.noVs201
24710 30 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  0 = (bool)value;
24720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24730 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
24740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24750 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
24760 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
24770 2c 20 22 6e 6f 56 73 32 30 31 32 22 29 29 0d 0a  , "noVs2012"))..
24780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24790 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
247a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247b0 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
247c0 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
247d0 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
247e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247f0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
24800 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
24810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24820 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
24830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24840 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
24850 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
24860 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
24870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24890 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
248a0 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
248b0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
248c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
248d0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
248e0 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
248f0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
24900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24910 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e               "In
24920 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
24930 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
24940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24960 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
24970 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
24980 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
24990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
249b0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
249c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249e0 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
249f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a10 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
24a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a40 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
24a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a60 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
24a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a80 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
24a90 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 32  uration.noVs2012
24aa0 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
24ab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24ac0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
24ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ae0 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
24af0 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
24b00 20 22 6e 6f 56 73 32 30 31 33 22 29 29 0d 0a 20   "noVs2013")).. 
24b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b40 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
24b50 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
24b60 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
24b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b80 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
24b90 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
24ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24bb0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
24bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24bd0 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
24be0 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
24bf0 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
24c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
24c20 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
24c30 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
24c40 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
24c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c60 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
24c70 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
24c80 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
24c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ca0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
24cb0 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
24cc0 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
24cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24cf0 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
24d00 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
24d10 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
24d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d30 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
24d40 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
24d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
24d70 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
24d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24da0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
24db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24dd0 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
24de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24df0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
24e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e10 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
24e20 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 33 20  ration.noVs2013 
24e30 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
24e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e50 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
24e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e70 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
24e80 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
24e90 22 6e 6f 56 73 32 30 31 35 22 29 29 0d 0a 20 20  "noVs2015"))..  
24ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24eb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ed0 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65       bool? value
24ee0 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28   = ParseBoolean(
24ef0 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
24f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f10 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
24f20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
24f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f60 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
24f70 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
24f80 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
24f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
24fb0 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
24fc0 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
24fd0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
24fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ff0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
25000 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
25010 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
25020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25030 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
25040 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20  lid {0} boolean 
25050 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
25060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25080 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
25090 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
250a0 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
250b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250c0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
250d0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
250e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
25100 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
25110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
25130 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
25140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25160 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
25170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25180 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
25190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251a0 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
251b0 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 35 20 3d  ation.noVs2015 =
251c0 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
251d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251e0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
251f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25200 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
25210 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
25220 6e 6f 56 73 32 30 31 37 22 29 29 0d 0a 20 20 20  noVs2017"))..   
25230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25240 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
25250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25260 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
25270 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
25280 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
25290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252a0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
252b0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
252c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
252e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252f0 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
25300 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
25310 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
25320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25330 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
25340 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
25350 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
25360 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
25370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25380 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
25390 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
253a0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
253b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253c0 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
253d0 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
253e0 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
253f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25410 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
25420 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
25430 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
25440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25450 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
25460 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
25470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25480 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
25490 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
254a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
254c0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
254d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
254f0 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
25500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25510 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
25520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25530 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
25540 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 37 20 3d 20  tion.noVs2017 = 
25550 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
25560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25570 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
25580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25590 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
255a0 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 70  ption(newArg, "p
255b0 65 72 55 73 65 72 22 29 29 0d 0a 20 20 20 20 20  erUser"))..     
255c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
255e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255f0 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
25600 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
25610 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
25620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25630 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
25640 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
25650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25660 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25680 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
25690 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
256a0 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
256b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256c0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
256d0 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
256e0 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
256f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25710 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
25720 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
25730 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
25740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25750 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
25760 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
25770 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
25780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
257a0 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
257b0 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
257c0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
257d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257e0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
257f0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
25800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25810 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
25820 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
25830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25840 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25850 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
25860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25870 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
25880 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
25890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
258a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
258b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
258c0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
258d0 6f 6e 2e 70 65 72 55 73 65 72 20 3d 20 28 62 6f  on.perUser = (bo
258e0 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
258f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25900 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
25910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
25920 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
25930 6f 6e 28 6e 65 77 41 72 67 2c 20 22 70 72 6f 76  on(newArg, "prov
25940 69 64 65 72 46 6c 61 67 73 22 29 29 0d 0a 20 20  iderFlags"))..  
25950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25960 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
25970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25980 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
25990 65 20 3d 20 50 61 72 73 65 45 6e 75 6d 28 0d 0a  e = ParseEnum(..
259a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259c0 74 79 70 65 6f 66 28 50 72 6f 76 69 64 65 72 46  typeof(ProviderF
259d0 6c 61 67 73 29 2c 20 74 65 78 74 2c 20 74 72 75  lags), text, tru
259e0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
259f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a00 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
25a10 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
25a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a50 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
25a60 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
25a70 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
25a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a90 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
25aa0 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
25ab0 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
25ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ae0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
25af0 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
25b00 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
25b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
25b30 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31 7d 22   {0} value: {1}"
25b40 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
25b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b60 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
25b70 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
25b80 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
25b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25bb0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
25bc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
25bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25be0 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
25bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c10 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
25c20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c40 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
25c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
25c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25c80 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
25c90 66 69 67 75 72 61 74 69 6f 6e 2e 70 72 6f 76 69  figuration.provi
25ca0 64 65 72 46 6c 61 67 73 20 3d 20 28 50 72 6f 76  derFlags = (Prov
25cb0 69 64 65 72 46 6c 61 67 73 29 76 61 6c 75 65 3b  iderFlags)value;
25cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25cd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
25ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25cf0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
25d00 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
25d10 2c 20 22 72 65 67 69 73 74 72 79 4c 6f 67 46 69  , "registryLogFi
25d20 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20 20 20  leName"))..     
25d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d60 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
25d70 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e  registryLogFileN
25d80 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20  ame = text;..   
25d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25da0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
25db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25dc0 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
25dd0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 72 65  tion(newArg, "re
25de0 67 69 73 74 72 79 56 65 72 73 69 6f 6e 22 29 29  gistryVersion"))
25df0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25e00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
25e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
25e30 72 61 74 69 6f 6e 2e 72 65 67 69 73 74 72 79 56  ration.registryV
25e40 65 72 73 69 6f 6e 20 3d 20 74 65 78 74 3b 0d 0a  ersion = text;..
25e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e60 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
25e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e80 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
25e90 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
25ea0 22 73 74 72 69 63 74 22 29 29 0d 0a 20 20 20 20  "strict"))..    
25eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ec0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
25ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ee0 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
25ef0 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
25f00 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
25f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
25f30 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
25f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
25f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f70 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
25f80 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
25f90 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
25fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25fb0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
25fc0 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
25fd0 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
25fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26000 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
26010 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
26020 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
26030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26040 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
26050 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
26060 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
26070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26090 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
260a0 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
260b0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
260c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
260d0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
260e0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
260f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26100 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26110 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
26120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26130 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
26140 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
26150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
26170 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
26180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26190 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
261a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
261b0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
261c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
261d0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41        // NOTE: A
261e0 6c 6c 6f 77 20 74 68 65 20 63 6f 6d 6d 61 6e 64  llow the command
261f0 20 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 73 20   line arguments 
26200 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  to..            
26210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26220 2f 2f 20 20 20 20 20 20 20 6f 76 65 72 72 69 64  //       overrid
26230 65 20 74 68 65 20 22 73 74 72 69 63 74 6e 65 73  e the "strictnes
26240 73 22 20 73 65 74 74 69 6e 67 0d 0a 20 20 20 20  s" setting..    
26250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26260 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
26270 20 70 72 6f 76 69 64 65 64 20 62 79 20 6f 75 72   provided by our
26280 20 63 61 6c 6c 65 72 2e 0d 0a 20 20 20 20 20 20   caller...      
26290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
262b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262c0 20 20 20 20 20 20 73 74 72 69 63 74 20 3d 20 28        strict = (
262d0 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
262e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
26300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26310 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
26320 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 74 68  tion(newArg, "th
26330 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 22 29 29 0d  rowOnMissing")).
26340 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26350 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
26360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26370 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
26380 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
26390 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
263a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
263b0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
263c0 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
263d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
263e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
263f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26400 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
26410 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
26420 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
26430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26450 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
26460 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
26470 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
26480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26490 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
264a0 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
264b0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
264c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
264d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
264e0 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
264f0 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
26500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26520 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
26530 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
26540 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
26550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
26570 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
26580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265a0 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
265b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265d0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
265e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
265f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26600 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
26610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26620 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
26630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26640 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
26650 67 75 72 61 74 69 6f 6e 2e 74 68 72 6f 77 4f 6e  guration.throwOn
26660 4d 69 73 73 69 6e 67 20 3d 20 28 62 6f 6f 6c 29  Missing = (bool)
26670 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
26680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26690 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
266a0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
266b0 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
266c0 6e 65 77 41 72 67 2c 20 22 74 72 61 63 65 46 6f  newArg, "traceFo
266d0 72 6d 61 74 22 29 29 0d 0a 20 20 20 20 20 20 20  rmat"))..       
266e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26710 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 74 72  configuration.tr
26720 61 63 65 46 6f 72 6d 61 74 20 3d 20 74 65 78 74  aceFormat = text
26730 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
26740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
26750 72 61 63 65 4f 70 73 2e 54 72 61 63 65 46 6f 72  raceOps.TraceFor
26760 6d 61 74 20 3d 20 63 6f 6e 66 69 67 75 72 61 74  mat = configurat
26770 69 6f 6e 2e 74 72 61 63 65 46 6f 72 6d 61 74 3b  ion.traceFormat;
26780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26790 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
267a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
267b0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
267c0 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
267d0 2c 20 22 74 72 61 63 65 50 72 69 6f 72 69 74 79  , "tracePriority
267e0 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
267f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
26800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26810 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
26820 63 74 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  ct value = Parse
26830 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 20  Enum(..         
26840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26850 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 54 72         typeof(Tr
26860 61 63 65 50 72 69 6f 72 69 74 79 29 2c 20 74 65  acePriority), te
26870 78 74 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20  xt, true);....  
26880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26890 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
268a0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
268b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
268c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
268d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
268e0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
268f0 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
26900 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
26910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26930 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
26940 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
26950 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
26960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26970 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
26980 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
26990 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
269a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
269c0 49 6e 76 61 6c 69 64 20 7b 30 7d 20 76 61 6c 75  Invalid {0} valu
269d0 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
269e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
26a00 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
26a10 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
26a20 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
26a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a40 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
26a50 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
26a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a70 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
26a80 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
26a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26aa0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
26ab0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
26ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ad0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
26ae0 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
26af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b00 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
26b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
26b30 6e 2e 74 72 61 63 65 50 72 69 6f 72 69 74 79 20  n.tracePriority 
26b40 3d 20 28 54 72 61 63 65 50 72 69 6f 72 69 74 79  = (TracePriority
26b50 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
26b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b70 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 54 72       TraceOps.Tr
26b80 61 63 65 50 72 69 6f 72 69 74 79 20 3d 20 63 6f  acePriority = co
26b90 6e 66 69 67 75 72 61 74 69 6f 6e 2e 74 72 61 63  nfiguration.trac
26ba0 65 50 72 69 6f 72 69 74 79 3b 0d 0a 20 20 20 20  ePriority;..    
26bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bc0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
26bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
26be0 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
26bf0 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 76 65 72  ion(newArg, "ver
26c00 62 6f 73 65 22 29 29 0d 0a 20 20 20 20 20 20 20  bose"))..       
26c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c40 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
26c50 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
26c60 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
26c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c80 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
26c90 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
26ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26cb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
26cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26cd0 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
26ce0 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
26cf0 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
26d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d10 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
26d20 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
26d30 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
26d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d60 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
26d70 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
26d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26da0 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
26db0 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
26dc0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
26dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26de0 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
26df0 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
26e00 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
26e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e30 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
26e40 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
26e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e60 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72           if (str
26e70 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
26e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
26ea0 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
26eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ec0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
26ed0 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
26ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ef0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
26f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f10 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
26f20 2e 76 65 72 62 6f 73 65 20 3d 20 28 62 6f 6f 6c  .verbose = (bool
26f30 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
26f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
26f60 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
26f70 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
26f80 28 6e 65 77 41 72 67 2c 20 22 76 73 56 65 72 73  (newArg, "vsVers
26f90 69 6f 6e 53 75 66 66 69 78 22 29 29 0d 0a 20 20  ionSuffix"))..  
26fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26fb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
26fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26fd0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
26fe0 6f 6e 2e 76 73 56 65 72 73 69 6f 6e 53 75 66 66  on.vsVersionSuff
26ff0 69 78 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20  ix = text;..    
27000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27010 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
27020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
27030 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
27040 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 77 68 61  ion(newArg, "wha
27050 74 49 66 22 29 29 0d 0a 20 20 20 20 20 20 20 20  tIf"))..        
27060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27070 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
27090 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
270a0 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
270b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
270c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270d0 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
270e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
270f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27100 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
27110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27120 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
27130 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
27140 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
27150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27160 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
27170 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
27180 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
27190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271b0 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
271c0 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
271d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
271e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271f0 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
27200 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
27210 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
27220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27230 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
27240 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
27250 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
27260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27280 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
27290 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
272a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272b0 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
272c0 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
272d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
272f0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
27300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27310 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
27320 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
27330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27340 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
27350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27360 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
27370 77 68 61 74 49 66 20 3d 20 28 62 6f 6f 6c 29 76  whatIf = (bool)v
27380 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
27390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
273a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
273b0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
273c0 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
273d0 65 77 41 72 67 2c 20 22 77 6f 77 36 34 22 29 29  ewArg, "wow64"))
273e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
273f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
27400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27410 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
27420 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
27430 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
27440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27450 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
27460 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
27470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27480 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
27490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274a0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
274b0 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
274c0 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
274d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274f0 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
27500 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
27510 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
27520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27530 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
27540 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
27550 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
27560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
27580 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
27590 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
275a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
275b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
275c0 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
275d0 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
275e0 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
275f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
27610 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
27620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27640 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
27650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27670 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
27680 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
276a0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
276b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
276c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
276d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
276e0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
276f0 69 67 75 72 61 74 69 6f 6e 2e 77 6f 77 36 34 20  iguration.wow64 
27700 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
27710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27720 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
27730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27740 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
27750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27760 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27780 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
27790 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
277a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
277b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
277c0 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
277d0 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
277e0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
277f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27800 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
27810 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
27820 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
27830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27840 20 20 20 20 20 20 22 55 6e 73 75 70 70 6f 72 74        "Unsupport
27850 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20  ed command line 
27860 6f 70 74 69 6f 6e 3a 20 7b 30 7d 22 2c 0d 0a 20  option: {0}",.. 
27870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
27890 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 29 2c  orDisplay(arg)),
278a0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
278b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
278c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278d0 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
278e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
27900 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
27910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27920 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
27930 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
27940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27950 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
27960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27970 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
27980 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65       catch (Exce
27990 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20  ption e)..      
279a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
279b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
279c0 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
279d0 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
279e0 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a  ority.Highest,..
279f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a00 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
27a10 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
27a20 62 61 63 6b 2c 20 65 2c 20 74 72 61 63 65 43 61  back, e, traceCa
27a30 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
27a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a50 65 72 72 6f 72 20 3d 20 22 46 61 69 6c 65 64 20  error = "Failed 
27a60 74 6f 20 6d 6f 64 69 66 79 20 63 6f 6e 66 69 67  to modify config
27a70 75 72 61 74 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20  uration.";..    
27a80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
27a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27aa0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
27ab0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
27ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
27ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27b10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27b20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68  [MethodImpl(Meth
27b30 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f  odImplOptions.No
27b40 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20  Inlining)]..    
27b50 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
27b60 74 61 74 69 63 20 62 6f 6f 6c 20 50 72 6f 63 65  tatic bool Proce
27b70 73 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ss(..           
27b80 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61 72       string[] ar
27b90 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gs,..           
27ba0 20 20 20 20 20 43 6f 6e 66 69 67 75 72 61 74 69       Configurati
27bb0 6f 6e 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  on configuration
27bc0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
27bd0 20 20 20 62 6f 6f 6c 20 73 74 72 69 63 74 2c 0d     bool strict,.
27be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27bf0 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
27c00 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
27c10 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
27c20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
27c30 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
27c40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
27c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c60 20 69 66 20 28 63 6f 6e 66 69 67 75 72 61 74 69   if (configurati
27c70 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on == null)..   
27c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27ca0 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
27cb0 72 20 3d 20 22 49 6e 76 61 6c 69 64 20 63 6f 6e  r = "Invalid con
27cc0 66 69 67 75 72 61 74 69 6f 6e 2e 22 3b 0d 0a 20  figuration.";.. 
27cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ce0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
27cf0 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
27d00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
27d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
27d30 6d 62 6c 79 20 3d 20 63 6f 6e 66 69 67 75 72 61  mbly = configura
27d40 74 69 6f 6e 2e 61 73 73 65 6d 62 6c 79 3b 0d 0a  tion.assembly;..
27d50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27d60 20 20 20 20 20 20 69 66 20 28 61 73 73 65 6d 62        if (assemb
27d70 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ly == null)..   
27d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27da0 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
27db0 72 20 3d 20 22 49 6e 76 61 6c 69 64 20 61 73 73  r = "Invalid ass
27dc0 65 6d 62 6c 79 2e 22 3b 0d 0a 20 20 20 20 20 20  embly.";..      
27dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27de0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
27df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27e00 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
27e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
27e20 20 28 21 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e   (!configuration
27e30 2e 6e 6f 54 72 61 63 65 29 0d 0a 20 20 20 20 20  .noTrace)..     
27e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
27e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27e60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 63            if (!c
27e70 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4c  onfiguration.noL
27e80 6f 67 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  og &&..         
27e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ea0 20 20 20 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c     String.IsNull
27eb0 4f 72 45 6d 70 74 79 28 63 6f 6e 66 69 67 75 72  OrEmpty(configur
27ec0 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61 6d  ation.logFileNam
27ed0 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
27ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
27ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
27f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
27f30 4f 54 45 3a 20 55 73 65 20 74 68 65 20 64 65 66  OTE: Use the def
27f40 61 75 6c 74 20 6c 6f 67 20 66 69 6c 65 20 6e 61  ault log file na
27f50 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me...           
27f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f70 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
27f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f90 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c   configuration.l
27fa0 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20 47 65 74  ogFileName = Get
27fb0 4c 6f 67 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20  LogFileName(..  
27fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 74                "t
27fe0 72 61 63 65 22 29 3b 0d 0a 20 20 20 20 20 20 20  race");..       
27ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28000 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
28010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28050 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
28060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28070 20 69 66 20 28 21 63 6f 6e 66 69 67 75 72 61 74   if (!configurat
28080 69 6f 6e 2e 6e 6f 43 6f 6e 73 6f 6c 65 29 0d 0a  ion.noConsole)..
28090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
280b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280c0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
280d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280e0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
280f0 49 6e 20 76 65 72 62 6f 73 65 20 6d 6f 64 65 2c  In verbose mode,
28100 20 64 65 62 75 67 20 6f 75 74 70 75 74 20 28 74   debug output (t
28110 68 61 74 20 6d 65 65 74 73 0d 0a 20 20 20 20 20  hat meets..     
28120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28130 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
28140 74 68 65 20 63 6f 6e 66 69 67 75 72 65 64 20 70  the configured p
28150 72 69 6f 72 69 74 79 20 63 72 69 74 65 72 69 61  riority criteria
28160 29 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20  ) will be..     
28170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28180 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
28190 64 69 73 70 6c 61 79 65 64 20 74 6f 20 74 68 65  displayed to the
281a0 20 63 6f 6e 73 6f 6c 65 3b 20 6f 74 68 65 72 77   console; otherw
281b0 69 73 65 2c 20 74 72 61 63 65 0d 0a 20 20 20 20  ise, trace..    
281c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
281d0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
281e0 20 6f 75 74 70 75 74 20 28 74 68 61 74 20 6d 65   output (that me
281f0 65 74 73 20 74 68 65 20 63 6f 6e 66 69 67 75 72  ets the configur
28200 65 64 20 70 72 69 6f 72 69 74 79 0d 0a 20 20 20  ed priority..   
28210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28220 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
28230 20 20 63 72 69 74 65 72 69 61 29 20 77 69 6c 6c    criteria) will
28240 20 62 65 20 64 69 73 70 6c 61 79 65 64 20 74 6f   be displayed to
28250 20 74 68 65 20 63 6f 6e 73 6f 6c 65 2e 0d 0a 20   the console... 
28260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28270 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
28280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28290 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
282a0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 62  onfiguration.deb
282b0 75 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ug)..           
282c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
282d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
282e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
282f0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
28300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28310 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
28320 20 41 64 64 20 74 68 65 20 63 6f 6e 73 6f 6c 65   Add the console
28330 20 74 72 61 63 65 20 6c 69 73 74 65 6e 65 72 20   trace listener 
28340 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  to the..        
28350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28360 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
28370 20 6c 69 73 74 20 6f 66 20 74 72 61 63 65 20 6c   list of trace l
28380 69 73 74 65 6e 65 72 73 20 6d 61 69 6e 74 61 69  isteners maintai
28390 6e 65 64 20 62 79 0d 0a 20 20 20 20 20 20 20 20  ned by..        
283a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
283b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
283c0 20 74 68 65 20 54 72 61 63 65 4f 70 73 20 63 6c   the TraceOps cl
283d0 61 73 73 20 28 69 2e 65 2e 20 6f 6e 6c 79 20 6d  ass (i.e. only m
283e0 65 73 73 61 67 65 73 0d 0a 20 20 20 20 20 20 20  essages..       
283f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28400 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
28410 20 20 74 68 61 74 20 6d 65 65 74 20 74 68 65 20    that meet the 
28420 64 65 62 75 67 20 70 72 69 6f 72 69 74 79 20 77  debug priority w
28430 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20 20 20 20  ill be..        
28440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28450 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
28460 20 73 65 65 6e 20 6f 6e 20 74 68 65 20 63 6f 6e   seen on the con
28470 73 6f 6c 65 29 2e 0d 0a 20 20 20 20 20 20 20 20  sole)...        
28480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28490 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
284a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284b0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
284c0 65 4f 70 73 2e 53 65 74 75 70 44 65 62 75 67 4c  eOps.SetupDebugL
284d0 69 73 74 65 6e 65 72 73 28 29 3b 0d 0a 20 20 20  isteners();..   
284e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
28500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28510 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
28520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28530 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
28540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28550 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28560 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28580 20 2f 2f 20 4e 4f 54 45 3a 20 41 64 64 20 74 68   // NOTE: Add th
28590 65 20 63 6f 6e 73 6f 6c 65 20 74 72 61 63 65 20  e console trace 
285a0 6c 69 73 74 65 6e 65 72 20 74 6f 20 74 68 65 0d  listener to the.
285b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
285c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
285d0 20 2f 2f 20 20 20 20 20 20 20 6c 69 73 74 20 6f   //       list o
285e0 66 20 62 75 69 6c 74 2d 69 6e 20 74 72 61 63 65  f built-in trace
285f0 20 6c 69 73 74 65 6e 65 72 73 20 28 69 2e 65 2e   listeners (i.e.
28600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28620 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e 6c 79 20    //       only 
28630 6d 65 73 73 61 67 65 73 20 74 68 61 74 20 6d 65  messages that me
28640 65 74 20 74 68 65 20 74 72 61 63 65 0d 0a 20 20  et the trace..  
28650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28670 20 20 20 20 20 20 20 70 72 69 6f 72 69 74 79 20         priority 
28680 77 69 6c 6c 20 62 65 20 73 65 65 6e 20 6f 6e 20  will be seen on 
28690 74 68 65 20 63 6f 6e 73 6f 6c 65 29 2e 0d 0a 20  the console)... 
286a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
286b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
286c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
286d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
286e0 20 20 20 54 72 61 63 65 2e 4c 69 73 74 65 6e 65     Trace.Listene
286f0 72 73 2e 41 64 64 28 6e 65 77 20 43 6f 6e 73 6f  rs.Add(new Conso
28700 6c 65 54 72 61 63 65 4c 69 73 74 65 6e 65 72 28  leTraceListener(
28710 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ));..           
28720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28730 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
28740 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
28750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28760 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
28770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
287a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
287b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
287c0 21 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e  !configuration.n
287d0 6f 4c 6f 67 20 26 26 0d 0a 20 20 20 20 20 20 20  oLog &&..       
287e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
287f0 20 20 20 20 20 21 53 74 72 69 6e 67 2e 49 73 4e       !String.IsN
28800 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 6e 66 69  ullOrEmpty(confi
28810 67 75 72 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65  guration.logFile
28820 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
28830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28840 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
28850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
28860 72 61 63 65 2e 4c 69 73 74 65 6e 65 72 73 2e 41  race.Listeners.A
28870 64 64 28 6e 65 77 20 54 65 78 74 57 72 69 74 65  dd(new TextWrite
28880 72 54 72 61 63 65 4c 69 73 74 65 6e 65 72 28 0d  rTraceListener(.
28890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
288a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
288b0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c   configuration.l
288c0 6f 67 46 69 6c 65 4e 61 6d 65 29 29 3b 0d 0a 0d  ogFileName));...
288d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
288e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
288f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28900 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
28910 4e 4f 54 45 3a 20 54 65 63 68 6e 69 63 61 6c 6c  NOTE: Technicall
28920 79 2c 20 77 65 20 63 72 65 61 74 65 64 20 74 68  y, we created th
28930 65 20 6c 6f 67 20 66 69 6c 65 2e 0d 0a 20 20 20  e log file...   
28940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28950 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
28960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28970 20 20 20 20 20 20 20 20 20 66 69 6c 65 73 43 72           filesCr
28980 65 61 74 65 64 2b 2b 3b 0d 0a 20 20 20 20 20 20  eated++;..      
28990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
289a0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
289b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
289c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
289d0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
289e0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
289f0 45 3a 20 44 75 6d 70 20 74 68 65 20 63 6f 6e 66  E: Dump the conf
28a00 69 67 75 72 61 74 69 6f 6e 20 6e 6f 77 20 69 6e  iguration now in
28a10 20 63 61 73 65 20 77 65 20 6e 65 65 64 20 74 6f   case we need to
28a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28a30 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74        //       t
28a40 72 6f 75 62 6c 65 73 68 6f 6f 74 20 61 6e 79 20  roubleshoot any 
28a50 69 73 73 75 65 73 2e 0d 0a 20 20 20 20 20 20 20  issues...       
28a60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28a80 20 20 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75       if (configu
28a90 72 61 74 69 6f 6e 2e 64 65 62 75 67 50 72 69 6f  ration.debugPrio
28aa0 72 69 74 79 20 3c 3d 20 54 72 61 63 65 50 72 69  rity <= TracePri
28ab0 6f 72 69 74 79 2e 4d 65 64 69 75 6d 29 0d 0a 20  ority.Medium).. 
28ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ad0 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
28ae0 74 69 6f 6e 2e 44 75 6d 70 28 64 65 62 75 67 43  tion.Dump(debugC
28af0 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20  allback);....   
28b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b10 20 69 66 20 28 63 6f 6e 66 69 67 75 72 61 74 69   if (configurati
28b20 6f 6e 2e 74 72 61 63 65 50 72 69 6f 72 69 74 79  on.tracePriority
28b30 20 3c 3d 20 54 72 61 63 65 50 72 69 6f 72 69 74   <= TracePriorit
28b40 79 2e 4d 65 64 69 75 6d 29 0d 0a 20 20 20 20 20  y.Medium)..     
28b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b60 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
28b70 2e 44 75 6d 70 28 74 72 61 63 65 43 61 6c 6c 62  .Dump(traceCallb
28b80 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ack);....       
28b90 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28bb0 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 68       // NOTE: Sh
28bc0 6f 77 20 77 68 65 72 65 20 77 65 20 61 72 65 20  ow where we are 
28bd0 72 75 6e 6e 69 6e 67 20 66 72 6f 6d 20 61 6e 64  running from and
28be0 20 68 6f 77 20 77 65 20 77 65 72 65 0d 0a 20 20   how we were..  
28bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c00 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 76 6f 6b    //       invok
28c10 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed...           
28c20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
28c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c40 20 73 74 72 69 6e 67 20 6c 6f 63 61 74 69 6f 6e   string location
28c50 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c 6f 63 61   = assembly.Loca
28c60 74 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tion;....       
28c70 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
28c80 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
28c90 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
28ca0 79 2e 4d 65 64 69 75 6d 4c 6f 77 2c 0d 0a 20 20  y.MediumLow,..  
28cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28cc0 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
28cd0 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
28ce0 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
28cf0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
28d00 20 20 20 20 20 20 20 20 20 20 20 20 22 52 75 6e              "Run
28d10 6e 69 6e 67 20 65 78 65 63 75 74 61 62 6c 65 20  ning executable 
28d20 69 73 3a 20 7b 30 7d 22 2c 20 46 6f 72 44 69 73  is: {0}", ForDis
28d30 70 6c 61 79 28 6c 6f 63 61 74 69 6f 6e 29 29 2c  play(location)),
28d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28d50 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
28d60 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
28d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28d80 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
28d90 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
28da0 6f 72 69 74 79 2e 4d 65 64 69 75 6d 4c 6f 77 2c  ority.MediumLow,
28db0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28dc0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
28dd0 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
28de0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
28df0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
28e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e10 22 4f 72 69 67 69 6e 61 6c 20 63 6f 6d 6d 61 6e  "Original comman
28e20 64 20 6c 69 6e 65 20 69 73 3a 20 7b 30 7d 22 2c  d line is: {0}",
28e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28e40 20 20 20 20 20 20 20 20 20 20 45 6e 76 69 72 6f            Enviro
28e50 6e 6d 65 6e 74 2e 43 6f 6d 6d 61 6e 64 4c 69 6e  nment.CommandLin
28e60 65 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72  e), traceCategor
28e70 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
28e80 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
28e90 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
28ea0 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
28eb0 4d 65 64 69 75 6d 4c 6f 77 2c 0d 0a 20 20 20 20  MediumLow,..    
28ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ed0 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
28ee0 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
28ef0 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
28f00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28f10 20 20 20 20 20 20 20 20 20 20 22 52 75 6e 6e 69            "Runni
28f20 6e 67 20 70 72 6f 63 65 73 73 20 69 73 20 7b 30  ng process is {0
28f30 7d 2e 22 2c 20 49 73 36 34 42 69 74 50 72 6f 63  }.", Is64BitProc
28f40 65 73 73 28 29 20 3f 0d 0a 20 20 20 20 20 20 20  ess() ?..       
28f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f60 20 20 20 20 20 22 36 34 2d 62 69 74 22 20 3a 20       "64-bit" : 
28f70 22 33 32 2d 62 69 74 22 29 2c 20 74 72 61 63 65  "32-bit"), trace
28f80 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
28f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28fa0 20 20 69 66 20 28 21 63 6f 6e 66 69 67 75 72 61    if (!configura
28fb0 74 69 6f 6e 2e 77 68 61 74 49 66 29 0d 0a 20 20  tion.whatIf)..  
28fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28fd0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
28fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
28ff0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29000 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
29010 3a 20 49 66 20 74 68 65 20 64 65 62 75 67 67 65  : If the debugge
29020 72 20 69 73 20 61 74 74 61 63 68 65 64 20 61 6e  r is attached an
29030 64 20 22 77 68 61 74 2d 69 66 22 0d 0a 20 20 20  d "what-if"..   
29040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29050 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 6f       //       mo
29060 64 65 20 69 73 20 5b 6e 6f 77 5d 20 64 69 73 61  de is [now] disa
29070 62 6c 65 64 2c 20 69 73 73 75 65 20 61 20 77 61  bled, issue a wa
29080 72 6e 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  rning...        
29090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
290a0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
290b0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
290c0 44 65 62 75 67 67 65 72 2e 49 73 41 74 74 61 63  Debugger.IsAttac
290d0 68 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  hed)..          
290e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
290f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29100 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
29110 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
29120 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
29130 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20  y.MediumHigh,.. 
29140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
29160 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72  ebugCallback, tr
29170 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  aceCallback,..  
29180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
291a0 6f 72 63 65 64 20 74 6f 20 64 69 73 61 62 6c 65  orced to disable
291b0 20 5c 22 77 68 61 74 2d 69 66 5c 22 20 6d 6f 64   \"what-if\" mod
291c0 65 20 77 69 74 68 20 22 20 2b 0d 0a 20 20 20 20  e with " +..    
291d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
291e0 20 20 20 20 20 20 20 20 20 20 20 20 22 64 65 62              "deb
291f0 75 67 67 65 72 20 61 74 74 61 63 68 65 64 2e 22  ugger attached."
29200 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
29210 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29220 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
29230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29240 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
29250 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
29260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29270 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
29280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
29290 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
292a0 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
292b0 74 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d 0a  ty.MediumHigh,..
292c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292d0 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
292e0 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
292f0 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
29300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29310 20 20 20 20 20 20 20 22 4e 6f 20 61 63 74 75 61         "No actua
29320 6c 20 63 68 61 6e 67 65 73 20 77 69 6c 6c 20 62  l changes will b
29330 65 20 6d 61 64 65 20 74 6f 20 74 68 69 73 20 22  e made to this "
29340 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
29350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29360 22 73 79 73 74 65 6d 20 62 65 63 61 75 73 65 20  "system because 
29370 5c 22 77 68 61 74 2d 69 66 5c 22 20 6d 6f 64 65  \"what-if\" mode
29380 20 69 73 20 65 6e 61 62 6c 65 64 2e 22 2c 0d 0a   is enabled.",..
29390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
293a0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
293b0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
293c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
293d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
293e0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
293f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29400 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68    // NOTE: If th
29410 65 20 72 65 67 69 73 74 72 79 20 6c 6f 67 20 66  e registry log f
29420 69 6c 65 20 6e 61 6d 65 20 68 61 73 20 62 65 65  ile name has bee
29430 6e 20 73 65 74 2c 20 69 74 73 0d 0a 20 20 20 20  n set, its..    
29440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29450 2f 2f 20 20 20 20 20 20 20 76 61 6c 75 65 20 77  //       value w
29460 69 6c 6c 20 62 65 20 75 73 65 64 20 76 65 72 62  ill be used verb
29470 61 74 69 6d 20 61 73 20 74 68 65 20 70 6c 61 63  atim as the plac
29480 65 20 77 68 65 72 65 0d 0a 20 20 20 20 20 20 20  e where..       
29490 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
294a0 20 20 20 20 20 20 61 6c 6c 20 72 65 67 69 73 74        all regist
294b0 72 79 20 77 72 69 74 65 20 6f 70 65 72 61 74 69  ry write operati
294c0 6f 6e 73 20 77 69 6c 6c 20 28 65 76 65 6e 74 75  ons will (eventu
294d0 61 6c 6c 79 29 0d 0a 20 20 20 20 20 20 20 20 20  ally)..         
294e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
294f0 20 20 20 20 62 65 20 6c 6f 67 67 65 64 2e 20 20      be logged.  
29500 4d 61 6b 65 20 73 75 72 65 20 74 68 65 20 72 65  Make sure the re
29510 67 69 73 74 72 79 20 68 65 6c 70 65 72 20 63 6c  gistry helper cl
29520 61 73 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ass..           
29530 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
29540 20 20 68 61 73 20 61 20 76 61 6c 69 64 20 6f 70    has a valid op
29550 65 72 61 74 69 6f 6e 20 6c 69 73 74 3b 20 6f 74  eration list; ot
29560 68 65 72 77 69 73 65 2c 20 69 74 20 77 69 6c 6c  herwise, it will
29570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29580 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6e        //       n
29590 6f 74 20 70 65 72 66 6f 72 6d 20 61 6e 79 20 6c  ot perform any l
295a0 6f 67 67 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  ogging...       
295b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
295c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
295d0 20 20 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75       if (configu
295e0 72 61 74 69 6f 6e 2e 72 65 67 69 73 74 72 79 4c  ration.registryL
295f0 6f 67 46 69 6c 65 4e 61 6d 65 20 21 3d 20 6e 75  ogFileName != nu
29600 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
29610 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29630 20 20 20 20 52 65 67 69 73 74 72 79 48 65 6c 70      RegistryHelp
29640 65 72 2e 45 6e 61 62 6c 65 4f 72 44 69 73 61 62  er.EnableOrDisab
29650 6c 65 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28  leOperationList(
29660 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  true);....      
29670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29680 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
29690 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
296a0 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67  iority.MediumHig
296b0 68 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h,..            
296c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296d0 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74  debugCallback, t
296e0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
296f0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
29700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29710 20 20 20 20 20 20 20 20 20 20 22 52 65 67 69 73            "Regis
29720 74 72 79 20 6c 6f 67 67 69 6e 67 20 74 6f 20 66  try logging to f
29730 69 6c 65 20 7b 30 7d 20 65 6e 61 62 6c 65 64 2e  ile {0} enabled.
29740 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
29750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29760 46 6f 72 44 69 73 70 6c 61 79 28 63 6f 6e 66 69  ForDisplay(confi
29770 67 75 72 61 74 69 6f 6e 2e 72 65 67 69 73 74 72  guration.registr
29780 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 29 29 2c 0d  yLogFileName)),.
29790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
297a0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
297b0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20  ceCategory);..  
297c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
297d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
297e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
297f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29800 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74     // NOTE: If t
29810 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20  he command line 
29820 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 6d 61 6e  has not been man
29830 75 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  ually..         
29840 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
29850 20 20 20 20 63 6f 6e 66 69 72 6d 65 64 20 28 69      confirmed (i
29860 2e 65 2e 20 76 69 61 20 74 68 65 20 65 78 70 6c  .e. via the expl
29870 69 63 69 74 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e  icit command lin
29880 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
29890 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
298a0 6f 70 74 69 6f 6e 29 2c 20 74 68 65 6e 20 73 74  option), then st
298b0 6f 70 20 70 72 6f 63 65 73 73 69 6e 67 20 6e 6f  op processing no
298c0 77 2e 20 20 57 65 20 65 6e 66 6f 72 63 65 0d 0a  w.  We enforce..
298d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
298e0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 69      //       thi
298f0 73 20 72 75 6c 65 20 73 6f 20 74 68 61 74 20 73  s rule so that s
29900 69 6d 70 6c 79 20 64 6f 75 62 6c 65 2d 63 6c 69  imply double-cli
29910 63 6b 69 6e 67 20 74 68 65 0d 0a 20 20 20 20 20  cking the..     
29920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29930 2f 20 20 20 20 20 20 20 65 78 65 63 75 74 61 62  /       executab
29940 6c 65 20 77 69 6c 6c 20 6e 6f 74 20 72 65 73 75  le will not resu
29950 6c 74 20 69 6e 20 61 6e 79 20 63 68 61 6e 67 65  lt in any change
29960 73 20 62 65 69 6e 67 0d 0a 20 20 20 20 20 20 20  s being..       
29970 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
29980 20 20 20 20 20 20 6d 61 64 65 20 74 6f 20 74 68        made to th
29990 65 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20 20  e system...     
299a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
299b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
299c0 20 20 20 20 20 20 20 69 66 20 28 21 63 6f 6e 66         if (!conf
299d0 69 67 75 72 61 74 69 6f 6e 2e 63 6f 6e 66 69 72  iguration.confir
299e0 6d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m)..            
299f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a10 20 20 20 65 72 72 6f 72 20 3d 20 22 43 61 6e 6e     error = "Cann
29a20 6f 74 20 63 6f 6e 74 69 6e 75 65 2c 20 74 68 65  ot continue, the
29a30 20 5c 22 63 6f 6e 66 69 72 6d 5c 22 20 6f 70 74   \"confirm\" opt
29a40 69 6f 6e 20 69 73 20 22 20 2b 0d 0a 20 20 20 20  ion is " +..    
29a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a60 20 20 20 20 20 20 20 20 22 6e 6f 74 20 65 6e 61          "not ena
29a70 62 6c 65 64 2e 22 3b 0d 0a 0d 0a 20 20 20 20 20  bled.";....     
29a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a90 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
29aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29ab0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
29ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
29ad0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
29ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
29af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b00 63 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e  catch (Exception
29b10 20 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   e)..           
29b20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
29b30 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
29b40 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
29b50 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79  ce(TracePriority
29b60 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20  .Highest,..     
29b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b80 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b     debugCallback
29b90 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  , traceCallback,
29ba0 20 65 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72   e, traceCategor
29bb0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
29bc0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
29bd0 20 3d 20 22 46 61 69 6c 65 64 20 74 6f 20 70 72   = "Failed to pr
29be0 6f 63 65 73 73 20 63 6f 6e 66 69 67 75 72 61 74  ocess configurat
29bf0 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20 20 20 20  ion.";..        
29c00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29c10 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
29c20 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
29c30 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
29c40 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
29c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
29c90 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
29ca0 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
29cb0 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
29cc0 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
29cd0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
29ce0 63 20 62 6f 6f 6c 20 43 68 65 63 6b 52 75 6e 74  c bool CheckRunt
29cf0 69 6d 65 56 65 72 73 69 6f 6e 28 0d 0a 20 20 20  imeVersion(..   
29d00 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e               Con
29d10 66 69 67 75 72 61 74 69 6f 6e 20 63 6f 6e 66 69  figuration confi
29d20 67 75 72 61 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  guration,..     
29d30 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
29d40 73 74 72 69 63 74 2c 0d 0a 20 20 20 20 20 20 20  strict,..       
29d50 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
29d60 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  ing error..     
29d70 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
29d80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29d90 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
29da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29db0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
29dc0 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
29dd0 66 69 67 75 72 61 74 69 6f 6e 20 3d 3d 20 6e 75  figuration == nu
29de0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
29df0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e10 20 20 20 20 65 72 72 6f 72 20 3d 20 22 49 6e 76      error = "Inv
29e20 61 6c 69 64 20 63 6f 6e 66 69 67 75 72 61 74 69  alid configurati
29e30 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  on.";..         
29e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
29e50 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
29e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
29e80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
29e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ea0 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 68 61 74     // NOTE: What
29eb0 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
29ec0 72 75 6e 74 69 6d 65 20 77 61 73 20 74 68 65 20  runtime was the 
29ed0 63 6f 72 65 20 28 70 72 69 6d 61 72 79 29 0d 0a  core (primary)..
29ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ef0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73      //       ass
29f00 65 6d 62 6c 79 20 63 6f 6d 70 69 6c 65 64 20 61  embly compiled a
29f10 67 61 69 6e 73 74 20 28 65 2e 67 2e 20 22 76 32  gainst (e.g. "v2
29f20 2e 30 2e 35 30 37 32 37 22 20 6f 72 0d 0a 20 20  .0.50727" or..  
29f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f40 20 20 2f 2f 20 20 20 20 20 20 20 22 76 34 2e 30    //       "v4.0
29f50 2e 33 30 33 31 39 22 29 2e 0d 0a 20 20 20 20 20  .30319")...     
29f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29f70 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
29f80 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f         string co
29f90 72 65 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65  reImageRuntimeVe
29fa0 72 73 69 6f 6e 20 3d 20 47 65 74 49 6d 61 67 65  rsion = GetImage
29fb0 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 28 0d  RuntimeVersion(.
29fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29fd0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
29fe0 72 61 74 69 6f 6e 2e 63 6f 72 65 46 69 6c 65 4e  ration.coreFileN
29ff0 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
2a000 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2a010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a020 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
2a030 20 61 6c 6c 6f 77 20 74 68 65 20 61 63 74 75 61   allow the actua
2a040 6c 20 69 6d 61 67 65 20 72 75 6e 74 69 6d 65 20  l image runtime 
2a050 63 68 65 63 6b 69 6e 67 20 74 6f 20 62 65 0d 0a  checking to be..
2a060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a070 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 79 70      //       byp
2a080 61 73 73 65 64 20 76 69 61 20 74 68 65 20 22 2d  assed via the "-
2a090 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  noRuntimeVersion
2a0a0 22 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0d 0a  " command line..
2a0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a0c0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 74      //       opt
2a0d0 69 6f 6e 2e 20 20 54 68 65 20 63 6f 6d 6d 61 6e  ion.  The comman
2a0e0 64 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 20 69 73  d line option is
2a0f0 20 69 6e 74 65 6e 64 65 64 20 66 6f 72 0d 0a 20   intended for.. 
2a100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a110 20 20 20 2f 2f 20 20 20 20 20 20 20 65 78 70 65     //       expe
2a120 72 74 20 75 73 65 20 6f 6e 6c 79 2e 0d 0a 20 20  rt use only...  
2a130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a140 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2a150 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f            if (co
2a160 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 52 75  nfiguration.noRu
2a170 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29 0d 0a 20  ntimeVersion).. 
2a180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a190 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
2a1b0 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
2a1c0 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
2a1d0 74 79 2e 4d 65 64 69 75 6d 2c 0d 0a 20 20 20 20  ty.Medium,..    
2a1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1f0 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
2a200 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
2a210 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
2a220 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2a230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a240 20 20 22 41 73 73 65 6d 62 6c 79 20 69 73 20 63    "Assembly is c
2a250 6f 6d 70 69 6c 65 64 20 66 6f 72 20 74 68 65 20  ompiled for the 
2a260 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 7b  .NET Framework {
2a270 30 7d 3b 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  0}; " +..       
2a280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a290 20 20 20 20 20 22 68 6f 77 65 76 65 72 2c 20 69       "however, i
2a2a0 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 72 65 73 74  nstallation rest
2a2b0 72 69 63 74 69 6f 6e 73 20 62 61 73 65 64 20 6f  rictions based o
2a2c0 6e 20 74 68 69 73 20 22 20 2b 0d 0a 20 20 20 20  n this " +..    
2a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2e0 20 20 20 20 20 20 20 20 22 66 61 63 74 20 68 61          "fact ha
2a2f0 76 65 20 62 65 65 6e 20 64 69 73 61 62 6c 65 64  ve been disabled
2a300 20 76 69 61 20 74 68 65 20 63 6f 6d 6d 61 6e 64   via the command
2a310 20 6c 69 6e 65 2e 22 2c 0d 0a 20 20 20 20 20 20   line.",..      
2a320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a330 20 20 20 20 20 20 63 6f 72 65 49 6d 61 67 65 52        coreImageR
2a340 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29 2c 20  untimeVersion), 
2a350 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2a360 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a370 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a380 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  n true;..       
2a390 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2a3a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a3b0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2a3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2a3d0 20 54 4f 44 4f 3a 20 52 65 73 74 72 69 63 74 20   TODO: Restrict 
2a3e0 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  the configuratio
2a3f0 6e 20 62 61 73 65 64 20 6f 6e 20 77 68 69 63 68  n based on which
2a400 20 69 6d 61 67 65 0d 0a 20 20 20 20 20 20 20 20   image..        
2a410 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2a420 20 20 20 20 20 72 75 6e 74 69 6d 65 20 76 65 72       runtime ver
2a430 73 69 6f 6e 73 20 28 77 68 69 63 68 20 6d 6f 72  sions (which mor
2a440 65 2d 6f 72 2d 6c 65 73 73 20 63 6f 72 72 65 73  e-or-less corres
2a450 70 6f 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20  pond..          
2a460 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2a470 20 20 20 74 6f 20 2e 4e 45 54 20 46 72 61 6d 65     to .NET Frame
2a480 77 6f 72 6b 20 76 65 72 73 69 6f 6e 73 29 20 61  work versions) a
2a490 72 65 20 73 75 70 70 6f 72 74 65 64 20 62 79 20  re supported by 
2a4a0 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
2a4b0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2a4c0 20 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 56 69    versions of Vi
2a4d0 73 75 61 6c 20 53 74 75 64 69 6f 20 74 68 61 74  sual Studio that
2a4e0 20 61 72 65 20 69 6e 73 74 61 6c 6c 65 64 2e 0d   are installed..
2a4f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a500 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2a510 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2a520 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  (String.IsNullOr
2a530 45 6d 70 74 79 28 63 6f 72 65 49 6d 61 67 65 52  Empty(coreImageR
2a540 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29 29 0d  untimeVersion)).
2a550 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a560 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a580 65 72 72 6f 72 20 3d 20 22 69 6e 76 61 6c 69 64  error = "invalid
2a590 20 63 6f 72 65 20 66 69 6c 65 20 69 6d 61 67 65   core file image
2a5a0 20 72 75 6e 74 69 6d 65 20 76 65 72 73 69 6f 6e   runtime version
2a5b0 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
2a5c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2a5d0 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
2a5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2a5f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a600 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 53        else if (S
2a610 74 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20  tring.Equals(.. 
2a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a630 20 20 20 20 20 20 20 20 20 20 20 63 6f 72 65 49             coreI
2a640 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69  mageRuntimeVersi
2a650 6f 6e 2c 20 43 4c 52 76 32 49 6d 61 67 65 52 75  on, CLRv2ImageRu
2a660 6e 74 69 6d 65 56 65 72 73 69 6f 6e 2c 0d 0a 20  ntimeVersion,.. 
2a670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a680 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
2a690 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
2a6a0 6e 61 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20  nal))..         
2a6b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a6d0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2a6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a6f0 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 6f 72 20 74    // NOTE: For t
2a700 68 65 20 43 4c 52 20 76 32 2e 30 20 72 75 6e 74  he CLR v2.0 runt
2a710 69 6d 65 2c 20 6d 61 6b 65 20 73 75 72 65 20 77  ime, make sure w
2a720 65 20 64 69 73 61 62 6c 65 0d 0a 20 20 20 20 20  e disable..     
2a730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a740 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 79 20     //       any 
2a750 61 74 74 65 6d 70 74 20 74 6f 20 75 73 65 20 69  attempt to use i
2a760 74 20 66 6f 72 20 74 68 69 6e 67 73 20 74 68 61  t for things tha
2a770 74 20 72 65 71 75 69 72 65 0d 0a 20 20 20 20 20  t require..     
2a780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a790 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6e 20 61     //       an a
2a7a0 73 73 65 6d 62 6c 79 20 63 6f 6d 70 69 6c 65 64  ssembly compiled
2a7b0 20 66 6f 72 20 74 68 65 20 43 4c 52 20 76 34 2e   for the CLR v4.
2a7c0 30 2e 20 20 49 74 20 69 73 0d 0a 20 20 20 20 20  0.  It is..     
2a7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a7e0 20 20 20 2f 2f 20 20 20 20 20 20 20 75 6e 63 65     //       unce
2a7f0 72 74 61 69 6e 20 69 66 20 74 68 69 73 20 69 73  rtain if this is
2a800 20 61 63 74 75 61 6c 6c 79 20 61 20 70 72 6f 62   actually a prob
2a810 6c 65 6d 20 69 6e 0d 0a 20 20 20 20 20 20 20 20  lem in..        
2a820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a830 2f 2f 20 20 20 20 20 20 20 70 72 61 63 74 69 63  //       practic
2a840 65 20 61 73 20 74 68 65 20 43 4c 52 20 76 34 2e  e as the CLR v4.
2a850 30 20 63 61 6e 20 6c 6f 61 64 20 61 6e 64 20 75  0 can load and u
2a860 73 65 20 61 6e 0d 0a 20 20 20 20 20 20 20 20 20  se an..         
2a870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a880 2f 20 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79  /       assembly
2a890 20 63 6f 6d 70 69 6c 65 64 20 77 69 74 68 20 74   compiled with t
2a8a0 68 65 20 43 4c 52 20 76 32 2e 30 3b 20 68 6f 77  he CLR v2.0; how
2a8b0 65 76 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  ever,..         
2a8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a8d0 2f 20 20 20 20 20 20 20 73 69 6e 63 65 20 74 68  /       since th
2a8e0 69 73 20 70 72 6f 6a 65 63 74 20 6f 66 66 65 72  is project offer
2a8f0 73 20 62 6f 74 68 20 63 6f 6e 66 69 67 75 72 61  s both configura
2a900 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20  tions,..        
2a910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a920 2f 2f 20 20 20 20 20 20 20 77 65 20 63 75 72 72  //       we curr
2a930 65 6e 74 6c 79 20 64 69 73 61 6c 6c 6f 77 20 74  ently disallow t
2a940 68 69 73 20 6d 69 73 6d 61 74 63 68 2e 0d 0a 20  his mismatch... 
2a950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a960 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2a970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a980 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
2a990 2e 6e 6f 4e 65 74 46 78 34 30 20 3d 20 74 72 75  .noNetFx40 = tru
2a9a0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2a9b0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
2a9c0 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46  iguration.noNetF
2a9d0 78 34 35 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  x45 = true;..   
2a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a9f0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
2aa00 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 31 20 3d 20  on.noNetFx451 = 
2aa10 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
2aa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2aa30 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
2aa40 65 74 46 78 34 35 32 20 3d 20 74 72 75 65 3b 0d  etFx452 = true;.
2aa50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2aa60 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
2aa70 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 36  ration.noNetFx46
2aa80 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
2aa90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aaa0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
2aab0 6e 6f 4e 65 74 46 78 34 36 31 20 3d 20 74 72 75  noNetFx461 = tru
2aac0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2aad0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
2aae0 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46  iguration.noNetF
2aaf0 78 34 36 32 20 3d 20 74 72 75 65 3b 0d 0a 20 20  x462 = true;..  
2ab00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab10 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
2ab20 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 37 20 3d 20  ion.noNetFx47 = 
2ab30 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
2ab40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2ab50 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
2ab60 65 74 46 78 34 37 31 20 3d 20 74 72 75 65 3b 0d  etFx471 = true;.
2ab70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ab80 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
2ab90 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 30 20  ration.noVs2010 
2aba0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
2abb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2abc0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
2abd0 6f 56 73 32 30 31 32 20 3d 20 74 72 75 65 3b 0d  oVs2012 = true;.
2abe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2abf0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
2ac00 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 33 20  ration.noVs2013 
2ac10 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
2ac20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ac30 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
2ac40 6f 56 73 32 30 31 35 20 3d 20 74 72 75 65 3b 0d  oVs2015 = true;.
2ac50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ac60 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
2ac70 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 37 20  ration.noVs2017 
2ac80 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  = true;....     
2ac90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aca0 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
2acb0 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50  gAndTrace(TraceP
2acc0 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 2c 0d  riority.Medium,.
2acd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ace0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
2acf0 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63  ugCallback, trac
2ad00 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
2ad10 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
2ad20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad30 20 20 20 20 20 20 20 22 41 73 73 65 6d 62 6c 79         "Assembly
2ad40 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72   is compiled for
2ad50 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77   the .NET Framew
2ad60 6f 72 6b 20 7b 30 7d 2c 20 22 20 2b 0d 0a 20 20  ork {0}, " +..  
2ad70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad80 20 20 20 20 20 20 20 20 20 20 22 73 75 70 70 6f            "suppo
2ad90 72 74 20 66 6f 72 20 74 68 65 20 2e 4e 45 54 20  rt for the .NET 
2ada0 46 72 61 6d 65 77 6f 72 6b 20 7b 31 7d 20 69 73  Framework {1} is
2adb0 20 6e 6f 77 20 64 69 73 61 62 6c 65 64 2e 22 2c   now disabled.",
2adc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2add0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 4c                CL
2ade0 52 76 32 49 6d 61 67 65 52 75 6e 74 69 6d 65 56  Rv2ImageRuntimeV
2adf0 65 72 73 69 6f 6e 2c 20 43 4c 52 76 34 49 6d 61  ersion, CLRv4Ima
2ae00 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  geRuntimeVersion
2ae10 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2ae20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae30 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2ae40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ae50 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2ae60 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
2ae70 20 69 66 20 28 53 74 72 69 6e 67 2e 45 71 75 61   if (String.Equa
2ae80 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls(..           
2ae90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aea0 20 63 6f 72 65 49 6d 61 67 65 52 75 6e 74 69 6d   coreImageRuntim
2aeb0 65 56 65 72 73 69 6f 6e 2c 20 43 4c 52 76 34 49  eVersion, CLRv4I
2aec0 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69  mageRuntimeVersi
2aed0 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on,..           
2aee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aef0 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f   StringCompariso
2af00 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a 20 20 20  n.Ordinal))..   
2af10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2af30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2af40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af50 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
2af60 20 46 6f 72 20 74 68 65 20 43 4c 52 20 76 34 2e   For the CLR v4.
2af70 30 20 72 75 6e 74 69 6d 65 2c 20 6d 61 6b 65 20  0 runtime, make 
2af80 73 75 72 65 20 77 65 20 64 69 73 61 62 6c 65 0d  sure we disable.
2af90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2afa0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2afb0 20 20 61 6e 79 20 61 74 74 65 6d 70 74 20 74 6f    any attempt to
2afc0 20 75 73 65 20 69 74 20 66 6f 72 20 74 68 69 6e   use it for thin
2afd0 67 73 20 74 68 61 74 20 72 65 71 75 69 72 65 0d  gs that require.
2afe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2aff0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
2b000 20 20 61 6e 20 61 73 73 65 6d 62 6c 79 20 63 6f    an assembly co
2b010 6d 70 69 6c 65 64 20 66 6f 72 20 74 68 65 20 43  mpiled for the C
2b020 4c 52 20 76 32 2e 30 2e 0d 0a 20 20 20 20 20 20  LR v2.0...      
2b030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b040 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2b050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
2b060 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65  nfiguration.noNe
2b070 74 46 78 32 30 20 3d 20 74 72 75 65 3b 0d 0a 20  tFx20 = true;.. 
2b080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b090 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
2b0a0 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 33 35 20 3d  tion.noNetFx35 =
2b0b0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
2b0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b0d0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
2b0e0 56 73 32 30 30 35 20 3d 20 74 72 75 65 3b 0d 0a  Vs2005 = true;..
2b0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b100 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
2b110 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 30 38 20 3d  ation.noVs2008 =
2b120 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20   true;....      
2b130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b140 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
2b150 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
2b160 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 2c 0d 0a  iority.Medium,..
2b170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b180 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
2b190 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
2b1a0 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
2b1b0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
2b1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b1d0 20 20 20 20 20 20 22 41 73 73 65 6d 62 6c 79 20        "Assembly 
2b1e0 69 73 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20  is compiled for 
2b1f0 74 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f  the .NET Framewo
2b200 72 6b 20 7b 30 7d 2c 20 22 20 2b 0d 0a 20 20 20  rk {0}, " +..   
2b210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b220 20 20 20 20 20 20 20 20 20 22 73 75 70 70 6f 72           "suppor
2b230 74 20 66 6f 72 20 74 68 65 20 2e 4e 45 54 20 46  t for the .NET F
2b240 72 61 6d 65 77 6f 72 6b 20 7b 31 7d 20 69 73 20  ramework {1} is 
2b250 6e 6f 77 20 64 69 73 61 62 6c 65 64 2e 22 2c 0d  now disabled.",.
2b260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b270 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
2b280 44 69 73 70 6c 61 79 28 43 4c 52 76 34 49 6d 61  Display(CLRv4Ima
2b290 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  geRuntimeVersion
2b2a0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2b2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b2c0 46 6f 72 44 69 73 70 6c 61 79 28 43 4c 52 76 32  ForDisplay(CLRv2
2b2d0 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73  ImageRuntimeVers
2b2e0 69 6f 6e 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ion)),..        
2b2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b300 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2b310 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
2b320 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2b330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b340 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
2b350 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2b360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b370 20 20 20 20 20 65 72 72 6f 72 20 3d 20 53 74 72       error = Str
2b380 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
2b390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b3a0 20 20 20 20 20 20 20 20 20 22 75 6e 73 75 70 70           "unsupp
2b3b0 6f 72 74 65 64 20 63 6f 72 65 20 66 69 6c 65 20  orted core file 
2b3c0 69 6d 61 67 65 20 72 75 6e 74 69 6d 65 20 76 65  image runtime ve
2b3d0 72 73 69 6f 6e 20 22 20 2b 0d 0a 20 20 20 20 20  rsion " +..     
2b3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b3f0 20 20 20 20 20 20 20 22 7b 30 7d 2c 20 6d 75 73         "{0}, mus
2b400 74 20 62 65 20 7b 31 7d 20 6f 72 20 7b 32 7d 22  t be {1} or {2}"
2b410 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2b420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
2b430 6f 72 44 69 73 70 6c 61 79 28 63 6f 72 65 49 6d  orDisplay(coreIm
2b440 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f  ageRuntimeVersio
2b450 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n),..           
2b460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b470 20 46 6f 72 44 69 73 70 6c 61 79 28 43 4c 52 76   ForDisplay(CLRv
2b480 32 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72  2ImageRuntimeVer
2b490 73 69 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20  sion),..        
2b4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b4b0 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 43      ForDisplay(C
2b4c0 4c 52 76 34 49 6d 61 67 65 52 75 6e 74 69 6d 65  LRv4ImageRuntime
2b4d0 56 65 72 73 69 6f 6e 29 29 3b 0d 0a 0d 0a 20 20  Version));....  
2b4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b4f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
2b500 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
2b510 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2b520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b530 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2b540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b550 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2b560 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
2b570 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20  ion e)..        
2b580 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
2b5a0 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
2b5b0 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72  Trace(TracePrior
2b5c0 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20  ity.Highest,..  
2b5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b5e0 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
2b5f0 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
2b600 63 6b 2c 20 65 2c 20 74 72 61 63 65 43 61 74 65  ck, e, traceCate
2b610 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2b620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
2b630 72 6f 72 20 3d 20 22 46 61 69 6c 65 64 20 74 6f  ror = "Failed to
2b640 20 63 68 65 63 6b 20 69 6d 61 67 65 20 72 75 6e   check image run
2b650 74 69 6d 65 20 76 65 72 73 69 6f 6e 2e 22 3b 0d  time version.";.
2b660 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b670 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2b680 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
2b690 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
2b6a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2b6b0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2b6c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2b6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2b710 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
2b720 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74  gion Private Met
2b730 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20  hods..          
2b740 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
2b750 20 47 65 74 49 6e 76 61 72 69 61 6e 74 4e 61 6d   GetInvariantNam
2b760 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2b770 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a      bool trace..
2b780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b790 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2b7a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b7b0 20 20 72 65 74 75 72 6e 20 55 73 65 45 66 36 50    return UseEf6P
2b7c0 72 6f 76 69 64 65 72 28 74 72 61 63 65 29 20 3f  rovider(trace) ?
2b7d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b7e0 20 20 20 20 20 20 45 66 36 49 6e 76 61 72 69 61        Ef6Invaria
2b7f0 6e 74 4e 61 6d 65 20 3a 20 49 6e 76 61 72 69 61  ntName : Invaria
2b800 6e 74 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  ntName;..       
2b810 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2b820 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2b830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b860 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2b870 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
2b880 20 62 6f 6f 6c 20 49 73 53 79 73 74 65 6d 45 66   bool IsSystemEf
2b890 36 41 73 73 65 6d 62 6c 79 41 76 61 69 6c 61 62  6AssemblyAvailab
2b8a0 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le(..           
2b8b0 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d       bool trace.
2b8c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b8d0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
2b8e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2b8f0 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2b900 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2b910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2b920 66 20 28 73 79 73 74 65 6d 45 66 36 41 73 73 65  f (systemEf6Asse
2b930 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  mbly == null).. 
2b940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b950 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79                sy
2b970 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 20  stemEf6Assembly 
2b980 3d 20 41 73 73 65 6d 62 6c 79 2e 52 65 66 6c 65  = Assembly.Refle
2b990 63 74 69 6f 6e 4f 6e 6c 79 4c 6f 61 64 28 0d 0a  ctionOnlyLoad(..
2b9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b9b0 20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74              Syst
2b9c0 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d  emEf6AssemblyNam
2b9d0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2b9e0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2b9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba00 20 20 69 66 20 28 73 79 73 74 65 6d 45 66 36 41    if (systemEf6A
2ba10 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29  ssembly != null)
2ba20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ba30 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2ba40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba50 20 69 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20   if (trace &&.. 
2ba60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba70 20 20 20 20 20 20 20 20 20 20 20 21 48 61 73 46             !HasF
2ba80 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61  lags(ProviderFla
2ba90 67 73 2e 44 69 64 45 66 36 52 65 73 6f 6c 76 65  gs.DidEf6Resolve
2baa0 54 72 61 63 65 2c 20 74 72 75 65 29 29 0d 0a 20  Trace, true)).. 
2bab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bac0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2bad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bae0 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
2baf0 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
2bb00 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65  cePriority.Highe
2bb10 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  st,..           
2bb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bb30 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
2bb40 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
2bb50 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
2bb60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2bb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bb80 20 20 20 22 45 6e 74 69 74 79 20 46 72 61 6d 65     "Entity Frame
2bb90 77 6f 72 6b 20 36 20 61 73 73 65 6d 62 6c 79 20  work 6 assembly 
2bba0 77 61 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20  was " +..       
2bbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bbc0 20 20 20 20 20 20 20 20 20 22 72 65 73 6f 6c 76           "resolv
2bbd0 65 64 20 74 6f 20 7b 30 7d 2e 22 2c 20 46 6f 72  ed to {0}.", For
2bbe0 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20  Display(..      
2bbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc00 20 20 20 20 20 20 20 20 20 20 73 79 73 74 65 6d            system
2bc10 45 66 36 41 73 73 65 6d 62 6c 79 2e 4c 6f 63 61  Ef6Assembly.Loca
2bc20 74 69 6f 6e 29 29 2c 0d 0a 20 20 20 20 20 20 20  tion)),..       
2bc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc40 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2bc50 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2bc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc70 20 20 20 20 20 20 20 20 70 72 6f 76 69 64 65 72          provider
2bc80 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69 64 65  Flags |= Provide
2bc90 72 46 6c 61 67 73 2e 44 69 64 45 66 36 52 65 73  rFlags.DidEf6Res
2bca0 6f 6c 76 65 54 72 61 63 65 3b 0d 0a 20 20 20 20  olveTrace;..    
2bcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2bcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bce0 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
2bcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd00 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2bd10 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2bd20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a           catch..
2bd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd40 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2bd50 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74         // do not
2bd60 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20  hing...         
2bd70 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2bd80 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2bd90 74 72 61 63 65 20 26 26 0d 0a 20 20 20 20 20 20  trace &&..      
2bda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 48                !H
2bdb0 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72  asFlags(Provider
2bdc0 46 6c 61 67 73 2e 44 69 64 45 66 36 52 65 73 6f  Flags.DidEf6Reso
2bdd0 6c 76 65 54 72 61 63 65 2c 20 74 72 75 65 29 29  lveTrace, true))
2bde0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bdf0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2be00 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
2be10 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
2be20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69  TracePriority.Hi
2be30 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20  ghest,..        
2be40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be50 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74  debugCallback, t
2be60 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  raceCallback,.. 
2be70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be80 20 20 20 20 20 20 20 22 45 6e 74 69 74 79 20 46         "Entity F
2be90 72 61 6d 65 77 6f 72 6b 20 36 20 61 73 73 65 6d  ramework 6 assem
2bea0 62 6c 79 20 77 61 73 20 6e 6f 74 20 72 65 73 6f  bly was not reso
2beb0 6c 76 65 64 2e 22 2c 0d 0a 20 20 20 20 20 20 20  lved.",..       
2bec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bed0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2bee0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2bef0 20 20 20 20 20 20 20 20 70 72 6f 76 69 64 65 72          provider
2bf00 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69 64 65  Flags |= Provide
2bf10 72 46 6c 61 67 73 2e 44 69 64 45 66 36 52 65 73  rFlags.DidEf6Res
2bf20 6f 6c 76 65 54 72 61 63 65 3b 0d 0a 20 20 20 20  olveTrace;..    
2bf30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2bf40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bf50 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
2bf60 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
2bf70 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
2bf80 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
2bf90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2bfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2bfd0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2bfe0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
2bff0 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a  Public Methods..
2c000 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2c010 69 63 20 62 6f 6f 6c 20 48 61 73 46 6c 61 67 73  ic bool HasFlags
2c020 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2c030 20 20 20 49 6e 73 74 61 6c 6c 46 6c 61 67 73 20     InstallFlags 
2c040 68 61 73 46 6c 61 67 73 2c 0d 0a 20 20 20 20 20  hasFlags,..     
2c050 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
2c060 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  all..           
2c070 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2c080 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c090 20 20 20 20 20 20 20 69 66 20 28 61 6c 6c 29 0d         if (all).
2c0a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c0b0 20 20 20 20 20 72 65 74 75 72 6e 20 28 28 69 6e       return ((in
2c0c0 73 74 61 6c 6c 46 6c 61 67 73 20 26 20 68 61 73  stallFlags & has
2c0d0 46 6c 61 67 73 29 20 3d 3d 20 68 61 73 46 6c 61  Flags) == hasFla
2c0e0 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  gs);..          
2c0f0 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
2c100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c110 72 65 74 75 72 6e 20 28 28 69 6e 73 74 61 6c 6c  return ((install
2c120 46 6c 61 67 73 20 26 20 68 61 73 46 6c 61 67 73  Flags & hasFlags
2c130 29 20 21 3d 20 49 6e 73 74 61 6c 6c 46 6c 61 67  ) != InstallFlag
2c140 73 2e 4e 6f 6e 65 29 3b 0d 0a 20 20 20 20 20 20  s.None);..      
2c150 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2c160 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2c170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
2c1b0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2c1c0 20 62 6f 6f 6c 20 48 61 73 46 6c 61 67 73 28 0d   bool HasFlags(.
2c1d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c1e0 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73 20 68   ProviderFlags h
2c1f0 61 73 46 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20  asFlags,..      
2c200 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 61            bool a
2c210 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ll..            
2c220 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2c230 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c240 20 20 20 20 20 20 69 66 20 28 61 6c 6c 29 0d 0a        if (all)..
2c250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c260 20 20 20 20 72 65 74 75 72 6e 20 28 28 70 72 6f      return ((pro
2c270 76 69 64 65 72 46 6c 61 67 73 20 26 20 68 61 73  viderFlags & has
2c280 46 6c 61 67 73 29 20 3d 3d 20 68 61 73 46 6c 61  Flags) == hasFla
2c290 67 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  gs);..          
2c2a0 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
2c2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c2c0 72 65 74 75 72 6e 20 28 28 70 72 6f 76 69 64 65  return ((provide
2c2d0 72 46 6c 61 67 73 20 26 20 68 61 73 46 6c 61 67  rFlags & hasFlag
2c2e0 73 29 20 21 3d 20 50 72 6f 76 69 64 65 72 46 6c  s) != ProviderFl
2c2f0 61 67 73 2e 4e 6f 6e 65 29 3b 0d 0a 20 20 20 20  ags.None);..    
2c300 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2c310 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2c320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2c360 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2c370 69 63 20 62 6f 6f 6c 20 49 73 4c 69 6e 71 53 75  ic bool IsLinqSu
2c380 70 70 6f 72 74 65 64 28 0d 0a 20 20 20 20 20 20  pported(..      
2c390 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74            bool t
2c3a0 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20  race..          
2c3b0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
2c3c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c3d0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2c3e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
2c3f0 4f 54 45 3a 20 43 68 65 63 6b 20 74 6f 20 73 65  OTE: Check to se
2c400 65 20 69 66 20 74 68 65 20 63 61 6c 6c 65 72 20  e if the caller 
2c410 68 61 73 20 66 6f 72 63 65 64 20 4c 49 4e 51 20  has forced LINQ 
2c420 73 75 70 70 6f 72 74 20 74 6f 0d 0a 20 20 20 20  support to..    
2c430 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2c440 20 20 20 20 20 62 65 20 65 6e 61 62 6c 65 64 20       be enabled 
2c450 2d 4f 52 2d 20 64 69 73 61 62 6c 65 64 2c 20 74  -OR- disabled, t
2c460 68 65 72 65 62 79 20 62 79 70 61 73 73 69 6e 67  hereby bypassing
2c470 20 74 68 65 20 6e 65 65 64 0d 0a 20 20 20 20 20   the need..     
2c480 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2c490 20 20 20 20 66 6f 72 20 22 61 75 74 6f 6d 61 74      for "automat
2c4a0 69 63 20 64 65 74 65 63 74 69 6f 6e 22 20 62 79  ic detection" by
2c4b0 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a 20   this method... 
2c4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2c4d0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2c4e0 20 20 20 69 66 20 28 48 61 73 46 6c 61 67 73 28     if (HasFlags(
2c4f0 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 46 6f  ProviderFlags.Fo
2c500 72 63 65 4c 69 6e 71 45 6e 61 62 6c 65 64 2c 20  rceLinqEnabled, 
2c510 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  true))..        
2c520 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2c540 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20 20 20  f (trace &&..   
2c550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c560 20 20 20 20 20 21 48 61 73 46 6c 61 67 73 28 50       !HasFlags(P
2c570 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44 69 64  roviderFlags.Did
2c580 4c 69 6e 71 46 6f 72 63 65 54 72 61 63 65 2c 20  LinqForceTrace, 
2c590 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  true))..        
2c5a0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c5c0 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
2c5d0 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72  DebugAndTrace(Tr
2c5e0 61 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69  acePriority.Medi
2c5f0 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20 20 20  umHigh,..       
2c600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c610 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
2c620 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
2c630 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
2c640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c650 22 46 6f 72 63 65 64 20 74 6f 20 65 6e 61 62 6c  "Forced to enabl
2c660 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5c 22  e support for \"
2c670 4c 69 6e 71 5c 22 2e 22 2c 0d 0a 20 20 20 20 20  Linq\".",..     
2c680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c690 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2c6a0 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2c6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c6c0 20 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20    providerFlags 
2c6d0 7c 3d 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73  |= ProviderFlags
2c6e0 2e 44 69 64 4c 69 6e 71 46 6f 72 63 65 54 72 61  .DidLinqForceTra
2c6f0 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce;..           
2c700 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2c710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c720 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2c730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c740 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2c750 20 20 20 65 6c 73 65 20 69 66 20 28 48 61 73 46     else if (HasF
2c760 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61  lags(ProviderFla
2c770 67 73 2e 46 6f 72 63 65 4c 69 6e 71 44 69 73 61  gs.ForceLinqDisa
2c780 62 6c 65 64 2c 20 74 72 75 65 29 29 0d 0a 20 20  bled, true))..  
2c790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2c7a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c7b0 20 20 20 20 20 69 66 20 28 74 72 61 63 65 20 26       if (trace &
2c7c0 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  &..             
2c7d0 20 20 20 20 20 20 20 20 20 20 20 21 48 61 73 46             !HasF
2c7e0 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61  lags(ProviderFla
2c7f0 67 73 2e 44 69 64 4c 69 6e 71 46 6f 72 63 65 54  gs.DidLinqForceT
2c800 72 61 63 65 2c 20 74 72 75 65 29 29 0d 0a 20 20  race, true))..  
2c810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c820 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2c830 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
2c840 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
2c850 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
2c860 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20  y.MediumHigh,.. 
2c870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c880 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
2c890 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
2c8a0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
2c8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8c0 20 20 20 20 20 20 22 46 6f 72 63 65 64 20 74 6f        "Forced to
2c8d0 20 64 69 73 61 62 6c 65 20 73 75 70 70 6f 72 74   disable support
2c8e0 20 66 6f 72 20 5c 22 4c 69 6e 71 5c 22 2e 22 2c   for \"Linq\".",
2c8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2c910 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2c920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c930 20 20 20 20 20 20 20 20 20 70 72 6f 76 69 64 65           provide
2c940 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69 64  rFlags |= Provid
2c950 65 72 46 6c 61 67 73 2e 44 69 64 4c 69 6e 71 46  erFlags.DidLinqF
2c960 6f 72 63 65 54 72 61 63 65 3b 0d 0a 20 20 20 20  orceTrace;..    
2c970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c980 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2c990 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2c9a0 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
2c9b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2c9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2c9d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c9e0 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e   // NOTE: Return
2c9f0 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68 65   non-zero if the
2ca00 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
2ca10 69 74 65 2e 4c 69 6e 71 0d 0a 20 20 20 20 20 20  ite.Linq..      
2ca20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2ca30 20 20 20 61 73 73 65 6d 62 6c 79 20 73 68 6f 75     assembly shou
2ca40 6c 64 20 62 65 20 70 72 6f 63 65 73 73 65 64 20  ld be processed 
2ca50 64 75 72 69 6e 67 20 74 68 65 20 69 6e 73 74 61  during the insta
2ca60 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll...           
2ca70 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66       //       If
2ca80 20 74 68 65 20 74 61 72 67 65 74 20 69 73 20 56   the target is V
2ca90 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32 30 30  isual Studio 200
2caa0 35 2c 20 74 68 69 73 20 6d 75 73 74 0d 0a 20 20  5, this must..  
2cab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2cac0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 7a 65         return ze
2cad0 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ro...           
2cae0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2caf0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2cb00 21 6e 6f 4e 65 74 46 78 33 35 20 7c 7c 20 21 6e  !noNetFx35 || !n
2cb10 6f 4e 65 74 46 78 34 30 20 7c 7c 20 21 6e 6f 4e  oNetFx40 || !noN
2cb20 65 74 46 78 34 35 20 7c 7c 0d 0a 20 20 20 20 20  etFx45 ||..     
2cb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21                 !
2cb40 6e 6f 4e 65 74 46 78 34 35 31 20 7c 7c 20 21 6e  noNetFx451 || !n
2cb50 6f 4e 65 74 46 78 34 35 32 20 7c 7c 20 21 6e 6f  oNetFx452 || !no
2cb60 4e 65 74 46 78 34 36 20 7c 7c 0d 0a 20 20 20 20  NetFx46 ||..    
2cb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb80 21 6e 6f 4e 65 74 46 78 34 36 31 20 7c 7c 20 21  !noNetFx461 || !
2cb90 6e 6f 4e 65 74 46 78 34 36 32 20 7c 7c 20 21 6e  noNetFx462 || !n
2cba0 6f 4e 65 74 46 78 34 37 20 7c 7c 0d 0a 20 20 20  oNetFx47 ||..   
2cbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cbc0 20 21 6e 6f 4e 65 74 46 78 34 37 31 3b 0d 0a 20   !noNetFx471;.. 
2cbd0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2cbe0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2cbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2cc30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
2cc40 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 45 66 36  ublic bool IsEf6
2cc50 53 75 70 70 6f 72 74 65 64 28 0d 0a 20 20 20 20  Supported(..    
2cc60 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2cc70 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20   trace..        
2cc80 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2cc90 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2cca0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2ccb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2ccc0 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 6f 20   NOTE: Check to 
2ccd0 73 65 65 20 69 66 20 74 68 65 20 63 61 6c 6c 65  see if the calle
2cce0 72 20 68 61 73 20 66 6f 72 63 65 64 20 45 46 36  r has forced EF6
2ccf0 20 73 75 70 70 6f 72 74 20 74 6f 0d 0a 20 20 20   support to..   
2cd00 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2cd10 20 20 20 20 20 20 62 65 20 65 6e 61 62 6c 65 64        be enabled
2cd20 20 2d 4f 52 2d 20 64 69 73 61 62 6c 65 64 2c 20   -OR- disabled, 
2cd30 74 68 65 72 65 62 79 20 62 79 70 61 73 73 69 6e  thereby bypassin
2cd40 67 20 74 68 65 20 6e 65 65 64 0d 0a 20 20 20 20  g the need..    
2cd50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2cd60 20 20 20 20 20 66 6f 72 20 22 61 75 74 6f 6d 61       for "automa
2cd70 74 69 63 20 64 65 74 65 63 74 69 6f 6e 22 20 62  tic detection" b
2cd80 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e 0d 0a  y this method...
2cd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cda0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2cdb0 20 20 20 20 69 66 20 28 48 61 73 46 6c 61 67 73      if (HasFlags
2cdc0 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 46  (ProviderFlags.F
2cdd0 6f 72 63 65 45 66 36 45 6e 61 62 6c 65 64 2c 20  orceEf6Enabled, 
2cde0 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20  true))..        
2cdf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ce00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2ce10 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20 20 20  f (trace &&..   
2ce20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce30 20 20 20 20 20 21 48 61 73 46 6c 61 67 73 28 50       !HasFlags(P
2ce40 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44 69 64  roviderFlags.Did
2ce50 45 66 36 46 6f 72 63 65 54 72 61 63 65 2c 20 74  Ef6ForceTrace, t
2ce60 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  rue))..         
2ce70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2ce80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce90 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
2cea0 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
2ceb0 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75  cePriority.Mediu
2cec0 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20  mHigh,..        
2ced0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cee0 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
2cef0 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
2cf00 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2cf10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2cf20 46 6f 72 63 65 64 20 74 6f 20 65 6e 61 62 6c 65  Forced to enable
2cf30 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5c 22 45   support for \"E
2cf40 66 36 5c 22 2e 22 2c 0d 0a 20 20 20 20 20 20 20  f6\".",..       
2cf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf60 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
2cf70 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
2cf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cf90 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20 7c 3d  providerFlags |=
2cfa0 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44   ProviderFlags.D
2cfb0 69 64 45 66 36 46 6f 72 63 65 54 72 61 63 65 3b  idEf6ForceTrace;
2cfc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cfd0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2cfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2cff0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
2d000 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2d010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d020 65 6c 73 65 20 69 66 20 28 48 61 73 46 6c 61 67  else if (HasFlag
2d030 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e  s(ProviderFlags.
2d040 46 6f 72 63 65 45 66 36 44 69 73 61 62 6c 65 64  ForceEf6Disabled
2d050 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20  , true))..      
2d060 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2d070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d080 20 69 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20   if (trace &&.. 
2d090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d0a0 20 20 20 20 20 20 20 21 48 61 73 46 6c 61 67 73         !HasFlags
2d0b0 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44  (ProviderFlags.D
2d0c0 69 64 45 66 36 46 6f 72 63 65 54 72 61 63 65 2c  idEf6ForceTrace,
2d0d0 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20   true))..       
2d0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2d0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d100 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
2d110 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54  .DebugAndTrace(T
2d120 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64  racePriority.Med
2d130 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20 20  iumHigh,..      
2d140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d150 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
2d160 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
2d170 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
2d180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d190 20 22 46 6f 72 63 65 64 20 74 6f 20 64 69 73 61   "Forced to disa
2d1a0 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ble support for 
2d1b0 5c 22 45 66 36 5c 22 2e 22 2c 0d 0a 20 20 20 20  \"Ef6\".",..    
2d1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d1d0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2d1e0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2d1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d200 20 20 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73     providerFlags
2d210 20 7c 3d 20 50 72 6f 76 69 64 65 72 46 6c 61 67   |= ProviderFlag
2d220 73 2e 44 69 64 45 66 36 46 6f 72 63 65 54 72 61  s.DidEf6ForceTra
2d230 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce;..           
2d240 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2d250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d260 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
2d270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d280 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2d290 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2d2a0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2d2b0 45 3a 20 52 65 74 75 72 6e 20 6e 6f 6e 2d 7a 65  E: Return non-ze
2d2c0 72 6f 20 69 66 20 74 68 65 20 53 79 73 74 65 6d  ro if the System
2d2d0 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 45 46 36  .Data.SQLite.EF6
2d2e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d2f0 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d    //       assem
2d300 62 6c 79 20 73 68 6f 75 6c 64 20 62 65 20 70 72  bly should be pr
2d310 6f 63 65 73 73 65 64 20 64 75 72 69 6e 67 20 74  ocessed during t
2d320 68 65 20 69 6e 73 74 61 6c 6c 2e 0d 0a 20 20 20  he install...   
2d330 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2d340 20 20 20 20 20 20 49 66 20 74 68 65 20 74 61 72        If the tar
2d350 67 65 74 20 69 73 20 56 69 73 75 61 6c 20 53 74  get is Visual St
2d360 75 64 69 6f 20 32 30 30 35 20 6f 72 20 56 69 73  udio 2005 or Vis
2d370 75 61 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ual..           
2d380 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 53 74       //       St
2d390 75 64 69 6f 20 32 30 30 38 2c 20 74 68 69 73 20  udio 2008, this 
2d3a0 6d 75 73 74 20 72 65 74 75 72 6e 20 7a 65 72 6f  must return zero
2d3b0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2d3c0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2d3d0 20 20 20 20 20 20 20 69 66 20 28 6e 6f 4e 65 74         if (noNet
2d3e0 46 78 34 30 20 26 26 0d 0a 20 20 20 20 20 20 20  Fx40 &&..       
2d3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 4e               noN
2d400 65 74 46 78 34 35 20 26 26 20 6e 6f 4e 65 74 46  etFx45 && noNetF
2d410 78 34 35 31 20 26 26 20 6e 6f 4e 65 74 46 78 34  x451 && noNetFx4
2d420 35 32 20 26 26 20 6e 6f 4e 65 74 46 78 34 36 20  52 && noNetFx46 
2d430 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
2d440 20 20 20 20 20 20 20 20 6e 6f 4e 65 74 46 78 34          noNetFx4
2d450 36 31 20 26 26 20 6e 6f 4e 65 74 46 78 34 36 32  61 && noNetFx462
2d460 20 26 26 20 6e 6f 4e 65 74 46 78 34 37 20 26 26   && noNetFx47 &&
2d470 20 6e 6f 4e 65 74 46 78 34 37 31 29 0d 0a 20 20   noNetFx471)..  
2d480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2d490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d4a0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
2d4b0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2d4c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2d4d0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2d4f0 4e 4f 54 45 3a 20 41 6c 73 6f 2c 20 69 66 20 74  NOTE: Also, if t
2d500 68 65 20 45 46 36 20 63 6f 72 65 20 61 73 73 65  he EF6 core asse
2d510 6d 62 6c 79 20 69 73 20 75 6e 61 76 61 69 6c 61  mbly is unavaila
2d520 62 6c 65 2c 20 74 68 69 73 0d 0a 20 20 20 20 20  ble, this..     
2d530 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2d540 20 20 20 20 6d 75 73 74 20 72 65 74 75 72 6e 20      must return 
2d550 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20  zero...         
2d560 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2d570 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
2d580 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d  IsSystemEf6Assem
2d590 62 6c 79 41 76 61 69 6c 61 62 6c 65 28 74 72 61  blyAvailable(tra
2d5a0 63 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ce))..          
2d5b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2d5c0 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
2d5d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2d5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2d5f0 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c 6c 79 2c  / NOTE: Finally,
2d600 20 69 66 20 74 68 65 20 45 46 36 20 63 6f 72 65   if the EF6 core
2d610 20 61 73 73 65 6d 62 6c 79 20 69 73 20 6e 6f 74   assembly is not
2d620 20 61 76 61 69 6c 61 62 6c 65 0d 0a 20 20 20 20   available..    
2d630 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2d640 20 20 20 20 20 67 6c 6f 62 61 6c 6c 79 20 5b 61       globally [a
2d650 6e 64 20 74 68 69 73 20 69 73 20 61 20 72 65 71  nd this is a req
2d660 75 69 72 65 6d 65 6e 74 20 66 6f 72 20 74 68 65  uirement for the
2d670 20 63 75 72 72 65 6e 74 0d 0a 20 20 20 20 20 20   current..      
2d680 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2d690 20 20 20 69 6e 73 74 61 6c 6c 5d 2c 20 72 65 74     install], ret
2d6a0 75 72 6e 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  urn zero...     
2d6b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2d6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
2d6d0 65 74 75 72 6e 20 48 61 73 46 6c 61 67 73 28 50  eturn HasFlags(P
2d6e0 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 53 79 73  roviderFlags.Sys
2d6f0 74 65 6d 45 66 36 4d 75 73 74 42 65 47 6c 6f 62  temEf6MustBeGlob
2d700 61 6c 2c 20 74 72 75 65 29 20 3f 0d 0a 20 20 20  al, true) ?..   
2d710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d720 20 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65   IsSystemEf6Asse
2d730 6d 62 6c 79 47 6c 6f 62 61 6c 28 29 20 3a 20 74  mblyGlobal() : t
2d740 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
2d750 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2d760 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2d770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d7a0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2d7b0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
2d7c0 6f 6c 20 49 73 45 66 36 41 73 73 65 6d 62 6c 79  ol IsEf6Assembly
2d7d0 47 6c 6f 62 61 6c 28 29 0d 0a 20 20 20 20 20 20  Global()..      
2d7e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d7f0 20 20 20 20 20 20 20 20 20 69 66 20 28 65 66 36           if (ef6
2d800 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20  AssemblyName == 
2d810 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2d820 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2d830 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
2d840 20 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65              Asse
2d850 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20  mbly assembly = 
2d860 41 73 73 65 6d 62 6c 79 2e 52 65 66 6c 65 63 74  Assembly.Reflect
2d870 69 6f 6e 4f 6e 6c 79 4c 6f 61 64 28 0d 0a 20 20  ionOnlyLoad(..  
2d880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d890 20 20 65 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d    ef6AssemblyNam
2d8a0 65 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a  e.ToString());..
2d8b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d8c0 20 20 72 65 74 75 72 6e 20 28 61 73 73 65 6d 62    return (assemb
2d8d0 6c 79 20 21 3d 20 6e 75 6c 6c 29 20 26 26 20 61  ly != null) && a
2d8e0 73 73 65 6d 62 6c 79 2e 47 6c 6f 62 61 6c 41 73  ssembly.GlobalAs
2d8f0 73 65 6d 62 6c 79 43 61 63 68 65 3b 0d 0a 20 20  semblyCache;..  
2d900 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2d910 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2d920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2d960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2d970 62 6c 69 63 20 62 6f 6f 6c 20 55 73 65 45 66 36  blic bool UseEf6
2d980 50 72 6f 76 69 64 65 72 28 0d 0a 20 20 20 20 20  Provider(..     
2d990 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
2d9a0 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20  trace..         
2d9b0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2d9c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d9d0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2d9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2d9f0 4e 4f 54 45 3a 20 57 65 20 63 61 6e 6e 6f 74 20  NOTE: We cannot 
2da00 75 73 65 20 74 68 65 20 45 46 36 20 61 73 73 65  use the EF6 asse
2da10 6d 62 6c 79 20 61 73 20 74 68 65 20 70 72 6f 76  mbly as the prov
2da20 69 64 65 72 20 69 66 20 69 74 0d 0a 20 20 20 20  ider if it..    
2da30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2da40 20 20 20 20 20 69 73 20 6e 6f 74 20 73 75 70 70       is not supp
2da50 6f 72 74 65 64 20 62 79 20 74 68 69 73 20 69 6e  orted by this in
2da60 73 74 61 6c 6c 61 74 69 6f 6e 2e 0d 0a 20 20 20  stallation...   
2da70 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2da80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2da90 20 69 66 20 28 21 49 73 45 66 36 53 75 70 70 6f   if (!IsEf6Suppo
2daa0 72 74 65 64 28 74 72 61 63 65 29 29 0d 0a 20 20  rted(trace))..  
2dab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dac0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
2dad0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2dae0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2daf0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2db00 46 6f 72 20 74 68 65 20 45 46 36 20 61 73 73 65  For the EF6 asse
2db10 6d 62 6c 79 20 74 6f 20 62 65 20 75 73 61 62 6c  mbly to be usabl
2db20 65 20 61 73 20 61 20 70 72 6f 76 69 64 65 72 20  e as a provider 
2db30 69 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  in..            
2db40 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68 65      //       the
2db50 20 6d 61 63 68 69 6e 65 20 63 6f 6e 66 69 67 75   machine configu
2db60 72 61 74 69 6f 6e 20 66 69 6c 65 2c 20 69 74 20  ration file, it 
2db70 6d 75 73 74 20 62 65 20 69 6e 20 74 68 65 0d 0a  must be in the..
2db80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2db90 2f 2f 20 20 20 20 20 20 20 67 6c 6f 62 61 6c 20  //       global 
2dba0 61 73 73 65 6d 62 6c 79 20 63 61 63 68 65 2e 0d  assembly cache..
2dbb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2dbc0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2dbd0 20 20 20 20 20 72 65 74 75 72 6e 20 49 73 45 66       return IsEf
2dbe0 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 28  6AssemblyGlobal(
2dbf0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2dc00 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2dc10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2dc20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2dc50 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2dc60 20 20 20 20 2f 2a 20 52 45 51 55 49 52 45 44 20      /* REQUIRED 
2dc70 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2dc80 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c 79 4e  public AssemblyN
2dc90 61 6d 65 20 47 65 74 43 6f 72 65 41 73 73 65 6d  ame GetCoreAssem
2dca0 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  blyName(..      
2dcb0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74            bool t
2dcc0 72 61 63 65 20 2f 2a 20 4e 4f 54 20 55 53 45 44  race /* NOT USED
2dcd0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2dce0 20 20 20 20 20 29 20 2f 2a 20 74 68 72 6f 77 20       ) /* throw 
2dcf0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2dd00 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2dd10 20 20 20 69 66 20 28 63 6f 72 65 41 73 73 65 6d     if (coreAssem
2dd20 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29  blyName == null)
2dd30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dd40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2dd50 20 20 20 20 20 20 20 20 20 63 6f 72 65 41 73 73           coreAss
2dd60 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 41 73 73 65  emblyName = Asse
2dd70 6d 62 6c 79 4e 61 6d 65 2e 47 65 74 41 73 73 65  mblyName.GetAsse
2dd80 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20  mblyName(..     
2dd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dda0 20 20 20 43 6f 72 65 46 69 6c 65 4e 61 6d 65 29     CoreFileName)
2ddb0 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ; /* throw */.. 
2ddc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2ddd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2dde0 20 20 20 20 72 65 74 75 72 6e 20 63 6f 72 65 41      return coreA
2ddf0 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20  ssemblyName;..  
2de00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2de10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2de20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2de50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2de60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ..            /*
2de70 20 4f 50 54 49 4f 4e 41 4c 20 2a 2f 0d 0a 20 20   OPTIONAL */..  
2de80 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2de90 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 47 65   AssemblyName Ge
2dea0 74 4c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d  tLinqAssemblyNam
2deb0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2dec0 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a      bool trace..
2ded0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dee0 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20  ) /* throw */.. 
2def0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2df00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2df10 20 28 49 73 4c 69 6e 71 53 75 70 70 6f 72 74 65   (IsLinqSupporte
2df20 64 28 74 72 61 63 65 29 20 26 26 20 28 6c 69 6e  d(trace) && (lin
2df30 71 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d  qAssemblyName ==
2df40 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
2df50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2df60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df70 6c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d 65  linqAssemblyName
2df80 20 3d 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2e   = AssemblyName.
2df90 47 65 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28  GetAssemblyName(
2dfa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dfb0 20 20 20 20 20 20 20 20 20 20 4c 69 6e 71 46 69            LinqFi
2dfc0 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f  leName); /* thro
2dfd0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
2dfe0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
2dff0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2e000 6e 20 6c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61  n linqAssemblyNa
2e010 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
2e020 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2e030 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e070 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2e080 20 20 20 20 20 2f 2a 20 4f 50 54 49 4f 4e 41 4c       /* OPTIONAL
2e090 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2e0a0 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c 79   public Assembly
2e0b0 4e 61 6d 65 20 47 65 74 45 66 36 41 73 73 65 6d  Name GetEf6Assem
2e0c0 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  blyName(..      
2e0d0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74            bool t
2e0e0 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20  race..          
2e0f0 20 20 20 20 20 20 29 20 2f 2a 20 74 68 72 6f 77        ) /* throw
2e100 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
2e110 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e120 20 20 20 20 69 66 20 28 49 73 45 66 36 53 75 70      if (IsEf6Sup
2e130 70 6f 72 74 65 64 28 74 72 61 63 65 29 20 26 26  ported(trace) &&
2e140 20 28 65 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d   (ef6AssemblyNam
2e150 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  e == null))..   
2e160 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2e170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e180 20 20 20 20 65 66 36 41 73 73 65 6d 62 6c 79 4e      ef6AssemblyN
2e190 61 6d 65 20 3d 20 41 73 73 65 6d 62 6c 79 4e 61  ame = AssemblyNa
2e1a0 6d 65 2e 47 65 74 41 73 73 65 6d 62 6c 79 4e 61  me.GetAssemblyNa
2e1b0 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
2e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 45 66 36               Ef6
2e1d0 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68  FileName); /* th
2e1e0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2e1f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2e200 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2e210 75 72 6e 20 65 66 36 41 73 73 65 6d 62 6c 79 4e  urn ef6AssemblyN
2e220 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
2e230 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2e240 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2e250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e280 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2e290 20 20 20 20 20 20 2f 2a 20 52 45 51 55 49 52 45        /* REQUIRE
2e2a0 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  D */..          
2e2b0 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c    public Assembl
2e2c0 79 4e 61 6d 65 20 47 65 74 44 65 73 69 67 6e 65  yName GetDesigne
2e2d0 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a  rAssemblyName(..
2e2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e2f0 62 6f 6f 6c 20 74 72 61 63 65 20 2f 2a 20 4e 4f  bool trace /* NO
2e300 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20  T USED */..     
2e310 20 20 20 20 20 20 20 20 20 20 20 29 20 2f 2a 20             ) /* 
2e320 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20  throw */..      
2e330 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e340 20 20 20 20 20 20 20 20 20 69 66 20 28 64 65 73           if (des
2e350 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  ignerAssemblyNam
2e360 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
2e370 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2e380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e390 20 20 20 64 65 73 69 67 6e 65 72 41 73 73 65 6d     designerAssem
2e3a0 62 6c 79 4e 61 6d 65 20 3d 20 41 73 73 65 6d 62  blyName = Assemb
2e3b0 6c 79 4e 61 6d 65 2e 47 65 74 41 73 73 65 6d 62  lyName.GetAssemb
2e3c0 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  lyName(..       
2e3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3e0 20 44 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d   DesignerFileNam
2e3f0 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d  e); /* throw */.
2e400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e410 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2e420 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 73        return des
2e430 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  ignerAssemblyNam
2e440 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2e450 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2e460 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2e470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e4a0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2e4b0 20 20 20 20 2f 2a 20 52 45 51 55 49 52 45 44 20      /* REQUIRED 
2e4c0 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2e4d0 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c 79 4e  public AssemblyN
2e4e0 61 6d 65 20 47 65 74 50 72 6f 76 69 64 65 72 41  ame GetProviderA
2e4f0 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20  ssemblyName(..  
2e500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2e510 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20  ol trace..      
2e520 20 20 20 20 20 20 20 20 20 20 29 20 2f 2a 20 74            ) /* t
2e530 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2e540 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2e550 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55          return U
2e560 73 65 45 66 36 50 72 6f 76 69 64 65 72 28 74 72  seEf6Provider(tr
2e570 61 63 65 29 20 3f 0d 0a 20 20 20 20 20 20 20 20  ace) ?..        
2e580 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 45              GetE
2e590 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 74  f6AssemblyName(t
2e5a0 72 61 63 65 29 20 3a 20 47 65 74 43 6f 72 65 41  race) : GetCoreA
2e5b0 73 73 65 6d 62 6c 79 4e 61 6d 65 28 74 72 61 63  ssemblyName(trac
2e5c0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
2e5d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2e5e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2e5f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e620 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2e630 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
2e640 6e 67 20 47 65 74 43 6f 6e 66 69 67 49 6e 76 61  ng GetConfigInva
2e650 72 69 61 6e 74 4e 61 6d 65 28 0d 0a 20 20 20 20  riantName(..    
2e660 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2e670 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20   trace..        
2e680 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2e690 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2e6a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e6b0 20 47 65 74 49 6e 76 61 72 69 61 6e 74 4e 61 6d   GetInvariantNam
2e6c0 65 28 74 72 61 63 65 29 3b 0d 0a 20 20 20 20 20  e(trace);..     
2e6d0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2e6e0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2e6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2e730 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2e740 63 20 73 74 72 69 6e 67 20 47 65 74 50 72 6f 76  c string GetProv
2e750 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d  iderInvariantNam
2e760 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2e770 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a      bool trace..
2e780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e790 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2e7a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e7b0 20 20 72 65 74 75 72 6e 20 47 65 74 49 6e 76 61    return GetInva
2e7c0 72 69 61 6e 74 4e 61 6d 65 28 74 72 61 63 65 29  riantName(trace)
2e7d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2e7e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e7f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e830 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2e840 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
2e850 20 47 65 74 46 61 63 74 6f 72 79 54 79 70 65 4e   GetFactoryTypeN
2e860 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
2e870 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65        bool trace
2e880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e890 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2e8a0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2e8b0 20 20 20 20 72 65 74 75 72 6e 20 55 73 65 45 66      return UseEf
2e8c0 36 50 72 6f 76 69 64 65 72 28 74 72 61 63 65 29  6Provider(trace)
2e8d0 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ?..            
2e8e0 20 20 20 20 20 20 20 20 45 66 36 46 61 63 74 6f          Ef6Facto
2e8f0 72 79 54 79 70 65 4e 61 6d 65 20 3a 20 46 61 63  ryTypeName : Fac
2e900 74 6f 72 79 54 79 70 65 4e 61 6d 65 3b 0d 0a 20  toryTypeName;.. 
2e910 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2e920 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
2e930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2e970 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
2e980 75 62 6c 69 63 20 76 6f 69 64 20 44 75 6d 70 28  ublic void Dump(
2e990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e9a0 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20    TraceCallback 
2e9b0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 0d 0a 20  traceCallback.. 
2e9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2e9d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2e9e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e9f0 20 69 66 20 28 74 72 61 63 65 43 61 6c 6c 62 61   if (traceCallba
2ea00 63 6b 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ck != null)..   
2ea10 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2ea20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea30 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
2ea40 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
2ea50 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
2ea60 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
2ea70 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 73               "As
2ea80 73 65 6d 62 6c 79 22 2c 20 46 6f 72 44 69 73 70  sembly", ForDisp
2ea90 6c 61 79 28 61 73 73 65 6d 62 6c 79 29 29 2c 0d  lay(assembly)),.
2eaa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2eab0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2eac0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2ead0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eae0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2eaf0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2eb00 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2eb10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2eb20 20 20 20 20 20 20 20 20 20 22 4c 6f 67 46 69 6c           "LogFil
2eb30 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  eName", ForDispl
2eb40 61 79 28 6c 6f 67 46 69 6c 65 4e 61 6d 65 29 29  ay(logFileName))
2eb50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2eb60 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2eb70 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2eb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eb90 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2eba0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2ebb0 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2ebc0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2ebd0 20 20 20 20 20 20 20 20 20 20 20 22 52 65 67 69             "Regi
2ebe0 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 22  stryLogFileName"
2ebf0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2ec00 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
2ec10 73 70 6c 61 79 28 72 65 67 69 73 74 72 79 4c 6f  splay(registryLo
2ec20 67 46 69 6c 65 4e 61 6d 65 29 29 2c 0d 0a 20 20  gFileName)),..  
2ec30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ec40 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2ec50 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2ec60 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2ec70 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2ec80 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2ec90 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2eca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ecb0 20 20 20 20 20 20 22 44 69 72 65 63 74 6f 72 79        "Directory
2ecc0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64 69  ", ForDisplay(di
2ecd0 72 65 63 74 6f 72 79 29 29 2c 0d 0a 20 20 20 20  rectory)),..    
2ece0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ecf0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2ed00 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2ed10 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2ed20 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2ed30 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2ed40 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2ed50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed60 20 20 20 20 22 43 6f 72 65 46 69 6c 65 4e 61 6d      "CoreFileNam
2ed70 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 63  e", ForDisplay(c
2ed80 6f 72 65 46 69 6c 65 4e 61 6d 65 29 29 2c 0d 0a  oreFileName)),..
2ed90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eda0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2edb0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2edc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2edd0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2ede0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2edf0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2ee00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee10 20 20 20 20 20 20 20 20 22 4c 69 6e 71 46 69 6c          "LinqFil
2ee20 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  eName", ForDispl
2ee30 61 79 28 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29  ay(linqFileName)
2ee40 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2ee50 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2ee60 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2ee70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee80 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2ee90 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2eea0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2eeb0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2eec0 20 20 20 20 20 20 20 20 20 20 20 20 22 45 66 36              "Ef6
2eed0 46 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69  FileName", ForDi
2eee0 73 70 6c 61 79 28 65 66 36 46 69 6c 65 4e 61 6d  splay(ef6FileNam
2eef0 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e)),..          
2ef00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2ef10 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2ef20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ef30 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2ef40 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2ef50 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2ef60 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2ef70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 44                "D
2ef80 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 22  esignerFileName"
2ef90 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64 65 73  , ForDisplay(des
2efa0 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 29 29 2c  ignerFileName)),
2efb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2efc0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2efd0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2efe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eff0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2f000 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2f010 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2f020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f030 20 20 20 20 20 20 20 20 20 20 22 52 65 67 69 73            "Regis
2f040 74 72 79 56 65 72 73 69 6f 6e 22 2c 20 46 6f 72  tryVersion", For
2f050 44 69 73 70 6c 61 79 28 72 65 67 69 73 74 72 79  Display(registry
2f060 56 65 72 73 69 6f 6e 29 29 2c 0d 0a 20 20 20 20  Version)),..    
2f070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f080 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2f090 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2f0a0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2f0b0 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2f0c0 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2f0d0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2f0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0f0 20 20 20 20 22 43 6f 6e 66 69 67 56 65 72 73 69      "ConfigVersi
2f100 6f 6e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  on", ForDisplay(
2f110 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 29 29 2c  configVersion)),
2f120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f130 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2f140 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2f150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f160 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2f170 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2f180 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2f190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f1a0 20 20 20 20 20 20 20 20 20 20 22 56 73 56 65 72            "VsVer
2f1b0 73 69 6f 6e 53 75 66 66 69 78 22 2c 20 46 6f 72  sionSuffix", For
2f1c0 44 69 73 70 6c 61 79 28 76 73 56 65 72 73 69 6f  Display(vsVersio
2f1d0 6e 53 75 66 66 69 78 29 29 2c 0d 0a 20 20 20 20  nSuffix)),..    
2f1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f1f0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2f200 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2f210 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2f220 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2f230 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2f240 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2f250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f260 20 20 20 20 22 44 65 62 75 67 46 6f 72 6d 61 74      "DebugFormat
2f270 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64 65  ", ForDisplay(de
2f280 62 75 67 46 6f 72 6d 61 74 29 29 2c 0d 0a 20 20  bugFormat)),..  
2f290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f2a0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2f2b0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2f2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2f2d0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2f2e0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2f2f0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2f300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f310 20 20 20 20 20 20 22 54 72 61 63 65 46 6f 72 6d        "TraceForm
2f320 61 74 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  at", ForDisplay(
2f330 74 72 61 63 65 46 6f 72 6d 61 74 29 29 2c 0d 0a  traceFormat)),..
2f340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f350 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2f360 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2f370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f380 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2f390 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2f3a0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2f3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f3c0 20 20 20 20 20 20 20 20 22 49 6e 73 74 61 6c 6c          "Install
2f3d0 46 6c 61 67 73 22 2c 20 46 6f 72 44 69 73 70 6c  Flags", ForDispl
2f3e0 61 79 28 69 6e 73 74 61 6c 6c 46 6c 61 67 73 29  ay(installFlags)
2f3f0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2f400 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2f410 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2f420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f430 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2f440 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2f450 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2f460 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2f470 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 6f              "Pro
2f480 76 69 64 65 72 46 6c 61 67 73 22 2c 20 46 6f 72  viderFlags", For
2f490 44 69 73 70 6c 61 79 28 70 72 6f 76 69 64 65 72  Display(provider
2f4a0 46 6c 61 67 73 29 29 2c 0d 0a 20 20 20 20 20 20  Flags)),..      
2f4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4c0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2f4d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f4e0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2f4f0 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2f500 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2f510 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2f520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f530 20 20 22 44 65 62 75 67 50 72 69 6f 72 69 74 79    "DebugPriority
2f540 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64 65  ", ForDisplay(de
2f550 62 75 67 50 72 69 6f 72 69 74 79 29 29 2c 0d 0a  bugPriority)),..
2f560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f570 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2f580 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2f590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f5a0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2f5b0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2f5c0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2f5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f5e0 20 20 20 20 20 20 20 20 22 54 72 61 63 65 50 72          "TracePr
2f5f0 69 6f 72 69 74 79 22 2c 20 46 6f 72 44 69 73 70  iority", ForDisp
2f600 6c 61 79 28 74 72 61 63 65 50 72 69 6f 72 69 74  lay(tracePriorit
2f610 79 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  y)),..          
2f620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2f630 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2f640 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f650 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2f660 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2f670 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2f680 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2f690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50                "P
2f6a0 65 72 55 73 65 72 22 2c 20 46 6f 72 44 69 73 70  erUser", ForDisp
2f6b0 6c 61 79 28 70 65 72 55 73 65 72 29 29 2c 0d 0a  lay(perUser)),..
2f6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f6d0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2f6e0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f700 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2f710 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2f720 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2f730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f740 20 20 20 20 20 20 20 20 22 49 6e 73 74 61 6c 6c          "Install
2f750 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 69 6e  ", ForDisplay(in
2f760 73 74 61 6c 6c 29 29 2c 0d 0a 20 20 20 20 20 20  stall)),..      
2f770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f780 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2f790 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f7a0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2f7b0 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2f7c0 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2f7d0 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2f7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f7f0 20 20 22 57 6f 77 36 34 22 2c 20 46 6f 72 44 69    "Wow64", ForDi
2f800 73 70 6c 61 79 28 77 6f 77 36 34 29 29 2c 0d 0a  splay(wow64)),..
2f810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f820 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2f830 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2f840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f850 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2f860 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2f870 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2f880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f890 20 20 20 20 20 20 20 20 22 4e 6f 52 75 6e 74 69          "NoRunti
2f8a0 6d 65 56 65 72 73 69 6f 6e 22 2c 20 46 6f 72 44  meVersion", ForD
2f8b0 69 73 70 6c 61 79 28 6e 6f 52 75 6e 74 69 6d 65  isplay(noRuntime
2f8c0 56 65 72 73 69 6f 6e 29 29 2c 0d 0a 20 20 20 20  Version)),..    
2f8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f8e0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2f8f0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2f900 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2f910 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2f920 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2f930 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2f940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f950 20 20 20 20 22 4e 6f 44 65 73 6b 74 6f 70 22 2c      "NoDesktop",
2f960 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 44 65   ForDisplay(noDe
2f970 73 6b 74 6f 70 29 29 2c 0d 0a 20 20 20 20 20 20  sktop)),..      
2f980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f990 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2f9a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2f9b0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2f9c0 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2f9d0 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2f9e0 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2f9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa00 20 20 22 4e 6f 43 6f 6d 70 61 63 74 22 2c 20 46    "NoCompact", F
2fa10 6f 72 44 69 73 70 6c 61 79 28 6e 6f 43 6f 6d 70  orDisplay(noComp
2fa20 61 63 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  act)),..        
2fa30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa40 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2fa50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2fa60 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2fa70 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2fa80 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2fa90 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2faa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fab0 22 4e 6f 4e 65 74 46 78 32 30 22 2c 20 46 6f 72  "NoNetFx20", For
2fac0 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 32  Display(noNetFx2
2fad0 30 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  0)),..          
2fae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2faf0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2fb00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fb10 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2fb20 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2fb30 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2fb40 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2fb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
2fb60 6f 4e 65 74 46 78 33 35 22 2c 20 46 6f 72 44 69  oNetFx35", ForDi
2fb70 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 33 35 29  splay(noNetFx35)
2fb80 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2fb90 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2fba0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2fbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fbc0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2fbd0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2fbe0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2fbf0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2fc00 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e              "NoN
2fc10 65 74 46 78 34 30 22 2c 20 46 6f 72 44 69 73 70  etFx40", ForDisp
2fc20 6c 61 79 28 6e 6f 4e 65 74 46 78 34 30 29 29 2c  lay(noNetFx40)),
2fc30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fc40 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2fc50 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2fc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc70 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2fc80 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2fc90 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2fca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fcb0 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74            "NoNet
2fcc0 46 78 34 35 22 2c 20 46 6f 72 44 69 73 70 6c 61  Fx45", ForDispla
2fcd0 79 28 6e 6f 4e 65 74 46 78 34 35 29 29 2c 0d 0a  y(noNetFx45)),..
2fce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fcf0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2fd00 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2fd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2fd20 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2fd30 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2fd40 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2fd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd60 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
2fd70 34 35 31 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  451", ForDisplay
2fd80 28 6e 6f 4e 65 74 46 78 34 35 31 29 29 2c 0d 0a  (noNetFx451)),..
2fd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fda0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2fdb0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2fdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2fdd0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2fde0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2fdf0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2fe00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe10 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
2fe20 34 35 32 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  452", ForDisplay
2fe30 28 6e 6f 4e 65 74 46 78 34 35 32 29 29 2c 0d 0a  (noNetFx452)),..
2fe40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe50 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2fe60 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2fe70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2fe80 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2fe90 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2fea0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2feb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fec0 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
2fed0 34 36 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  46", ForDisplay(
2fee0 6e 6f 4e 65 74 46 78 34 36 29 29 2c 0d 0a 20 20  noNetFx46)),..  
2fef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff00 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2ff10 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2ff20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2ff30 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2ff40 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2ff50 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2ff60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff70 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78 34 36        "NoNetFx46
2ff80 31 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  1", ForDisplay(n
2ff90 6f 4e 65 74 46 78 34 36 31 29 29 2c 0d 0a 20 20  oNetFx461)),..  
2ffa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ffb0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2ffc0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2ffd0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2ffe0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2fff0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
30000 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
30010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30020 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78 34 36        "NoNetFx46
30030 32 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  2", ForDisplay(n
30040 6f 4e 65 74 46 78 34 36 32 29 29 2c 0d 0a 20 20  oNetFx462)),..  
30050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30060 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
30070 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
30080 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
30090 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
300a0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
300b0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
300c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
300d0 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78 34 37        "NoNetFx47
300e0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f  ", ForDisplay(no
300f0 4e 65 74 46 78 34 37 29 29 2c 0d 0a 20 20 20 20  NetFx47)),..    
30100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30110 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
30120 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
30130 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
30140 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
30150 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
30160 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
30170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30180 20 20 20 20 22 4e 6f 4e 65 74 46 78 34 37 31 22      "NoNetFx471"
30190 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 4e  , ForDisplay(noN
301a0 65 74 46 78 34 37 31 29 29 2c 0d 0a 20 20 20 20  etFx471)),..    
301b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301c0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
301d0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
301e0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
301f0 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
30200 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
30210 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
30220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30230 20 20 20 20 22 4e 6f 56 73 32 30 30 35 22 2c 20      "NoVs2005", 
30240 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32  ForDisplay(noVs2
30250 30 30 35 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  005)),..        
30260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30270 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30280 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30290 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
302a0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
302b0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
302c0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
302d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302e0 22 4e 6f 56 73 32 30 30 38 22 2c 20 46 6f 72 44  "NoVs2008", ForD
302f0 69 73 70 6c 61 79 28 6e 6f 56 73 32 30 30 38 29  isplay(noVs2008)
30300 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
30310 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
30320 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
30330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30340 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
30350 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30360 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
30370 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30380 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 56              "NoV
30390 73 32 30 31 30 22 2c 20 46 6f 72 44 69 73 70 6c  s2010", ForDispl
303a0 61 79 28 6e 6f 56 73 32 30 31 30 29 29 2c 0d 0a  ay(noVs2010)),..
303b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303c0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
303d0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
303e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
303f0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
30400 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
30410 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
30420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30430 20 20 20 20 20 20 20 20 22 4e 6f 56 73 32 30 31          "NoVs201
30440 32 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  2", ForDisplay(n
30450 6f 56 73 32 30 31 32 29 29 2c 0d 0a 20 20 20 20  oVs2012)),..    
30460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30470 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
30480 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
30490 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
304a0 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
304b0 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
304c0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
304d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304e0 20 20 20 20 22 4e 6f 56 73 32 30 31 33 22 2c 20      "NoVs2013", 
304f0 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32  ForDisplay(noVs2
30500 30 31 33 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  013)),..        
30510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30520 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30530 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30540 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30550 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30560 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30570 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30590 22 4e 6f 56 73 32 30 31 35 22 2c 20 46 6f 72 44  "NoVs2015", ForD
305a0 69 73 70 6c 61 79 28 6e 6f 56 73 32 30 31 35 29  isplay(noVs2015)
305b0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
305c0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
305d0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
305e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
305f0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
30600 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30610 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
30620 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30630 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 56              "NoV
30640 73 32 30 31 37 22 2c 20 46 6f 72 44 69 73 70 6c  s2017", ForDispl
30650 61 79 28 6e 6f 56 73 32 30 31 37 29 29 2c 0d 0a  ay(noVs2017)),..
30660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30670 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
30680 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
30690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
306a0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
306b0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
306c0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
306d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
306e0 20 20 20 20 20 20 20 20 22 4e 6f 54 72 61 63 65          "NoTrace
306f0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f  ", ForDisplay(no
30700 54 72 61 63 65 29 29 2c 0d 0a 20 20 20 20 20 20  Trace)),..      
30710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30720 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
30730 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
30740 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
30750 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
30760 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
30770 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
30780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30790 20 20 22 4e 6f 43 6f 6e 73 6f 6c 65 22 2c 20 46    "NoConsole", F
307a0 6f 72 44 69 73 70 6c 61 79 28 6e 6f 43 6f 6e 73  orDisplay(noCons
307b0 6f 6c 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ole)),..        
307c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307d0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
307e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
307f0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30800 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30810 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30820 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30840 22 4e 6f 4c 6f 67 22 2c 20 46 6f 72 44 69 73 70  "NoLog", ForDisp
30850 6c 61 79 28 6e 6f 4c 6f 67 29 29 2c 0d 0a 20 20  lay(noLog)),..  
30860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30870 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
30880 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
30890 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
308a0 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
308b0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
308c0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
308d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308e0 20 20 20 20 20 20 22 54 68 72 6f 77 4f 6e 4d 69        "ThrowOnMi
308f0 73 73 69 6e 67 22 2c 20 46 6f 72 44 69 73 70 6c  ssing", ForDispl
30900 61 79 28 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e  ay(throwOnMissin
30910 67 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  g)),..          
30920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
30930 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
30940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30950 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
30960 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
30970 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
30980 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
30990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 57                "W
309a0 68 61 74 49 66 22 2c 20 46 6f 72 44 69 73 70 6c  hatIf", ForDispl
309b0 61 79 28 77 68 61 74 49 66 29 29 2c 0d 0a 20 20  ay(whatIf)),..  
309c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309d0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
309e0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
309f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
30a00 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
30a10 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
30a20 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
30a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a40 20 20 20 20 20 20 22 44 65 62 75 67 22 2c 20 46        "Debug", F
30a50 6f 72 44 69 73 70 6c 61 79 28 64 65 62 75 67 29  orDisplay(debug)
30a60 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
30a70 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
30a80 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
30a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30aa0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
30ab0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30ac0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
30ad0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30ae0 20 20 20 20 20 20 20 20 20 20 20 20 22 56 65 72              "Ver
30af0 62 6f 73 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  bose", ForDispla
30b00 79 28 76 65 72 62 6f 73 65 29 29 2c 0d 0a 20 20  y(verbose)),..  
30b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
30b30 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
30b40 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
30b50 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
30b60 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
30b70 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
30b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b90 20 20 20 20 20 20 22 43 6f 6e 66 69 72 6d 22 2c        "Confirm",
30ba0 20 46 6f 72 44 69 73 70 6c 61 79 28 63 6f 6e 66   ForDisplay(conf
30bb0 69 72 6d 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  irm)),..        
30bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30bd0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30be0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30bf0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
30c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c30 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
30c40 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73            if (as
30c50 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 0d  sembly != null).
30c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30c70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
30c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c90 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
30ca0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
30cb0 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
30cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 73               "As
30ce0 73 65 6d 62 6c 79 54 69 74 6c 65 22 2c 0d 0a 20  semblyTitle",.. 
30cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d00 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
30d10 73 70 6c 61 79 28 47 65 74 41 73 73 65 6d 62 6c  splay(GetAssembl
30d20 79 54 69 74 6c 65 28 61 73 73 65 6d 62 6c 79 29  yTitle(assembly)
30d30 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
30d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d50 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
30d60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
30d70 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
30d80 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67  eCallback(String
30d90 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56  .Format(NameAndV
30da0 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  alueFormat,..   
30db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30dc0 20 20 20 20 20 20 20 20 20 22 41 73 73 65 6d 62           "Assemb
30dd0 6c 79 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 22  lyConfiguration"
30de0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
30e00 6f 72 44 69 73 70 6c 61 79 28 47 65 74 41 73 73  orDisplay(GetAss
30e10 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72 61 74 69  emblyConfigurati
30e20 6f 6e 28 61 73 73 65 6d 62 6c 79 29 29 29 2c 0d  on(assembly))),.
30e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30e40 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
30e50 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20  ceCategory);..  
30e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e70 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
30e80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
30e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30ec0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
30ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
30ee0 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
30ef0 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
30f00 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
30f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30f20 20 20 20 20 20 20 20 22 49 73 53 79 73 74 65 6d         "IsSystem
30f30 45 66 36 41 73 73 65 6d 62 6c 79 41 76 61 69 6c  Ef6AssemblyAvail
30f40 61 62 6c 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  able", ForDispla
30f50 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
30f60 20 20 20 20 20 20 20 20 20 20 20 20 49 73 53 79              IsSy
30f70 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 41  stemEf6AssemblyA
30f80 76 61 69 6c 61 62 6c 65 28 66 61 6c 73 65 29 29  vailable(false))
30f90 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
30fa0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
30fb0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
30fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30fd0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
30fe0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30ff0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
31000 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
31010 20 20 20 20 20 20 20 20 20 20 20 20 22 49 73 53              "IsS
31020 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79  ystemEf6Assembly
31030 47 6c 6f 62 61 6c 22 2c 20 46 6f 72 44 69 73 70  Global", ForDisp
31040 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lay(..          
31050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 73                Is
31060 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c  SystemEf6Assembl
31070 79 47 6c 6f 62 61 6c 28 29 29 29 2c 0d 0a 20 20  yGlobal())),..  
31080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31090 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
310a0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
310b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
310c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
31100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31110 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
31120 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
31130 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
31140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31150 20 20 20 20 20 20 20 20 20 22 49 73 4c 69 6e 71           "IsLinq
31160 53 75 70 70 6f 72 74 65 64 22 2c 20 46 6f 72 44  Supported", ForD
31170 69 73 70 6c 61 79 28 49 73 4c 69 6e 71 53 75 70  isplay(IsLinqSup
31180 70 6f 72 74 65 64 28 66 61 6c 73 65 29 29 29 2c  ported(false))),
31190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
311a0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
311b0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
311c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
311d0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
311e0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
311f0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
31200 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31210 20 20 20 20 20 20 20 20 20 20 22 49 73 45 66 36            "IsEf6
31220 53 75 70 70 6f 72 74 65 64 22 2c 20 46 6f 72 44  Supported", ForD
31230 69 73 70 6c 61 79 28 49 73 45 66 36 53 75 70 70  isplay(IsEf6Supp
31240 6f 72 74 65 64 28 66 61 6c 73 65 29 29 29 2c 0d  orted(false))),.
31250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31260 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
31270 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
31280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31290 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
312a0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
312b0 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
312c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
312d0 20 20 20 20 20 20 20 20 20 22 49 73 45 66 36 41           "IsEf6A
312e0 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 22 2c 20  ssemblyGlobal", 
312f0 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20  ForDisplay(..   
31300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31310 20 20 20 20 20 49 73 45 66 36 41 73 73 65 6d 62       IsEf6Assemb
31320 6c 79 47 6c 6f 62 61 6c 28 29 29 29 2c 0d 0a 20  lyGlobal())),.. 
31330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31340 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
31350 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
31360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
31370 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
31380 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
31390 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
313a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
313b0 20 20 20 20 20 20 20 22 55 73 65 45 66 36 50 72         "UseEf6Pr
313c0 6f 76 69 64 65 72 22 2c 20 46 6f 72 44 69 73 70  ovider", ForDisp
313d0 6c 61 79 28 55 73 65 45 66 36 50 72 6f 76 69 64  lay(UseEf6Provid
313e0 65 72 28 66 61 6c 73 65 29 29 29 2c 0d 0a 20 20  er(false))),..  
313f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31400 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
31410 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
31420 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
31430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31460 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
31470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31480 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
31490 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
314a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314b0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
314c0 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
314d0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
314e0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
314f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31500 20 22 47 65 74 43 6f 72 65 41 73 73 65 6d 62 6c   "GetCoreAssembl
31510 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c  yName", ForDispl
31520 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay(..           
31530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31540 20 47 65 74 43 6f 72 65 41 73 73 65 6d 62 6c 79   GetCoreAssembly
31550 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74  Name(false))), t
31560 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
31570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31580 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
31590 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
315a0 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
315b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
315d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
315e0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
315f0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
31600 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
31610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31620 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65 74              "Get
31630 43 6f 72 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65  CoreAssemblyName
31640 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65 29  ", ForDisplay(e)
31650 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
31660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31670 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
31680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31690 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
316a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
316b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
316e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
316f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31700 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
31710 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
31720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31730 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
31740 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
31750 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
31760 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
31770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31780 20 20 22 47 65 74 4c 69 6e 71 41 73 73 65 6d 62    "GetLinqAssemb
31790 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70  lyName", ForDisp
317a0 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lay(..          
317b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
317c0 20 20 47 65 74 4c 69 6e 71 41 73 73 65 6d 62 6c    GetLinqAssembl
317d0 79 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20  yName(false))), 
317e0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
317f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31800 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
31810 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
31820 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
31830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31840 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31860 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
31870 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
31880 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
31890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
318a0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65               "Ge
318b0 74 4c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d  tLinqAssemblyNam
318c0 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65  e", ForDisplay(e
318d0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
318e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318f0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
31900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31910 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
31920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
31930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
31970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31980 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
31990 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
319a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319b0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
319c0 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
319d0 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
319e0 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
319f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a00 20 20 20 22 47 65 74 45 66 36 41 73 73 65 6d 62     "GetEf6Assemb
31a10 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70  lyName", ForDisp
31a20 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lay(..          
31a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a40 20 20 47 65 74 45 66 36 41 73 73 65 6d 62 6c 79    GetEf6Assembly
31a50 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74  Name(false))), t
31a60 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
31a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a80 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
31a90 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
31aa0 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
31ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ac0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
31ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
31ae0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
31af0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
31b00 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
31b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b20 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65 74              "Get
31b30 45 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22  Ef6AssemblyName"
31b40 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65 29 29  , ForDisplay(e))
31b50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
31b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
31b70 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
31b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
31ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
31bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31be0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
31bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c00 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
31c10 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
31c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c30 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
31c40 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
31c50 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
31c60 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
31c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c80 20 22 47 65 74 44 65 73 69 67 6e 65 72 41 73 73   "GetDesignerAss
31c90 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44  emblyName", ForD
31ca0 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
31cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31cc0 20 20 20 20 20 47 65 74 44 65 73 69 67 6e 65 72       GetDesigner
31cd0 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 66 61 6c  AssemblyName(fal
31ce0 73 65 29 29 29 2c 20 74 72 61 63 65 43 61 74 65  se))), traceCate
31cf0 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
31d00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
31d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
31d30 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20  ion e)..        
31d40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
31d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d60 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
31d70 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
31d80 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
31d90 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
31da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31db0 20 20 20 20 22 47 65 74 44 65 73 69 67 6e 65 72      "GetDesigner
31dc0 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46  AssemblyName", F
31dd0 6f 72 44 69 73 70 6c 61 79 28 65 29 29 2c 0d 0a  orDisplay(e)),..
31de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31df0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
31e00 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
31e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31e20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
31e30 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
31e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e70 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
31e80 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
31e90 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
31ea0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
31eb0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
31ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ed0 20 20 20 20 20 20 22 47 65 74 49 6e 76 61 72 69        "GetInvari
31ee0 61 6e 74 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73  antName", ForDis
31ef0 70 6c 61 79 28 47 65 74 49 6e 76 61 72 69 61 6e  play(GetInvarian
31f00 74 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  tName(..        
31f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f20 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43  false))), traceC
31f30 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
31f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f50 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
31f60 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
31f70 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
31f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31f90 20 20 20 20 20 20 20 20 20 20 22 47 65 74 43 6f            "GetCo
31fa0 6e 66 69 67 49 6e 76 61 72 69 61 6e 74 4e 61 6d  nfigInvariantNam
31fb0 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d  e", ForDisplay(.
31fc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31fd0 20 20 20 20 20 20 20 20 20 47 65 74 43 6f 6e 66           GetConf
31fe0 69 67 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 28  igInvariantName(
31ff0 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43  false))), traceC
32000 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
32010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32020 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
32030 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
32040 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
32050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32060 20 20 20 20 20 20 20 20 20 20 22 47 65 74 50 72            "GetPr
32070 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e  oviderInvariantN
32080 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame", ForDisplay
32090 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
320a0 20 20 20 20 20 20 20 20 20 20 20 47 65 74 50 72             GetPr
320b0 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e  oviderInvariantN
320c0 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74 72  ame(false))), tr
320d0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
320e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
320f0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
32100 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
32110 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
32120 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
32130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47                "G
32140 65 74 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d  etFactoryTypeNam
32150 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d  e", ForDisplay(.
32160 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32170 20 20 20 20 20 20 20 20 20 47 65 74 46 61 63 74           GetFact
32180 6f 72 79 54 79 70 65 4e 61 6d 65 28 66 61 6c 73  oryTypeName(fals
32190 65 29 29 29 2c 20 74 72 61 63 65 43 61 74 65 67  e))), traceCateg
321a0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
321b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
321c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
32200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32210 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
32220 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
32230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32240 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
32250 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
32260 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
32270 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
32280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32290 20 22 47 65 74 50 72 6f 76 69 64 65 72 41 73 73   "GetProviderAss
322a0 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44  emblyName", ForD
322b0 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
322c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
322d0 20 20 20 20 20 47 65 74 50 72 6f 76 69 64 65 72       GetProvider
322e0 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 66 61 6c  AssemblyName(fal
322f0 73 65 29 29 29 2c 20 74 72 61 63 65 43 61 74 65  se))), traceCate
32300 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
32310 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
32320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32330 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
32340 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20  ion e)..        
32350 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
32360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32370 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
32380 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
32390 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
323a0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
323b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
323c0 20 20 20 20 22 47 65 74 50 72 6f 76 69 64 65 72      "GetProvider
323d0 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46  AssemblyName", F
323e0 6f 72 44 69 73 70 6c 61 79 28 65 29 29 2c 0d 0a  orDisplay(e)),..
323f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32400 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
32410 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
32420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32430 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32440 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
32450 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
32460 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
32470 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
32480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
324a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
324b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
324c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
324d0 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72  region Public Pr
324e0 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20  operties..      
324f0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 41 73        private As
32500 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79 3b  sembly assembly;
32510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
32520 62 6c 69 63 20 41 73 73 65 6d 62 6c 79 20 41 73  blic Assembly As
32530 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20  sembly..        
32540 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32550 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
32560 75 72 6e 20 61 73 73 65 6d 62 6c 79 3b 20 7d 0d  urn assembly; }.
32570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32580 20 73 65 74 20 7b 20 61 73 73 65 6d 62 6c 79 20   set { assembly 
32590 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
325a0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
325b0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
325c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
325f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
32600 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
32610 61 74 65 20 73 74 72 69 6e 67 20 6c 6f 67 46 69  ate string logFi
32620 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  leName;..       
32630 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
32640 6e 67 20 4c 6f 67 46 69 6c 65 4e 61 6d 65 0d 0a  ng LogFileName..
32650 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
32660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
32670 65 74 20 7b 20 72 65 74 75 72 6e 20 6c 6f 67 46  et { return logF
32680 69 6c 65 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20  ileName; }..    
32690 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
326a0 7b 20 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20  { logFileName = 
326b0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
326c0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
326d0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
326e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
326f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
32720 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
32730 65 20 73 74 72 69 6e 67 20 72 65 67 69 73 74 72  e string registr
32740 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20  yLogFileName;.. 
32750 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
32760 63 20 73 74 72 69 6e 67 20 52 65 67 69 73 74 72  c string Registr
32770 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 0d 0a 20 20  yLogFileName..  
32780 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32790 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
327a0 20 7b 20 72 65 74 75 72 6e 20 72 65 67 69 73 74   { return regist
327b0 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 3b 20 7d  ryLogFileName; }
327c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
327d0 20 20 73 65 74 20 7b 20 72 65 67 69 73 74 72 79    set { registry
327e0 4c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20 76 61  LogFileName = va
327f0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
32800 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
32810 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32850 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
32860 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
32870 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79  string directory
32880 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
32890 75 62 6c 69 63 20 73 74 72 69 6e 67 20 44 69 72  ublic string Dir
328a0 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  ectory..        
328b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
328c0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
328d0 75 72 6e 20 64 69 72 65 63 74 6f 72 79 3b 20 7d  urn directory; }
328e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
328f0 20 20 73 65 74 20 7b 20 64 69 72 65 63 74 6f 72    set { director
32900 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  y = value; }..  
32910 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
32920 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
32930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
32970 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
32980 69 76 61 74 65 20 73 74 72 69 6e 67 20 63 6f 72  ivate string cor
32990 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  eFileName;..    
329a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
329b0 74 72 69 6e 67 20 43 6f 72 65 46 69 6c 65 4e 61  tring CoreFileNa
329c0 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
329d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
329e0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
329f0 63 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 20 7d 0d  coreFileName; }.
32a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32a10 20 73 65 74 20 7b 20 63 6f 72 65 46 69 6c 65 4e   set { coreFileN
32a20 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ame = value; }..
32a30 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32aa0 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 6c  private string l
32ab0 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  inqFileName;..  
32ac0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
32ad0 20 73 74 72 69 6e 67 20 4c 69 6e 71 46 69 6c 65   string LinqFile
32ae0 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
32af0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32b00 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
32b10 6e 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 20  n linqFileName; 
32b20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
32b30 20 20 20 73 65 74 20 7b 20 6c 69 6e 71 46 69 6c     set { linqFil
32b40 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d  eName = value; }
32b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
32b60 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32bb0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
32bc0 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
32bd0 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20   ef6FileName;.. 
32be0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
32bf0 63 20 73 74 72 69 6e 67 20 45 66 36 46 69 6c 65  c string Ef6File
32c00 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
32c10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32c20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
32c30 6e 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b 20 7d  n ef6FileName; }
32c40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
32c50 20 20 73 65 74 20 7b 20 65 66 36 46 69 6c 65 4e    set { ef6FileN
32c60 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ame = value; }..
32c70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32c80 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32cd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32ce0 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 64  private string d
32cf0 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 3b  esignerFileName;
32d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
32d10 62 6c 69 63 20 73 74 72 69 6e 67 20 44 65 73 69  blic string Desi
32d20 67 6e 65 72 46 69 6c 65 4e 61 6d 65 0d 0a 20 20  gnerFileName..  
32d30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32d40 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
32d50 20 7b 20 72 65 74 75 72 6e 20 64 65 73 69 67 6e   { return design
32d60 65 72 46 69 6c 65 4e 61 6d 65 3b 20 7d 0d 0a 20  erFileName; }.. 
32d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
32d80 65 74 20 7b 20 64 65 73 69 67 6e 65 72 46 69 6c  et { designerFil
32d90 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d  eName = value; }
32da0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
32db0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
32dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32e00 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
32e10 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
32e20 20 72 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e   registryVersion
32e30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
32e40 75 62 6c 69 63 20 73 74 72 69 6e 67 20 52 65 67  ublic string Reg
32e50 69 73 74 72 79 56 65 72 73 69 6f 6e 0d 0a 20 20  istryVersion..  
32e60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32e70 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
32e80 20 7b 20 72 65 74 75 72 6e 20 72 65 67 69 73 74   { return regist
32e90 72 79 56 65 72 73 69 6f 6e 3b 20 7d 0d 0a 20 20  ryVersion; }..  
32ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
32eb0 74 20 7b 20 72 65 67 69 73 74 72 79 56 65 72 73  t { registryVers
32ec0 69 6f 6e 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ion = value; }..
32ed0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
32ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32f30 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32f40 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 63  private string c
32f50 6f 6e 66 69 67 56 65 72 73 69 6f 6e 3b 0d 0a 20  onfigVersion;.. 
32f60 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
32f70 63 20 73 74 72 69 6e 67 20 43 6f 6e 66 69 67 56  c string ConfigV
32f80 65 72 73 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  ersion..        
32f90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32fa0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
32fb0 75 72 6e 20 63 6f 6e 66 69 67 56 65 72 73 69 6f  urn configVersio
32fc0 6e 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  n; }..          
32fd0 20 20 20 20 20 20 73 65 74 20 7b 20 63 6f 6e 66        set { conf
32fe0 69 67 56 65 72 73 69 6f 6e 20 3d 20 76 61 6c 75  igVersion = valu
32ff0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
33000 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
33010 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33050 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33060 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
33070 72 69 6e 67 20 76 73 56 65 72 73 69 6f 6e 53 75  ring vsVersionSu
33080 66 66 69 78 3b 0d 0a 20 20 20 20 20 20 20 20 20  ffix;..         
33090 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
330a0 20 56 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78   VsVersionSuffix
330b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
330c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
330d0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 76 73   get { return vs
330e0 56 65 72 73 69 6f 6e 53 75 66 66 69 78 3b 20 7d  VersionSuffix; }
330f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33100 20 20 73 65 74 20 7b 20 76 73 56 65 72 73 69 6f    set { vsVersio
33110 6e 53 75 66 66 69 78 20 3d 20 76 61 6c 75 65 3b  nSuffix = value;
33120 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33130 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33140 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33180 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
33190 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
331a0 6e 67 20 64 65 62 75 67 46 6f 72 6d 61 74 3b 0d  ng debugFormat;.
331b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
331c0 6c 69 63 20 73 74 72 69 6e 67 20 44 65 62 75 67  lic string Debug
331d0 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20  Format..        
331e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
331f0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
33200 75 72 6e 20 64 65 62 75 67 46 6f 72 6d 61 74 3b  urn debugFormat;
33210 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33220 20 20 20 20 73 65 74 20 7b 20 64 65 62 75 67 46      set { debugF
33230 6f 72 6d 61 74 20 3d 20 76 61 6c 75 65 3b 20 7d  ormat = value; }
33240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
33250 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
33260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
332a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
332b0 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
332c0 20 74 72 61 63 65 46 6f 72 6d 61 74 3b 0d 0a 20   traceFormat;.. 
332d0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
332e0 63 20 73 74 72 69 6e 67 20 54 72 61 63 65 46 6f  c string TraceFo
332f0 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20 20 20  rmat..          
33300 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33310 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
33320 6e 20 74 72 61 63 65 46 6f 72 6d 61 74 3b 20 7d  n traceFormat; }
33330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33340 20 20 73 65 74 20 7b 20 74 72 61 63 65 46 6f 72    set { traceFor
33350 6d 61 74 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  mat = value; }..
33360 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
33370 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
33380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
333a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
333b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
333c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
333d0 70 72 69 76 61 74 65 20 49 6e 73 74 61 6c 6c 46  private InstallF
333e0 6c 61 67 73 20 69 6e 73 74 61 6c 6c 46 6c 61 67  lags installFlag
333f0 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s;..            
33400 70 75 62 6c 69 63 20 49 6e 73 74 61 6c 6c 46 6c  public InstallFl
33410 61 67 73 20 49 6e 73 74 61 6c 6c 46 6c 61 67 73  ags InstallFlags
33420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
33430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33440 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 69 6e   get { return in
33450 73 74 61 6c 6c 46 6c 61 67 73 3b 20 7d 0d 0a 20  stallFlags; }.. 
33460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
33470 65 74 20 7b 20 69 6e 73 74 61 6c 6c 46 6c 61 67  et { installFlag
33480 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  s = value; }..  
33490 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
334a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
334b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
334c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
334d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
334e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
334f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
33500 69 76 61 74 65 20 50 72 6f 76 69 64 65 72 46 6c  ivate ProviderFl
33510 61 67 73 20 70 72 6f 76 69 64 65 72 46 6c 61 67  ags providerFlag
33520 73 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s;..            
33530 70 75 62 6c 69 63 20 50 72 6f 76 69 64 65 72 46  public ProviderF
33540 6c 61 67 73 20 50 72 6f 76 69 64 65 72 46 6c 61  lags ProviderFla
33550 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  gs..            
33560 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
33570 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
33580 70 72 6f 76 69 64 65 72 46 6c 61 67 73 3b 20 7d  providerFlags; }
33590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
335a0 20 20 73 65 74 20 7b 20 70 72 6f 76 69 64 65 72    set { provider
335b0 46 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b 20 7d  Flags = value; }
335c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
335d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
335e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
335f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33620 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
33630 20 20 70 72 69 76 61 74 65 20 54 72 61 63 65 50    private TraceP
33640 72 69 6f 72 69 74 79 20 64 65 62 75 67 50 72 69  riority debugPri
33650 6f 72 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20  ority;..        
33660 20 20 20 20 70 75 62 6c 69 63 20 54 72 61 63 65      public Trace
33670 50 72 69 6f 72 69 74 79 20 44 65 62 75 67 50 72  Priority DebugPr
33680 69 6f 72 69 74 79 0d 0a 20 20 20 20 20 20 20 20  iority..        
33690 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
336a0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
336b0 75 72 6e 20 64 65 62 75 67 50 72 69 6f 72 69 74  urn debugPriorit
336c0 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  y; }..          
336d0 20 20 20 20 20 20 73 65 74 20 7b 20 64 65 62 75        set { debu
336e0 67 50 72 69 6f 72 69 74 79 20 3d 20 76 61 6c 75  gPriority = valu
336f0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
33700 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
33710 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33750 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
33760 20 20 20 20 20 20 70 72 69 76 61 74 65 20 54 72        private Tr
33770 61 63 65 50 72 69 6f 72 69 74 79 20 74 72 61 63  acePriority trac
33780 65 50 72 69 6f 72 69 74 79 3b 0d 0a 20 20 20 20  ePriority;..    
33790 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 54          public T
337a0 72 61 63 65 50 72 69 6f 72 69 74 79 20 54 72 61  racePriority Tra
337b0 63 65 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20  cePriority..    
337c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
337d0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
337e0 20 72 65 74 75 72 6e 20 74 72 61 63 65 50 72 69   return tracePri
337f0 6f 72 69 74 79 3b 20 7d 0d 0a 20 20 20 20 20 20  ority; }..      
33800 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
33810 74 72 61 63 65 50 72 69 6f 72 69 74 79 20 3d 20  tracePriority = 
33820 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
33830 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33840 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33890 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
338a0 65 20 62 6f 6f 6c 20 70 65 72 55 73 65 72 3b 0d  e bool perUser;.
338b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
338c0 6c 69 63 20 62 6f 6f 6c 20 50 65 72 55 73 65 72  lic bool PerUser
338d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
338e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
338f0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70 65   get { return pe
33900 72 55 73 65 72 3b 20 7d 0d 0a 20 20 20 20 20 20  rUser; }..      
33910 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
33920 70 65 72 55 73 65 72 20 3d 20 76 61 6c 75 65 3b  perUser = value;
33930 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33940 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33950 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33990 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
339a0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
339b0 20 69 6e 73 74 61 6c 6c 3b 0d 0a 20 20 20 20 20   install;..     
339c0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
339d0 6f 6c 20 49 6e 73 74 61 6c 6c 0d 0a 20 20 20 20  ol Install..    
339e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
339f0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
33a00 20 72 65 74 75 72 6e 20 69 6e 73 74 61 6c 6c 3b   return install;
33a10 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33a20 20 20 20 20 73 65 74 20 7b 20 69 6e 73 74 61 6c      set { instal
33a30 6c 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  l = value; }..  
33a40 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
33a50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
33a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33aa0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
33ab0 69 76 61 74 65 20 62 6f 6f 6c 20 77 6f 77 36 34  ivate bool wow64
33ac0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
33ad0 75 62 6c 69 63 20 62 6f 6f 6c 20 57 6f 77 36 34  ublic bool Wow64
33ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
33af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33b00 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 77 6f   get { return wo
33b10 77 36 34 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  w64; }..        
33b20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 77 6f          set { wo
33b30 77 36 34 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  w64 = value; }..
33b40 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
33b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
33b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ba0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33bb0 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 52  private bool noR
33bc0 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 3b 0d 0a  untimeVersion;..
33bd0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
33be0 69 63 20 62 6f 6f 6c 20 4e 6f 52 75 6e 74 69 6d  ic bool NoRuntim
33bf0 65 56 65 72 73 69 6f 6e 0d 0a 20 20 20 20 20 20  eVersion..      
33c00 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
33c10 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
33c20 65 74 75 72 6e 20 6e 6f 52 75 6e 74 69 6d 65 56  eturn noRuntimeV
33c30 65 72 73 69 6f 6e 3b 20 7d 0d 0a 20 20 20 20 20  ersion; }..     
33c40 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
33c50 20 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f   noRuntimeVersio
33c60 6e 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  n = value; }..  
33c70 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
33c80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
33c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33cd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
33ce0 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 44 65 73  ivate bool noDes
33cf0 6b 74 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20  ktop;..         
33d00 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e     public bool N
33d10 6f 44 65 73 6b 74 6f 70 0d 0a 20 20 20 20 20 20  oDesktop..      
33d20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
33d30 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
33d40 65 74 75 72 6e 20 6e 6f 44 65 73 6b 74 6f 70 3b  eturn noDesktop;
33d50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33d60 20 20 20 20 73 65 74 20 7b 20 6e 6f 44 65 73 6b      set { noDesk
33d70 74 6f 70 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  top = value; }..
33d80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
33d90 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
33da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33de0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33df0 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 43  private bool noC
33e00 6f 6d 70 61 63 74 3b 0d 0a 20 20 20 20 20 20 20  ompact;..       
33e10 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
33e20 20 4e 6f 43 6f 6d 70 61 63 74 0d 0a 20 20 20 20   NoCompact..    
33e30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
33e40 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
33e50 20 72 65 74 75 72 6e 20 6e 6f 43 6f 6d 70 61 63   return noCompac
33e60 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  t; }..          
33e70 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 43 6f        set { noCo
33e80 6d 70 61 63 74 20 3d 20 76 61 6c 75 65 3b 20 7d  mpact = value; }
33e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
33ea0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
33eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ef0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
33f00 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
33f10 6f 4e 65 74 46 78 32 30 3b 0d 0a 20 20 20 20 20  oNetFx20;..     
33f20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
33f30 6f 6c 20 4e 6f 4e 65 74 46 78 32 30 0d 0a 20 20  ol NoNetFx20..  
33f40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33f50 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
33f60 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46   { return noNetF
33f70 78 32 30 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  x20; }..        
33f80 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f          set { no
33f90 4e 65 74 46 78 32 30 20 3d 20 76 61 6c 75 65 3b  NetFx20 = value;
33fa0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33fb0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
33fc0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34000 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
34010 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
34020 20 6e 6f 4e 65 74 46 78 33 35 3b 0d 0a 20 20 20   noNetFx35;..   
34030 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
34040 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 33 35 0d 0a  bool NoNetFx35..
34050 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
34060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
34070 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65  et { return noNe
34080 74 46 78 33 35 3b 20 7d 0d 0a 20 20 20 20 20 20  tFx35; }..      
34090 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
340a0 6e 6f 4e 65 74 46 78 33 35 20 3d 20 76 61 6c 75  noNetFx35 = valu
340b0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
340c0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
340d0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
340e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34110 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34120 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
34130 6f 6c 20 6e 6f 4e 65 74 46 78 34 30 3b 0d 0a 20  ol noNetFx40;.. 
34140 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
34150 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 30  c bool NoNetFx40
34160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
34170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34180 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
34190 4e 65 74 46 78 34 30 3b 20 7d 0d 0a 20 20 20 20  NetFx40; }..    
341a0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
341b0 7b 20 6e 6f 4e 65 74 46 78 34 30 20 3d 20 76 61  { noNetFx40 = va
341c0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
341d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
341e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
341f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34220 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34230 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34240 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 35 3b 0d  bool noNetFx45;.
34250 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
34260 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78  lic bool NoNetFx
34270 34 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  45..            
34280 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34290 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
342a0 6e 6f 4e 65 74 46 78 34 35 3b 20 7d 0d 0a 20 20  noNetFx45; }..  
342b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
342c0 74 20 7b 20 6e 6f 4e 65 74 46 78 34 35 20 3d 20  t { noNetFx45 = 
342d0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
342e0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
342f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
34300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
34340 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
34350 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 35  e bool noNetFx45
34360 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
34370 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65  public bool NoNe
34380 74 46 78 34 35 31 0d 0a 20 20 20 20 20 20 20 20  tFx451..        
34390 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
343a0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
343b0 75 72 6e 20 6e 6f 4e 65 74 46 78 34 35 31 3b 20  urn noNetFx451; 
343c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
343d0 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78     set { noNetFx
343e0 34 35 31 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  451 = value; }..
343f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
34400 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
34410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34450 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
34460 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e  private bool noN
34470 65 74 46 78 34 35 32 3b 0d 0a 20 20 20 20 20 20  etFx452;..      
34480 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
34490 6c 20 4e 6f 4e 65 74 46 78 34 35 32 0d 0a 20 20  l NoNetFx452..  
344a0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
344b0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
344c0 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46   { return noNetF
344d0 78 34 35 32 3b 20 7d 0d 0a 20 20 20 20 20 20 20  x452; }..       
344e0 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
344f0 6f 4e 65 74 46 78 34 35 32 20 3d 20 76 61 6c 75  oNetFx452 = valu
34500 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
34510 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
34520 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
34530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34560 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34570 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
34580 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 3b 0d 0a 20  ol noNetFx46;.. 
34590 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
345a0 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 36  c bool NoNetFx46
345b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
345c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
345d0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
345e0 4e 65 74 46 78 34 36 3b 20 7d 0d 0a 20 20 20 20  NetFx46; }..    
345f0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
34600 7b 20 6e 6f 4e 65 74 46 78 34 36 20 3d 20 76 61  { noNetFx46 = va
34610 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
34620 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
34630 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34670 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34680 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34690 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 31 3b  bool noNetFx461;
346a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
346b0 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46  blic bool NoNetF
346c0 78 34 36 31 0d 0a 20 20 20 20 20 20 20 20 20 20  x461..          
346d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
346e0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
346f0 6e 20 6e 6f 4e 65 74 46 78 34 36 31 3b 20 7d 0d  n noNetFx461; }.
34700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34710 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 36   set { noNetFx46
34720 31 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  1 = value; }..  
34730 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
34740 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
34750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
34790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
347a0 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74  ivate bool noNet
347b0 46 78 34 36 32 3b 0d 0a 20 20 20 20 20 20 20 20  Fx462;..        
347c0 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
347d0 4e 6f 4e 65 74 46 78 34 36 32 0d 0a 20 20 20 20  NoNetFx462..    
347e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
347f0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
34800 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34   return noNetFx4
34810 36 32 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  62; }..         
34820 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e         set { noN
34830 65 74 46 78 34 36 32 20 3d 20 76 61 6c 75 65 3b  etFx462 = value;
34840 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
34850 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
34860 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
34870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348a0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
348b0 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
348c0 20 6e 6f 4e 65 74 46 78 34 37 3b 0d 0a 20 20 20   noNetFx47;..   
348d0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
348e0 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 37 0d 0a  bool NoNetFx47..
348f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
34900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
34910 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65  et { return noNe
34920 74 46 78 34 37 3b 20 7d 0d 0a 20 20 20 20 20 20  tFx47; }..      
34930 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
34940 6e 6f 4e 65 74 46 78 34 37 20 3d 20 76 61 6c 75  noNetFx47 = valu
34950 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
34960 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
34970 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
34980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349b0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
349c0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
349d0 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 31 3b 0d 0a  ol noNetFx471;..
349e0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
349f0 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34  ic bool NoNetFx4
34a00 37 31 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  71..            
34a10 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34a20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
34a30 6e 6f 4e 65 74 46 78 34 37 31 3b 20 7d 0d 0a 20  noNetFx471; }.. 
34a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
34a50 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 37 31 20  et { noNetFx471 
34a60 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
34a70 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
34a80 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
34a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
34ad0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
34ae0 61 74 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30  ate bool noVs200
34af0 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  5;..            
34b00 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73  public bool NoVs
34b10 32 30 30 35 0d 0a 20 20 20 20 20 20 20 20 20 20  2005..          
34b20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
34b30 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
34b40 6e 20 6e 6f 56 73 32 30 30 35 3b 20 7d 0d 0a 20  n noVs2005; }.. 
34b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
34b60 65 74 20 7b 20 6e 6f 56 73 32 30 30 35 20 3d 20  et { noVs2005 = 
34b70 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
34b80 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
34b90 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
34ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
34be0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
34bf0 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30 38 3b  e bool noVs2008;
34c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
34c10 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30  blic bool NoVs20
34c20 30 38 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  08..            
34c30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34c40 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
34c50 6e 6f 56 73 32 30 30 38 3b 20 7d 0d 0a 20 20 20  noVs2008; }..   
34c60 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
34c70 20 7b 20 6e 6f 56 73 32 30 30 38 20 3d 20 76 61   { noVs2008 = va
34c80 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
34c90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
34ca0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ce0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34cf0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34d00 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 30 3b 0d 0a  bool noVs2010;..
34d10 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
34d20 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 30  ic bool NoVs2010
34d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
34d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34d50 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
34d60 56 73 32 30 31 30 3b 20 7d 0d 0a 20 20 20 20 20  Vs2010; }..     
34d70 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
34d80 20 6e 6f 56 73 32 30 31 30 20 3d 20 76 61 6c 75   noVs2010 = valu
34d90 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
34da0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
34db0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
34dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34df0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34e00 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
34e10 6f 6c 20 6e 6f 56 73 32 30 31 32 3b 0d 0a 20 20  ol noVs2012;..  
34e20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
34e30 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 32 0d 0a   bool NoVs2012..
34e40 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
34e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
34e60 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73  et { return noVs
34e70 32 30 31 32 3b 20 7d 0d 0a 20 20 20 20 20 20 20  2012; }..       
34e80 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
34e90 6f 56 73 32 30 31 32 20 3d 20 76 61 6c 75 65 3b  oVs2012 = value;
34ea0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
34eb0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
34ec0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
34ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
34f10 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
34f20 20 6e 6f 56 73 32 30 31 33 3b 0d 0a 20 20 20 20   noVs2013;..    
34f30 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
34f40 6f 6f 6c 20 4e 6f 56 73 32 30 31 33 0d 0a 20 20  ool NoVs2013..  
34f50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
34f60 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
34f70 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73 32 30   { return noVs20
34f80 31 33 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  13; }..         
34f90 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 56         set { noV
34fa0 73 32 30 31 33 20 3d 20 76 61 6c 75 65 3b 20 7d  s2013 = value; }
34fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
34fc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
34fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35010 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
35020 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
35030 6f 56 73 32 30 31 35 3b 0d 0a 20 20 20 20 20 20  oVs2015;..      
35040 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
35050 6c 20 4e 6f 56 73 32 30 31 35 0d 0a 20 20 20 20  l NoVs2015..    
35060 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35070 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
35080 20 72 65 74 75 72 6e 20 6e 6f 56 73 32 30 31 35   return noVs2015
35090 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
350a0 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 56 73 32       set { noVs2
350b0 30 31 35 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  015 = value; }..
350c0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
350d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
350e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
350f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35120 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35130 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 56  private bool noV
35140 73 32 30 31 37 3b 0d 0a 20 20 20 20 20 20 20 20  s2017;..        
35150 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
35160 4e 6f 56 73 32 30 31 37 0d 0a 20 20 20 20 20 20  NoVs2017..      
35170 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35180 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
35190 65 74 75 72 6e 20 6e 6f 56 73 32 30 31 37 3b 20  eturn noVs2017; 
351a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
351b0 20 20 20 73 65 74 20 7b 20 6e 6f 56 73 32 30 31     set { noVs201
351c0 37 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  7 = value; }..  
351d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
351e0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
351f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
35240 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 54 72 61  ivate bool noTra
35250 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce;..           
35260 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 54   public bool NoT
35270 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20  race..          
35280 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
35290 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
352a0 6e 20 6e 6f 54 72 61 63 65 3b 20 7d 0d 0a 20 20  n noTrace; }..  
352b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
352c0 74 20 7b 20 6e 6f 54 72 61 63 65 20 3d 20 76 61  t { noTrace = va
352d0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
352e0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
352f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
35300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35330 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
35340 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
35350 62 6f 6f 6c 20 6e 6f 43 6f 6e 73 6f 6c 65 3b 0d  bool noConsole;.
35360 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
35370 6c 69 63 20 62 6f 6f 6c 20 4e 6f 43 6f 6e 73 6f  lic bool NoConso
35380 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
35390 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
353a0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
353b0 6e 6f 43 6f 6e 73 6f 6c 65 3b 20 7d 0d 0a 20 20  noConsole; }..  
353c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
353d0 74 20 7b 20 6e 6f 43 6f 6e 73 6f 6c 65 20 3d 20  t { noConsole = 
353e0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
353f0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
35400 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
35410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
35450 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
35460 65 20 62 6f 6f 6c 20 6e 6f 4c 6f 67 3b 0d 0a 20  e bool noLog;.. 
35470 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
35480 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67 0d 0a 20 20  c bool NoLog..  
35490 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
354a0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
354b0 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4c 6f 67 3b   { return noLog;
354c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
354d0 20 20 20 20 73 65 74 20 7b 20 6e 6f 4c 6f 67 20      set { noLog 
354e0 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
354f0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
35500 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
35510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
35550 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
35560 61 74 65 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e  ate bool throwOn
35570 4d 69 73 73 69 6e 67 3b 0d 0a 20 20 20 20 20 20  Missing;..      
35580 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
35590 6c 20 54 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67  l ThrowOnMissing
355a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
355b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
355c0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 74 68   get { return th
355d0 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 3b 20 7d 0d  rowOnMissing; }.
355e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
355f0 20 73 65 74 20 7b 20 74 68 72 6f 77 4f 6e 4d 69   set { throwOnMi
35600 73 73 69 6e 67 20 3d 20 76 61 6c 75 65 3b 20 7d  ssing = value; }
35610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
35620 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
35630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35670 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
35680 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 77    private bool w
35690 68 61 74 49 66 3b 0d 0a 20 20 20 20 20 20 20 20  hatIf;..        
356a0 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
356b0 57 68 61 74 49 66 0d 0a 20 20 20 20 20 20 20 20  WhatIf..        
356c0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
356d0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
356e0 75 72 6e 20 77 68 61 74 49 66 3b 20 7d 0d 0a 20  urn whatIf; }.. 
356f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
35700 65 74 20 7b 20 77 68 61 74 49 66 20 3d 20 76 61  et { whatIf = va
35710 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
35720 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
35730 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
35740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35770 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
35780 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
35790 62 6f 6f 6c 20 64 65 62 75 67 3b 0d 0a 20 20 20  bool debug;..   
357a0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
357b0 62 6f 6f 6c 20 44 65 62 75 67 0d 0a 20 20 20 20  bool Debug..    
357c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
357d0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
357e0 20 72 65 74 75 72 6e 20 64 65 62 75 67 3b 20 7d   return debug; }
357f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35800 20 20 73 65 74 20 7b 20 64 65 62 75 67 20 3d 20    set { debug = 
35810 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
35820 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
35830 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
35840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
35880 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
35890 65 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 3b 0d  e bool verbose;.
358a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
358b0 6c 69 63 20 62 6f 6f 6c 20 56 65 72 62 6f 73 65  lic bool Verbose
358c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
358d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
358e0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 76 65   get { return ve
358f0 72 62 6f 73 65 3b 20 7d 0d 0a 20 20 20 20 20 20  rbose; }..      
35900 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
35910 76 65 72 62 6f 73 65 20 3d 20 76 61 6c 75 65 3b  verbose = value;
35920 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
35930 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
35940 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
35950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35980 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
35990 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
359a0 20 63 6f 6e 66 69 72 6d 3b 0d 0a 20 20 20 20 20   confirm;..     
359b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
359c0 6f 6c 20 43 6f 6e 66 69 72 6d 0d 0a 20 20 20 20  ol Confirm..    
359d0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
359e0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
359f0 20 72 65 74 75 72 6e 20 63 6f 6e 66 69 72 6d 3b   return confirm;
35a00 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
35a10 20 20 20 20 73 65 74 20 7b 20 63 6f 6e 66 69 72      set { confir
35a20 6d 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  m = value; }..  
35a30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
35a40 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
35a50 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ion..        }..
35a60 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
35a70 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
35a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ac0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
35ad0 20 23 72 65 67 69 6f 6e 20 46 72 61 6d 65 77 6f   #region Framewo
35ae0 72 6b 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20  rkList Class..  
35af0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
35b00 61 6c 65 64 20 63 6c 61 73 73 20 46 72 61 6d 65  aled class Frame
35b10 77 6f 72 6b 4c 69 73 74 0d 0a 20 20 20 20 20 20  workList..      
35b20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
35b30 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
35b40 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
35b50 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
35b60 20 46 72 61 6d 65 77 6f 72 6b 4c 69 73 74 28 29   FrameworkList()
35b70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
35b80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35b90 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
35ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
35bb0 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
35bc0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
35bd0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
35be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
35c20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
35c30 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d   Public Methods.
35c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
35c50 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72  vate MockRegistr
35c60 79 4b 65 79 20 72 6f 6f 74 4b 65 79 3b 0d 0a 20  yKey rootKey;.. 
35c70 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
35c80 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  c MockRegistryKe
35c90 79 20 52 6f 6f 74 4b 65 79 0d 0a 20 20 20 20 20  y RootKey..     
35ca0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
35cb0 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
35cc0 72 65 74 75 72 6e 20 72 6f 6f 74 4b 65 79 3b 20  return rootKey; 
35cd0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
35ce0 20 20 20 73 65 74 20 7b 20 72 6f 6f 74 4b 65 79     set { rootKey
35cf0 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
35d00 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
35d10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
35d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
35d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
35d70 76 61 74 65 20 53 74 72 69 6e 67 4c 69 73 74 20  vate StringList 
35d80 6e 61 6d 65 73 3b 0d 0a 20 20 20 20 20 20 20 20  names;..        
35d90 20 20 20 20 70 75 62 6c 69 63 20 53 74 72 69 6e      public Strin
35da0 67 4c 69 73 74 20 4e 61 6d 65 73 0d 0a 20 20 20  gList Names..   
35db0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
35dc0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
35dd0 7b 20 72 65 74 75 72 6e 20 6e 61 6d 65 73 3b 20  { return names; 
35de0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
35df0 20 20 20 73 65 74 20 7b 20 6e 61 6d 65 73 20 3d     set { names =
35e00 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
35e10 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
35e20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
35e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
35e70 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
35e80 74 65 20 56 65 72 73 69 6f 6e 4d 61 70 20 76 65  te VersionMap ve
35e90 72 73 69 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20  rsions;..       
35ea0 20 20 20 20 20 70 75 62 6c 69 63 20 56 65 72 73       public Vers
35eb0 69 6f 6e 4d 61 70 20 56 65 72 73 69 6f 6e 73 0d  ionMap Versions.
35ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
35ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
35ee0 67 65 74 20 7b 20 72 65 74 75 72 6e 20 76 65 72  get { return ver
35ef0 73 69 6f 6e 73 3b 20 7d 0d 0a 20 20 20 20 20 20  sions; }..      
35f00 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
35f10 76 65 72 73 69 6f 6e 73 20 3d 20 76 61 6c 75 65  versions = value
35f20 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
35f30 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
35f40 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
35f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
35f90 20 20 20 20 20 70 72 69 76 61 74 65 20 53 74 72       private Str
35fa0 69 6e 67 4c 69 73 74 20 70 6c 61 74 66 6f 72 6d  ingList platform
35fb0 4e 61 6d 65 73 3b 0d 0a 20 20 20 20 20 20 20 20  Names;..        
35fc0 20 20 20 20 70 75 62 6c 69 63 20 53 74 72 69 6e      public Strin
35fd0 67 4c 69 73 74 20 50 6c 61 74 66 6f 72 6d 4e 61  gList PlatformNa
35fe0 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mes..           
35ff0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
36000 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
36010 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 73 3b 20   platformNames; 
36020 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
36030 20 20 20 73 65 74 20 7b 20 70 6c 61 74 66 6f 72     set { platfor
36040 6d 4e 61 6d 65 73 20 3d 20 76 61 6c 75 65 3b 20  mNames = value; 
36050 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
36060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
36070 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20  ndregion..      
36080 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
36090 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
360a0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
360b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
360e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
360f0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 56 73        #region Vs
36100 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20 20 20  List Class..    
36110 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c      private seal
36120 65 64 20 63 6c 61 73 73 20 56 73 4c 69 73 74 0d  ed class VsList.
36130 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
36140 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
36150 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
36160 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ors..           
36170 20 70 75 62 6c 69 63 20 56 73 4c 69 73 74 28 29   public VsList()
36180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
36190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
361a0 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
361b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
361c0 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
361d0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
361e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
361f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36220 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
36230 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
36240 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69   Public Properti
36250 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  es..            
36260 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69  private MockRegi
36270 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 3b  stryKey rootKey;
36280 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
36290 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
362a0 79 4b 65 79 20 52 6f 6f 74 4b 65 79 0d 0a 20 20  yKey RootKey..  
362b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
362c0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
362d0 20 7b 20 72 65 74 75 72 6e 20 72 6f 6f 74 4b 65   { return rootKe
362e0 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  y; }..          
362f0 20 20 20 20 20 20 73 65 74 20 7b 20 72 6f 6f 74        set { root
36300 4b 65 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  Key = value; }..
36310 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
36320 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
36330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36370 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36380 70 72 69 76 61 74 65 20 56 65 72 73 69 6f 6e 4c  private VersionL
36390 69 73 74 20 76 65 72 73 69 6f 6e 73 3b 0d 0a 20  ist versions;.. 
363a0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
363b0 63 20 56 65 72 73 69 6f 6e 4c 69 73 74 20 56 65  c VersionList Ve
363c0 72 73 69 6f 6e 73 0d 0a 20 20 20 20 20 20 20 20  rsions..        
363d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
363e0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
363f0 75 72 6e 20 76 65 72 73 69 6f 6e 73 3b 20 7d 0d  urn versions; }.
36400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
36410 20 73 65 74 20 7b 20 76 65 72 73 69 6f 6e 73 20   set { versions 
36420 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
36430 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
36440 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
36450 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  n..        }..  
36460 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
36470 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
36480 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
36490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
364e0 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
364f0 74 65 20 43 6f 6e 73 74 61 6e 74 20 44 61 74 61  te Constant Data
36500 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
36510 6e 20 50 61 63 6b 61 67 65 20 26 20 50 72 6f 76  n Package & Prov
36520 69 64 65 72 20 4e 61 6d 65 73 0d 0a 20 20 20 20  ider Names..    
36530 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
36540 74 20 73 74 72 69 6e 67 20 43 6f 72 65 46 69 6c  t string CoreFil
36550 65 4e 61 6d 65 20 3d 20 22 53 79 73 74 65 6d 2e  eName = "System.
36560 44 61 74 61 2e 53 51 4c 69 74 65 2e 64 6c 6c 22  Data.SQLite.dll"
36570 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ;..        priva
36580 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
36590 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 22  LinqFileName = "
365a0 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69  System.Data.SQLi
365b0 74 65 2e 4c 69 6e 71 2e 64 6c 6c 22 3b 0d 0a 20  te.Linq.dll";.. 
365c0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
365d0 6f 6e 73 74 20 73 74 72 69 6e 67 20 45 66 36 46  onst string Ef6F
365e0 69 6c 65 4e 61 6d 65 20 3d 20 22 53 79 73 74 65  ileName = "Syste
365f0 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 45 46  m.Data.SQLite.EF
36600 36 2e 64 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20  6.dll";..       
36610 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
36620 74 72 69 6e 67 20 44 65 73 69 67 6e 65 72 46 69  tring DesignerFi
36630 6c 65 4e 61 6d 65 20 3d 20 22 53 51 4c 69 74 65  leName = "SQLite
36640 2e 44 65 73 69 67 6e 65 72 2e 64 6c 6c 22 3b 0d  .Designer.dll";.
36650 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
36660 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 50 72   const string Pr
36670 6f 76 69 64 65 72 4e 61 6d 65 20 3d 20 22 53 51  oviderName = "SQ
36680 4c 69 74 65 20 44 61 74 61 20 50 72 6f 76 69 64  Lite Data Provid
36690 65 72 22 3b 0d 0a 20 20 20 20 20 20 20 20 70 72  er";..        pr
366a0 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
366b0 6e 67 20 50 72 6f 6a 65 63 74 4e 61 6d 65 20 3d  ng ProjectName =
366c0 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51   "System.Data.SQ
366d0 4c 69 74 65 22 3b 0d 0a 20 20 20 20 20 20 20 20  Lite";..        
366e0 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
366f0 72 69 6e 67 20 4c 65 67 61 63 79 50 72 6f 6a 65  ring LegacyProje
36700 63 74 4e 61 6d 65 20 3d 20 22 53 51 4c 69 74 65  ctName = "SQLite
36710 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ";....        //
36720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36760 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
36770 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
36780 74 72 69 6e 67 20 44 65 73 63 72 69 70 74 69 6f  tring Descriptio
36790 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n =..           
367a0 20 22 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b   ".NET Framework
367b0 20 44 61 74 61 20 50 72 6f 76 69 64 65 72 20 66   Data Provider f
367c0 6f 72 20 53 51 4c 69 74 65 22 3b 0d 0a 20 20 20  or SQLite";..   
367d0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
367e0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
367f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36830 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
36840 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
36850 6e 67 20 44 69 73 70 6c 61 79 4e 75 6c 6c 20 3d  ng DisplayNull =
36860 20 22 3c 6e 75 6c 6c 3e 22 3b 0d 0a 20 20 20 20   "<null>";..    
36870 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
36880 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c 61 79  t string Display
36890 45 6d 70 74 79 20 3d 20 22 3c 65 6d 70 74 79 3e  Empty = "<empty>
368a0 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ";....        //
368b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
368c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
368d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
368e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
368f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
36900 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
36910 74 72 69 6e 67 20 43 4c 52 76 32 49 6d 61 67 65  tring CLRv2Image
36920 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 20 3d  RuntimeVersion =
36930 20 22 76 32 2e 30 2e 35 30 37 32 37 22 3b 0d 0a   "v2.0.50727";..
36940 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
36950 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 43 4c 52  const string CLR
36960 76 34 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65  v4ImageRuntimeVe
36970 72 73 69 6f 6e 20 3d 20 22 76 34 2e 30 2e 33 30  rsion = "v4.0.30
36980 33 31 39 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  319";....       
36990 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
369a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
369e0 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
369f0 74 20 73 74 72 69 6e 67 20 53 79 73 74 65 6d 45  t string SystemE
36a00 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d  f6AssemblyName =
36a10 20 22 45 6e 74 69 74 79 46 72 61 6d 65 77 6f 72   "EntityFramewor
36a20 6b 2c 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20  k, " +..        
36a30 20 20 20 20 22 56 65 72 73 69 6f 6e 3d 36 2e 30      "Version=6.0
36a40 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65 3d 6e 65  .0.0, Culture=ne
36a50 75 74 72 61 6c 2c 20 50 75 62 6c 69 63 4b 65 79  utral, PublicKey
36a60 54 6f 6b 65 6e 3d 62 37 37 61 35 63 35 36 31 39  Token=b77a5c5619
36a70 33 34 65 30 38 39 22 3b 0d 0a 0d 0a 20 20 20 20  34e089";....    
36a80 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
36a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
36ad0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
36ae0 6f 6e 73 74 20 73 74 72 69 6e 67 20 4e 61 6d 65  onst string Name
36af0 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 20 3d  AndValueFormat =
36b00 20 22 7b 30 7d 3a 20 7b 31 7d 22 3b 0d 0a 20 20   "{0}: {1}";..  
36b10 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
36b20 6e 73 74 20 73 74 72 69 6e 67 20 4c 6f 67 46 69  nst string LogFi
36b30 6c 65 53 75 66 66 69 78 20 3d 20 22 2e 6c 6f 67  leSuffix = ".log
36b40 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ";....        //
36b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
36ba0 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
36bb0 74 72 69 6e 67 20 56 73 44 65 76 45 6e 76 53 65  tring VsDevEnvSe
36bc0 74 75 70 46 6f 72 6d 61 74 20 3d 20 22 7b 30 7d  tupFormat = "{0}
36bd0 3a 20 7b 31 7d 22 3b 0d 0a 0d 0a 20 20 20 20 20  : {1}";....     
36be0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
36bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
36c30 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
36c40 6e 73 74 20 73 74 72 69 6e 67 20 52 6f 6f 74 4b  nst string RootK
36c50 65 79 4e 61 6d 65 20 3d 20 22 53 6f 66 74 77 61  eyName = "Softwa
36c60 72 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 70 72  re";..        pr
36c70 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
36c80 6e 67 20 57 6f 77 36 34 53 75 62 4b 65 79 4e 61  ng Wow64SubKeyNa
36c90 6d 65 20 3d 20 22 57 6f 77 36 34 33 32 4e 6f 64  me = "Wow6432Nod
36ca0 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  e";....        /
36cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36cf0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
36d00 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f    //..        //
36d10 20 4e 4f 54 45 3a 20 54 68 65 20 2e 4e 45 54 20   NOTE: The .NET 
36d20 46 72 61 6d 65 77 6f 72 6b 20 68 61 73 20 62 6f  Framework has bo
36d30 74 68 20 33 32 2d 62 69 74 20 61 6e 64 20 36 34  th 32-bit and 64
36d40 2d 62 69 74 20 65 64 69 74 69 6f 6e 73 2e 0d 0a  -bit editions...
36d50 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
36d60 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
36d70 69 63 20 72 65 61 64 6f 6e 6c 79 20 62 6f 6f 6c  ic readonly bool
36d80 20 4e 65 74 46 78 49 73 33 32 42 69 74 4f 6e 6c   NetFxIs32BitOnl
36d90 79 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  y = false;....  
36da0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
36db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
36df0 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  .        //..   
36e00 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 6f       // NOTE: Fo
36e10 72 20 6e 6f 77 2c 20 56 69 73 75 61 6c 20 53 74  r now, Visual St
36e20 75 64 69 6f 20 69 73 20 61 6c 77 61 79 73 20 61  udio is always a
36e30 20 33 32 2d 62 69 74 20 61 70 70 6c 69 63 61 74   32-bit applicat
36e40 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f  ion...        //
36e50 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
36e60 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
36e70 79 20 62 6f 6f 6c 20 56 73 49 73 33 32 42 69 74  y bool VsIs32Bit
36e80 4f 6e 6c 79 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a  Only = true;....
36e90 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
36ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
36ee0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
36ef0 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
36f00 6c 79 20 73 74 72 69 6e 67 20 56 73 49 64 46 6f  ly string VsIdFo
36f10 72 6d 61 74 20 3d 20 22 42 22 3b 0d 0a 0d 0a 20  rmat = "B";.... 
36f20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
36f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
36f70 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
36f80 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e 6c  e static readonl
36f90 79 20 73 74 72 69 6e 67 20 58 50 61 74 68 46 6f  y string XPathFo
36fa0 72 41 64 64 45 6c 65 6d 65 6e 74 20 3d 0d 0a 20  rAddElement =.. 
36fb0 20 20 20 20 20 20 20 20 20 20 20 22 63 6f 6e 66             "conf
36fc0 69 67 75 72 61 74 69 6f 6e 2f 73 79 73 74 65 6d  iguration/system
36fd0 2e 64 61 74 61 2f 44 62 50 72 6f 76 69 64 65 72  .data/DbProvider
36fe0 46 61 63 74 6f 72 69 65 73 2f 61 64 64 5b 40 69  Factories/add[@i
36ff0 6e 76 61 72 69 61 6e 74 3d 5c 22 7b 30 7d 5c 22  nvariant=\"{0}\"
37000 5d 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ]";....        p
37010 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65  rivate static re
37020 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 50  adonly string XP
37030 61 74 68 46 6f 72 52 65 6d 6f 76 65 45 6c 65 6d  athForRemoveElem
37040 65 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ent =..         
37050 20 20 20 22 63 6f 6e 66 69 67 75 72 61 74 69 6f     "configuratio
37060 6e 2f 73 79 73 74 65 6d 2e 64 61 74 61 2f 44 62  n/system.data/Db
37070 50 72 6f 76 69 64 65 72 46 61 63 74 6f 72 69 65  ProviderFactorie
37080 73 2f 72 65 6d 6f 76 65 5b 40 69 6e 76 61 72 69  s/remove[@invari
37090 61 6e 74 3d 5c 22 7b 30 7d 5c 22 5d 22 3b 0d 0a  ant=\"{0}\"]";..
370a0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
370b0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
370c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37100 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
37110 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
37120 20 53 74 61 74 69 63 20 44 61 74 61 0d 0a 20 20   Static Data..  
37130 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 69        #region Di
37140 61 67 6e 6f 73 74 69 63 73 20 26 20 4c 6f 67 67  agnostics & Logg
37150 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  ing..        //.
37160 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  .        // NOTE
37170 3a 20 43 61 63 68 65 20 74 68 65 20 63 75 72 72  : Cache the curr
37180 65 6e 74 20 70 72 6f 63 65 73 73 20 61 6e 64 20  ent process and 
37190 61 73 73 65 6d 62 6c 79 20 61 73 20 74 68 65 79  assembly as they
371a0 20 64 6f 20 6e 6f 74 20 63 68 61 6e 67 65 0d 0a   do not change..
371b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
371c0 20 61 6e 64 20 6d 61 79 20 62 65 20 6e 65 65 64   and may be need
371d0 65 64 20 69 6e 20 71 75 69 74 65 20 61 20 66 65  ed in quite a fe
371e0 77 20 64 69 66 66 65 72 65 6e 74 20 70 6c 61 63  w different plac
371f0 65 73 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  es...        //.
37200 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
37210 20 73 74 61 74 69 63 20 50 72 6f 63 65 73 73 20   static Process 
37220 74 68 69 73 50 72 6f 63 65 73 73 20 3d 20 50 72  thisProcess = Pr
37230 6f 63 65 73 73 2e 47 65 74 43 75 72 72 65 6e 74  ocess.GetCurrent
37240 50 72 6f 63 65 73 73 28 29 3b 0d 0a 20 20 20 20  Process();..    
37250 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
37260 69 63 20 41 73 73 65 6d 62 6c 79 20 74 68 69 73  ic Assembly this
37270 41 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d  Assembly = Assem
37280 62 6c 79 2e 47 65 74 45 78 65 63 75 74 69 6e 67  bly.GetExecuting
37290 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a 0d 0a 20  Assembly();.... 
372a0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
372b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
372f0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
37300 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
37310 68 65 20 74 72 61 63 65 20 63 61 74 65 67 6f 72  he trace categor
37320 79 20 69 73 20 74 68 65 20 73 61 6d 65 20 66 6f  y is the same fo
37330 72 20 62 6f 74 68 20 74 68 65 20 64 65 62 75 67  r both the debug
37340 20 61 6e 64 20 74 72 61 63 65 0d 0a 20 20 20 20   and trace..    
37350 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 61 6c      //       cal
37360 6c 62 61 63 6b 73 2e 0d 0a 20 20 20 20 20 20 20  lbacks...       
37370 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 70 72 69   //..        pri
37380 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
37390 6e 67 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ng traceCategory
373a0 20 3d 20 28 74 68 69 73 41 73 73 65 6d 62 6c 79   = (thisAssembly
373b0 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20   != null) ?..   
373c0 20 20 20 20 20 20 20 20 20 50 61 74 68 2e 47 65           Path.Ge
373d0 74 46 69 6c 65 4e 61 6d 65 28 74 68 69 73 41 73  tFileName(thisAs
373e0 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 29  sembly.Location)
373f0 20 3a 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20   : null;....    
37400 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
37410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
37450 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
37460 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 65 74 20     // NOTE: Set 
37470 74 68 65 20 64 65 62 75 67 20 61 6e 64 20 74 72  the debug and tr
37480 61 63 65 20 6c 6f 67 67 69 6e 67 20 63 61 6c 6c  ace logging call
37490 62 61 63 6b 73 20 75 73 65 64 20 62 79 20 74 68  backs used by th
374a0 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20  e..        //   
374b0 20 20 20 20 61 70 70 6c 69 63 61 74 69 6f 6e 2e      application.
374c0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
374d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
374e0 61 74 69 63 20 54 72 61 63 65 43 61 6c 6c 62 61  atic TraceCallba
374f0 63 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  ck debugCallback
37500 20 3d 20 41 70 70 44 65 62 75 67 3b 0d 0a 20 20   = AppDebug;..  
37510 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
37520 61 74 69 63 20 54 72 61 63 65 43 61 6c 6c 62 61  atic TraceCallba
37530 63 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  ck traceCallback
37540 20 3d 20 41 70 70 54 72 61 63 65 3b 0d 0a 20 20   = AppTrace;..  
37550 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
37560 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
37570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
375a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
375b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
375c0 72 65 67 69 6f 6e 20 53 79 73 74 65 6d 20 44 69  region System Di
375d0 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20 20 20  rectory..       
375e0 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
375f0 73 74 72 69 6e 67 20 73 79 73 74 65 6d 44 69 72  string systemDir
37600 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a  ectory = null;..
37610 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a 20  ..#if WINDOWS.. 
37620 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
37630 74 61 74 69 63 20 73 74 72 69 6e 67 20 73 79 73  tatic string sys
37640 74 65 6d 44 69 72 65 63 74 6f 72 79 57 6f 77 36  temDirectoryWow6
37650 34 20 3d 20 6e 75 6c 6c 3b 0d 0a 23 65 6e 64 69  4 = null;..#endi
37660 66 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  f..        #endr
37670 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
37680 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
37690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
376c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
376d0 20 20 20 20 23 72 65 67 69 6f 6e 20 52 65 67 69      #region Regi
376e0 73 74 72 79 20 53 74 61 74 69 73 74 69 63 73 0d  stry Statistics.
376f0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
37700 20 73 74 61 74 69 63 20 69 6e 74 20 66 69 6c 65   static int file
37710 73 43 72 65 61 74 65 64 20 3d 20 30 3b 0d 0a 20  sCreated = 0;.. 
37720 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
37730 74 61 74 69 63 20 69 6e 74 20 66 69 6c 65 73 4d  tatic int filesM
37740 6f 64 69 66 69 65 64 20 3d 20 30 3b 0d 0a 20 20  odified = 0;..  
37750 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
37760 61 74 69 63 20 69 6e 74 20 66 69 6c 65 73 44 65  atic int filesDe
37770 6c 65 74 65 64 20 3d 20 30 3b 0d 0a 20 20 20 20  leted = 0;..    
37780 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
37790 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
377a0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
377b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
377c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
377d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
377e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
377f0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
37800 20 23 72 65 67 69 6f 6e 20 54 72 61 63 65 20 48   #region Trace H
37810 61 6e 64 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20  andling..       
37820 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
37830 73 74 72 69 6e 67 20 47 65 74 4c 6f 67 46 69 6c  string GetLogFil
37840 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  eName(..        
37850 20 20 20 20 73 74 72 69 6e 67 20 74 79 70 65 4e      string typeN
37860 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ame..           
37870 20 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a   ) /* throw */..
37880 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
37890 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
378a0 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 47 65  leName = Path.Ge
378b0 74 54 65 6d 70 46 69 6c 65 4e 61 6d 65 28 29 3b  tTempFileName();
378c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74  ..            st
378d0 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d  ring directory =
378e0 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f   Path.GetDirecto
378f0 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61 6d 65 29  ryName(fileName)
37900 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ;..            s
37910 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 4f 6e  tring fileNameOn
37920 6c 79 20 3d 20 50 61 74 68 2e 47 65 74 46 69 6c  ly = Path.GetFil
37930 65 4e 61 6d 65 57 69 74 68 6f 75 74 45 78 74 65  eNameWithoutExte
37940 6e 73 69 6f 6e 28 66 69 6c 65 4e 61 6d 65 29 3b  nsion(fileName);
37950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
37960 73 74 72 69 6e 67 20 6e 65 77 46 69 6c 65 4e 61  string newFileNa
37970 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e  me = Path.Combin
37980 65 28 64 69 72 65 63 74 6f 72 79 2c 20 53 74 72  e(directory, Str
37990 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
379a0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 7b 30               "{0
379b0 7d 7b 31 7d 7b 32 7d 22 2c 20 74 72 61 63 65 43  }{1}{2}", traceC
379c0 61 74 65 67 6f 72 79 2c 20 21 53 74 72 69 6e 67  ategory, !String
379d0 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74  .IsNullOrEmpty(t
379e0 79 70 65 4e 61 6d 65 29 20 3f 0d 0a 20 20 20 20  ypeName) ?..    
379f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37a00 22 2e 22 20 2b 20 74 79 70 65 4e 61 6d 65 20 3a  "." + typeName :
37a10 20 53 74 72 69 6e 67 2e 45 6d 70 74 79 2c 20 22   String.Empty, "
37a20 2e 22 20 2b 20 66 69 6c 65 4e 61 6d 65 4f 6e 6c  ." + fileNameOnl
37a30 79 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y +..           
37a40 20 20 20 20 20 20 20 20 20 4c 6f 67 46 69 6c 65           LogFile
37a50 53 75 66 66 69 78 29 29 3b 0d 0a 0d 0a 20 20 20  Suffix));....   
37a60 20 20 20 20 20 20 20 20 20 46 69 6c 65 2e 4d 6f           File.Mo
37a70 76 65 28 66 69 6c 65 4e 61 6d 65 2c 20 6e 65 77  ve(fileName, new
37a80 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
37a90 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
37aa0 20 6e 65 77 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20   newFileName;.. 
37ab0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
37ac0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
37ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
37b10 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
37b20 74 61 74 69 63 20 76 6f 69 64 20 41 70 70 44 65  tatic void AppDe
37b30 62 75 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20  bug(..          
37b40 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61 67 65    string message
37b50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  ,..            s
37b60 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d 0a  tring category..
37b70 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
37b80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37b90 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
37ba0 65 62 75 67 43 6f 72 65 28 53 74 72 69 6e 67 2e  ebugCore(String.
37bb0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
37bc0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
37bd0 73 2e 44 65 62 75 67 46 6f 72 6d 61 74 2c 20 54  s.DebugFormat, T
37be0 72 61 63 65 4f 70 73 2e 4e 65 78 74 44 65 62 75  raceOps.NextDebu
37bf0 67 49 64 28 29 2c 0d 0a 20 20 20 20 20 20 20 20  gId(),..        
37c00 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
37c10 2e 54 69 6d 65 53 74 61 6d 70 28 44 61 74 65 54  .TimeStamp(DateT
37c20 69 6d 65 2e 55 74 63 4e 6f 77 29 2c 20 6d 65 73  ime.UtcNow), mes
37c30 73 61 67 65 29 2c 20 63 61 74 65 67 6f 72 79 29  sage), category)
37c40 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ;..        }....
37c50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
37c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
37ca0 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
37cb0 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 41  te static void A
37cc0 70 70 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ppTrace(..      
37cd0 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73        string mes
37ce0 73 61 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  sage,..         
37cf0 20 20 20 73 74 72 69 6e 67 20 63 61 74 65 67 6f     string catego
37d00 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ry..            
37d10 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
37d20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
37d30 70 73 2e 54 72 61 63 65 43 6f 72 65 28 53 74 72  ps.TraceCore(Str
37d40 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
37d50 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
37d60 63 65 4f 70 73 2e 54 72 61 63 65 46 6f 72 6d 61  ceOps.TraceForma
37d70 74 2c 20 54 72 61 63 65 4f 70 73 2e 4e 65 78 74  t, TraceOps.Next
37d80 54 72 61 63 65 49 64 28 29 2c 0d 0a 20 20 20 20  TraceId(),..    
37d90 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
37da0 65 4f 70 73 2e 54 69 6d 65 53 74 61 6d 70 28 44  eOps.TimeStamp(D
37db0 61 74 65 54 69 6d 65 2e 55 74 63 4e 6f 77 29 2c  ateTime.UtcNow),
37dc0 20 6d 65 73 73 61 67 65 29 2c 20 63 61 74 65 67   message), categ
37dd0 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d  ory);..        }
37de0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
37df0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
37e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
37e50 20 20 20 23 72 65 67 69 6f 6e 20 47 65 6e 65 72     #region Gener
37e60 69 63 20 50 6c 61 74 66 6f 72 6d 20 48 61 6e 64  ic Platform Hand
37e70 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 70 72  ling..        pr
37e80 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
37e90 6c 20 49 73 36 34 42 69 74 50 72 6f 63 65 73 73  l Is64BitProcess
37ea0 28 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  ()..        {.. 
37eb0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
37ec0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
37ed0 54 45 3a 20 52 65 74 75 72 6e 73 20 74 72 75 65  TE: Returns true
37ee0 20 69 66 20 74 68 65 20 63 75 72 72 65 6e 74 20   if the current 
37ef0 70 72 6f 63 65 73 73 20 69 73 20 36 34 2d 62 69  process is 64-bi
37f00 74 2e 20 20 49 66 20 74 68 69 73 0d 0a 20 20 20  t.  If this..   
37f10 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
37f20 20 20 69 73 20 74 72 75 65 2c 20 77 65 20 2a 6b    is true, we *k
37f30 6e 6f 77 2a 20 74 68 61 74 20 77 65 20 6d 75 73  now* that we mus
37f40 74 20 62 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  t be running on 
37f50 61 20 36 34 2d 62 69 74 0d 0a 20 20 20 20 20 20  a 64-bit..      
37f60 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
37f70 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 20  perating system 
37f80 61 73 20 77 65 6c 6c 2e 20 20 48 6f 77 65 76 65  as well.  Howeve
37f90 72 2c 20 69 66 20 74 68 69 73 20 69 73 20 66 61  r, if this is fa
37fa0 6c 73 65 2c 20 77 65 0d 0a 20 20 20 20 20 20 20  lse, we..       
37fb0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64 6f       //       do
37fc0 20 6e 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79   not necessarily
37fd0 20 6b 6e 6f 77 20 74 68 61 74 20 77 65 20 61 72   know that we ar
37fe0 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20 61 20 33  e running on a 3
37ff0 32 2d 62 69 74 0d 0a 20 20 20 20 20 20 20 20 20  2-bit..         
38000 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 65 72     //       oper
38010 61 74 69 6e 67 20 73 79 73 74 65 6d 2c 20 64 75  ating system, du
38020 65 20 74 6f 20 57 6f 57 36 34 20 28 57 69 6e 33  e to WoW64 (Win3
38030 32 2d 6f 6e 2d 57 69 6e 36 34 29 2c 20 65 74 63  2-on-Win64), etc
38040 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
38050 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72  /..            r
38060 65 74 75 72 6e 20 28 49 6e 74 50 74 72 2e 53 69  eturn (IntPtr.Si
38070 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28 6c 6f 6e  ze == sizeof(lon
38080 67 29 29 3b 20 2f 2f 20 4e 4f 54 45 3a 20 50 6f  g)); // NOTE: Po
38090 69 6e 74 65 72 20 69 73 20 36 34 2d 62 69 74 73  inter is 64-bits
380a0 3f 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a  ?..        }....
380b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
380c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
380d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
380e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
380f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
38100 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
38110 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 49  te static bool I
38120 73 53 75 70 70 6f 72 74 65 64 52 6f 6f 74 4b 65  sSupportedRootKe
38130 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
38140 4d 6f 63 6b 52 65 67 69 73 74 72 79 20 72 65 67  MockRegistry reg
38150 69 73 74 72 79 2c 0d 0a 20 20 20 20 20 20 20 20  istry,..        
38160 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
38170 4b 65 79 20 72 6f 6f 74 4b 65 79 0d 0a 20 20 20  Key rootKey..   
38180 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
38190 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
381a0 20 20 20 72 65 74 75 72 6e 20 4f 62 6a 65 63 74     return Object
381b0 2e 52 65 66 65 72 65 6e 63 65 45 71 75 61 6c 73  .ReferenceEquals
381c0 28 72 6f 6f 74 4b 65 79 2c 20 72 65 67 69 73 74  (rootKey, regist
381d0 72 79 2e 43 75 72 72 65 6e 74 55 73 65 72 29 20  ry.CurrentUser) 
381e0 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
381f0 20 20 20 20 4f 62 6a 65 63 74 2e 52 65 66 65 72      Object.Refer
38200 65 6e 63 65 45 71 75 61 6c 73 28 72 6f 6f 74 4b  enceEquals(rootK
38210 65 79 2c 20 72 65 67 69 73 74 72 79 2e 4c 6f 63  ey, registry.Loc
38220 61 6c 4d 61 63 68 69 6e 65 29 3b 0d 0a 20 20 20  alMachine);..   
38230 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
38240 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
38250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38280 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
38290 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
382a0 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 52 6f  tic string GetRo
382b0 6f 74 4b 65 79 4e 61 6d 65 28 0d 0a 20 20 20 20  otKeyName(..    
382c0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 70 65 72          bool per
382d0 55 73 65 72 2c 0d 0a 20 20 20 20 20 20 20 20 20  User,..         
382e0 20 20 20 62 6f 6f 6c 20 77 6f 77 36 34 0d 0a 20     bool wow64.. 
382f0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
38300 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
38310 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
38320 20 20 20 20 20 2f 2f 20 42 55 47 46 49 58 3a 20       // BUGFIX: 
38330 41 70 70 61 72 65 6e 74 6c 79 2c 20 74 68 65 20  Apparently, the 
38340 70 65 72 2d 75 73 65 72 20 72 65 67 69 73 74 72  per-user registr
38350 79 20 68 69 76 65 20 64 6f 65 73 20 6e 6f 74 20  y hive does not 
38360 75 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  use..           
38370 20 2f 2f 20 20 20 20 20 20 20 20 20 74 68 65 20   //         the 
38380 22 57 6f 77 36 34 33 32 4e 6f 64 65 22 20 6e 6f  "Wow6432Node" no
38390 64 65 20 74 6f 20 73 74 6f 72 65 20 73 65 74 74  de to store sett
383a0 69 6e 67 73 20 66 6f 72 20 33 32 2d 62 69 74 0d  ings for 32-bit.
383b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20  .            // 
383c0 20 20 20 20 20 20 20 20 61 70 70 6c 69 63 61 74          applicat
383d0 69 6f 6e 73 20 72 75 6e 6e 69 6e 67 20 6f 6e 20  ions running on 
383e0 61 20 36 34 2d 62 69 74 20 6f 70 65 72 61 74 69  a 64-bit operati
383f0 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20 20 20 20  ng system...    
38400 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
38410 20 20 20 54 69 63 6b 65 74 20 5b 61 30 36 37 37     Ticket [a0677
38420 33 30 39 66 30 5d 20 68 61 73 20 66 75 72 74 68  309f0] has furth
38430 65 72 20 64 65 74 61 69 6c 73 2e 0d 0a 20 20 20  er details...   
38440 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
38450 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
38460 52 65 67 69 73 74 72 79 48 65 6c 70 65 72 2e 4a  RegistryHelper.J
38470 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 52 6f 6f 74  oinKeyNames(Root
38480 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  KeyName,..      
38490 20 20 20 20 20 20 20 20 20 20 21 70 65 72 55 73            !perUs
384a0 65 72 20 26 26 20 77 6f 77 36 34 20 26 26 20 49  er && wow64 && I
384b0 73 36 34 42 69 74 50 72 6f 63 65 73 73 28 29 20  s64BitProcess() 
384c0 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
384d0 20 20 20 20 20 20 20 57 6f 77 36 34 53 75 62 4b         Wow64SubK
384e0 65 79 4e 61 6d 65 20 3a 20 53 74 72 69 6e 67 2e  eyName : String.
384f0 45 6d 70 74 79 29 3b 0d 0a 20 20 20 20 20 20 20  Empty);..       
38500 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f   }....        //
38510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38550 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
38560 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
38570 73 74 72 69 6e 67 20 47 65 74 53 79 73 74 65 6d  string GetSystem
38580 44 69 72 65 63 74 6f 72 79 28 0d 0a 20 20 20 20  Directory(..    
38590 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f 77          bool wow
385a0 36 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  64..            
385b0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69  )..        {..#i
385c0 66 20 57 49 4e 44 4f 57 53 0d 0a 20 20 20 20 20  f WINDOWS..     
385d0 20 20 20 20 20 20 20 69 66 20 28 77 6f 77 36 34         if (wow64
385e0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
385f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
38600 20 20 69 66 20 28 73 79 73 74 65 6d 44 69 72 65    if (systemDire
38610 63 74 6f 72 79 57 6f 77 36 34 20 3d 3d 20 6e 75  ctoryWow64 == nu
38620 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
38630 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
38640 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73 74              syst
38650 65 6d 44 69 72 65 63 74 6f 72 79 57 6f 77 36 34  emDirectoryWow64
38660 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   =..            
38670 20 20 20 20 20 20 20 20 20 20 20 20 55 6e 73 61              Unsa
38680 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 2e  feNativeMethods.
38690 47 65 74 53 79 73 74 65 6d 44 69 72 65 63 74 6f  GetSystemDirecto
386a0 72 79 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ry();..         
386b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
386c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
386d0 72 6e 20 73 79 73 74 65 6d 44 69 72 65 63 74 6f  rn systemDirecto
386e0 72 79 57 6f 77 36 34 3b 0d 0a 20 20 20 20 20 20  ryWow64;..      
386f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
38700 20 20 20 20 20 65 6c 73 65 0d 0a 23 65 6e 64 69       else..#endi
38710 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  f..            {
38720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
38730 20 20 69 66 20 28 73 79 73 74 65 6d 44 69 72 65    if (systemDire
38740 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ctory == null)..
38750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38760 20 20 20 20 73 79 73 74 65 6d 44 69 72 65 63 74      systemDirect
38770 6f 72 79 20 3d 20 45 6e 76 69 72 6f 6e 6d 65 6e  ory = Environmen
38780 74 2e 53 79 73 74 65 6d 44 69 72 65 63 74 6f 72  t.SystemDirector
38790 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  y;....          
387a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 79 73        return sys
387b0 74 65 6d 44 69 72 65 63 74 6f 72 79 3b 0d 0a 20  temDirectory;.. 
387c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
387d0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
387e0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
387f0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
38800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
38840 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
38850 6e 20 47 65 6e 65 72 69 63 20 53 74 72 69 6e 67  n Generic String
38860 20 48 61 6e 64 6c 69 6e 67 0d 0a 20 20 20 20 20   Handling..     
38870 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
38880 63 20 73 74 72 69 6e 67 20 46 6f 72 44 69 73 70  c string ForDisp
38890 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lay(..          
388a0 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a    object value..
388b0 20