diff --git a/README.md b/README.md
index 335fa20..a512f47 100644
--- a/README.md
+++ b/README.md
@@ -13,6 +13,12 @@
- **Backup Database** : Dimenu ini user bisa membackup database mereka dan file yang terbackup akan langsung masuk otomatis kedalam folder Downloads.
- **Modern UI** : Aplikasi ini adalah aplikasi yang dibuat menggunakan framework GUNA UI sehingga menjadi UI yang lebih baik daripada bawaan winforms.
+### Penambahan dan Perubahan V1.1
+- **Login** : Saat memulai aplikasi diharuskan untuk login kedalam aplikasi
+- **Daftar** : Agar tidak repot, saya juga membuatkan form daftar. jadi, sebelum anda masuk kedalam applikasi. kamu diharuskan untuk daftar terlebih dahulu baru setelah itu bisa login.
+- **MD5 Hash** : Password yang akan di inputkan ke database adalah hasil dari MD5 Hash.
+- **Menghapus & Mengganti Gambar** : Ada beberapa gambar yang saya hapus dan saya ganti. Agar tidak banyak memakan ukuran program.
+
### Tools
Agar dapat membuka file **SIPP**, maka ada beberapa tools yang harus di install yaitu :
- Visual Studio 2019
diff --git a/app/.vs/SIPP/v16/.suo b/app/.vs/SIPP/v16/.suo
index 41556f1..59853f2 100644
Binary files a/app/.vs/SIPP/v16/.suo and b/app/.vs/SIPP/v16/.suo differ
diff --git a/app/Program.cs b/app/Program.cs
index 52e2e5e..4bcc1fe 100644
--- a/app/Program.cs
+++ b/app/Program.cs
@@ -1,4 +1,5 @@
using SIPP.controller;
+using SIPP.view.winform;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -22,11 +23,11 @@ static void Main()
connection.OpenConection();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new SIPP());
+ Application.Run(new Login());
}
- catch(Exception e)
+ catch(Exception ex)
{
- MessageBox.Show(e.Message,"Aplikasi Gagal Dijalankan");
+ MessageBox.Show(ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
}
diff --git a/app/Properties/Resources.Designer.cs b/app/Properties/Resources.Designer.cs
index 37fe89a..16d2489 100644
--- a/app/Properties/Resources.Designer.cs
+++ b/app/Properties/Resources.Designer.cs
@@ -60,6 +60,16 @@ internal Resources() {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap binder_4x {
+ get {
+ object obj = ResourceManager.GetObject("binder@4x", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
@@ -80,6 +90,16 @@ internal static System.Drawing.Bitmap icons8_content_100px_1 {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap icons8_customer_100px {
+ get {
+ object obj = ResourceManager.GetObject("icons8_customer_100px", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
@@ -163,9 +183,29 @@ internal static System.Drawing.Bitmap icons8_easy_to_find_100px_1 {
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
- internal static System.Drawing.Bitmap icons8_inscription_100px {
+ internal static System.Drawing.Bitmap icons8_lock_100px {
+ get {
+ object obj = ResourceManager.GetObject("icons8_lock_100px", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap icons8_name_tag_100px {
get {
- object obj = ResourceManager.GetObject("icons8_inscription_100px", resourceCulture);
+ object obj = ResourceManager.GetObject("icons8_name_tag_100px", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap icons8_package_100px {
+ get {
+ object obj = ResourceManager.GetObject("icons8_package_100px", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
@@ -180,6 +220,16 @@ internal static System.Drawing.Bitmap icons8_paper_money_100px {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap icons8_pricing_100px {
+ get {
+ object obj = ResourceManager.GetObject("icons8_pricing_100px", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
@@ -219,5 +269,15 @@ internal static System.Drawing.Bitmap icons8_product_100px_1 {
return ((System.Drawing.Bitmap)(obj));
}
}
+
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap icons8_search_100px {
+ get {
+ object obj = ResourceManager.GetObject("icons8_search_100px", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
}
}
diff --git a/app/Properties/Resources.resx b/app/Properties/Resources.resx
index b810ff9..92dda8c 100644
--- a/app/Properties/Resources.resx
+++ b/app/Properties/Resources.resx
@@ -121,17 +121,26 @@
..\Resources\icons8_data_backup_100px_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\icons8_content_100px_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\icons8_easy_to_find_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\icons8_customer_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\icons8_database_restore_100px_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\icons8_name_tag_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\icons8_delete_database_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\icons8_paper_money_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
-
- ..\Resources\icons8_easy_to_find_100px_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\icons8_product_100px_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\Resources\icons8_database_restore_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -139,8 +148,14 @@
..\Resources\icons8_content_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\icons8_data_backup_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\icons8_package_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\icons8_lock_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\icons8_paper_money_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
..\Resources\icons8_product_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -154,16 +169,19 @@
..\Resources\icons8_delete_database_100px_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\icons8_inscription_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\icons8_pricing_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\icons8_product_100px_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\icons8_search_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\icons8_content_100px_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\icons8_easy_to_find_100px_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\icons8_database_restore_100px_1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\icons8_data_backup_100px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\binder@4x.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
\ No newline at end of file
diff --git a/app/Resources/binder@4x.png b/app/Resources/binder@4x.png
new file mode 100644
index 0000000..ece6d35
Binary files /dev/null and b/app/Resources/binder@4x.png differ
diff --git a/app/Resources/blob.png b/app/Resources/blob.png
new file mode 100644
index 0000000..046dfe6
Binary files /dev/null and b/app/Resources/blob.png differ
diff --git a/app/Resources/icons8_customer_100px.png b/app/Resources/icons8_customer_100px.png
new file mode 100644
index 0000000..131d3a8
Binary files /dev/null and b/app/Resources/icons8_customer_100px.png differ
diff --git a/app/Resources/icons8_lock_100px.png b/app/Resources/icons8_lock_100px.png
new file mode 100644
index 0000000..bb18ab3
Binary files /dev/null and b/app/Resources/icons8_lock_100px.png differ
diff --git a/app/Resources/icons8_name_tag_100px.png b/app/Resources/icons8_name_tag_100px.png
new file mode 100644
index 0000000..d60a041
Binary files /dev/null and b/app/Resources/icons8_name_tag_100px.png differ
diff --git a/app/Resources/icons8_package_100px.png b/app/Resources/icons8_package_100px.png
new file mode 100644
index 0000000..e8dcf41
Binary files /dev/null and b/app/Resources/icons8_package_100px.png differ
diff --git a/app/Resources/icons8_pricing_100px.png b/app/Resources/icons8_pricing_100px.png
new file mode 100644
index 0000000..213b74c
Binary files /dev/null and b/app/Resources/icons8_pricing_100px.png differ
diff --git a/app/Resources/icons8_search_100px.png b/app/Resources/icons8_search_100px.png
new file mode 100644
index 0000000..75143ee
Binary files /dev/null and b/app/Resources/icons8_search_100px.png differ
diff --git a/app/Resources/login.png b/app/Resources/login.png
new file mode 100644
index 0000000..9b4d698
Binary files /dev/null and b/app/Resources/login.png differ
diff --git a/app/Resources/login1.png b/app/Resources/login1.png
new file mode 100644
index 0000000..08ba313
Binary files /dev/null and b/app/Resources/login1.png differ
diff --git a/app/SIPP.csproj b/app/SIPP.csproj
index 37adacd..f80ffd4 100644
--- a/app/SIPP.csproj
+++ b/app/SIPP.csproj
@@ -104,9 +104,17 @@
+
+
+
+
+ True
+ True
+ Resources.resx
+
@@ -133,6 +141,12 @@
Laporan_User.cs
+
+ Form
+
+
+ Daftar.cs
+
Form
@@ -141,6 +155,12 @@
+
+ Form
+
+
+ Login.cs
+
Barang_User.cs
@@ -153,19 +173,20 @@
Laporan_User.cs
+
+ Daftar.cs
+
Form1.cs
ResXFileCodeGenerator
- Resources.Designer.cs
Designer
+ Resources.Designer.cs
+
+
+ Login.cs
-
- True
- Resources.resx
- True
-
SettingsSingleFileGenerator
@@ -180,9 +201,6 @@
-
-
-
@@ -228,5 +246,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/UpgradeLog.htm b/app/UpgradeLog.htm
new file mode 100644
index 0000000..27ce50d
Binary files /dev/null and b/app/UpgradeLog.htm differ
diff --git a/app/bin/Debug/SIPP.exe b/app/bin/Debug/SIPP.exe
index 13c7e5f..a56f436 100644
Binary files a/app/bin/Debug/SIPP.exe and b/app/bin/Debug/SIPP.exe differ
diff --git a/app/bin/Debug/SIPP.pdb b/app/bin/Debug/SIPP.pdb
index 2e5a6fc..6cce072 100644
Binary files a/app/bin/Debug/SIPP.pdb and b/app/bin/Debug/SIPP.pdb differ
diff --git a/app/bin/Release/BouncyCastle.Crypto.dll b/app/bin/Release/BouncyCastle.Crypto.dll
new file mode 100644
index 0000000..05036dd
Binary files /dev/null and b/app/bin/Release/BouncyCastle.Crypto.dll differ
diff --git a/app/bin/Release/Google.Protobuf.dll b/app/bin/Release/Google.Protobuf.dll
new file mode 100644
index 0000000..aafab84
Binary files /dev/null and b/app/bin/Release/Google.Protobuf.dll differ
diff --git a/app/bin/Release/Google.Protobuf.pdb b/app/bin/Release/Google.Protobuf.pdb
new file mode 100644
index 0000000..4941812
Binary files /dev/null and b/app/bin/Release/Google.Protobuf.pdb differ
diff --git a/app/bin/Release/Google.Protobuf.xml b/app/bin/Release/Google.Protobuf.xml
new file mode 100644
index 0000000..0396d5a
--- /dev/null
+++ b/app/bin/Release/Google.Protobuf.xml
@@ -0,0 +1,9069 @@
+
+
+
+ Google.Protobuf
+
+
+
+
+ Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy
+
+
+
+
+ The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy
+
+
+
+
+ Determines which copy routine to use based on the number of bytes to be copied.
+
+
+
+
+ Reverses the order of bytes in the array
+
+
+
+
+ Immutable array of bytes.
+
+
+
+
+ Unsafe operations that can cause IO Failure and/or other catastrophic side-effects.
+
+
+
+
+ Constructs a new ByteString from the given byte array. The array is
+ *not* copied, and must not be modified after this constructor is called.
+
+
+
+
+ Internal use only. Ensure that the provided array is not mutated and belongs to this instance.
+
+
+
+
+ Constructs a new ByteString from the given byte array. The array is
+ *not* copied, and must not be modified after this constructor is called.
+
+
+
+
+ Returns an empty ByteString.
+
+
+
+
+ Returns the length of this ByteString in bytes.
+
+
+
+
+ Returns true if this byte string is empty, false otherwise.
+
+
+
+
+ Provides read-only access to the data of this .
+ No data is copied so this is the most efficient way of accessing.
+
+
+
+
+ Converts this into a byte array.
+
+ The data is copied - changes to the returned array will not be reflected in this ByteString.
+ A byte array with the same data as this ByteString.
+
+
+
+ Converts this into a standard base64 representation.
+
+ A base64 representation of this ByteString.
+
+
+
+ Constructs a from the Base64 Encoded String.
+
+
+
+
+ Constructs a from data in the given stream, synchronously.
+
+ If successful, will be read completely, from the position
+ at the start of the call.
+ The stream to copy into a ByteString.
+ A ByteString with content read from the given stream.
+
+
+
+ Constructs a from data in the given stream, asynchronously.
+
+ If successful, will be read completely, from the position
+ at the start of the call.
+ The stream to copy into a ByteString.
+ The cancellation token to use when reading from the stream, if any.
+ A ByteString with content read from the given stream.
+
+
+
+ Constructs a from the given array. The contents
+ are copied, so further modifications to the array will not
+ be reflected in the returned ByteString.
+ This method can also be invoked in ByteString.CopyFrom(0xaa, 0xbb, ...) form
+ which is primarily useful for testing.
+
+
+
+
+ Constructs a from a portion of a byte array.
+
+
+
+
+ Constructs a from a read only span. The contents
+ are copied, so further modifications to the span will not
+ be reflected in the returned .
+
+
+
+
+ Creates a new by encoding the specified text with
+ the given encoding.
+
+
+
+
+ Creates a new by encoding the specified text in UTF-8.
+
+
+
+
+ Retuns the byte at the given index.
+
+
+
+
+ Converts this into a string by applying the given encoding.
+
+
+ This method should only be used to convert binary data which was the result of encoding
+ text with the given encoding.
+
+ The encoding to use to decode the binary data into text.
+ The result of decoding the binary data with the given decoding.
+
+
+
+ Converts this into a string by applying the UTF-8 encoding.
+
+
+ This method should only be used to convert binary data which was the result of encoding
+ text with UTF-8.
+
+ The result of decoding the binary data with the given decoding.
+
+
+
+ Returns an iterator over the bytes in this .
+
+ An iterator over the bytes in this object.
+
+
+
+ Returns an iterator over the bytes in this .
+
+ An iterator over the bytes in this object.
+
+
+
+ Creates a CodedInputStream from this ByteString's data.
+
+
+
+
+ Compares two byte strings for equality.
+
+ The first byte string to compare.
+ The second byte string to compare.
+ true if the byte strings are equal; false otherwise.
+
+
+
+ Compares two byte strings for inequality.
+
+ The first byte string to compare.
+ The second byte string to compare.
+ false if the byte strings are equal; true otherwise.
+
+
+
+ Compares this byte string with another object.
+
+ The object to compare this with.
+ true if refers to an equal ; false otherwise.
+
+
+
+ Returns a hash code for this object. Two equal byte strings
+ will return the same hash code.
+
+ A hash code for this object.
+
+
+
+ Compares this byte string with another.
+
+ The to compare this with.
+ true if refers to an equal byte string; false otherwise.
+
+
+
+ Used internally by CodedOutputStream to avoid creating a copy for the write
+
+
+
+
+ Copies the entire byte array to the destination array provided at the offset specified.
+
+
+
+
+ Writes the entire byte array to the provided stream
+
+
+
+
+ Reads and decodes protocol message fields.
+
+
+
+ This class is generally used by generated code to read appropriate
+ primitives from the stream. It effectively encapsulates the lowest
+ levels of protocol buffer format.
+
+
+ Repeated fields and map fields are not handled by this class; use
+ and to serialize such fields.
+
+
+
+
+
+ Whether to leave the underlying stream open when disposing of this stream.
+ This is always true when there's no stream.
+
+
+
+
+ Buffer of data read from the stream or provided at construction time.
+
+
+
+
+ The index of the buffer at which we need to refill from the stream (if there is one).
+
+
+
+
+ The position within the current buffer (i.e. the next byte to read)
+
+
+
+
+ The stream to read further input from, or null if the byte array buffer was provided
+ directly on construction, with no further data available.
+
+
+
+
+ The last tag we read. 0 indicates we've read to the end of the stream
+ (or haven't read anything yet).
+
+
+
+
+ The next tag, used to store the value read by PeekTag.
+
+
+
+
+ The total number of bytes read before the current buffer. The
+ total bytes read up to the current position can be computed as
+ totalBytesRetired + bufferPos.
+
+
+
+
+ The absolute position of the end of the current message.
+
+
+
+
+ Creates a new CodedInputStream reading data from the given byte array.
+
+
+
+
+ Creates a new that reads from the given byte array slice.
+
+
+
+
+ Creates a new reading data from the given stream, which will be disposed
+ when the returned object is disposed.
+
+ The stream to read from.
+
+
+
+ Creates a new reading data from the given stream.
+
+ The stream to read from.
+ true to leave open when the returned
+ is disposed; false to dispose of the given stream when the
+ returned object is disposed.
+
+
+
+ Creates a new CodedInputStream reading data from the given
+ stream and buffer, using the default limits.
+
+
+
+
+ Creates a new CodedInputStream reading data from the given
+ stream and buffer, using the specified limits.
+
+
+ This chains to the version with the default limits instead of vice versa to avoid
+ having to check that the default values are valid every time.
+
+
+
+
+ Creates a with the specified size and recursion limits, reading
+ from an input stream.
+
+
+ This method exists separately from the constructor to reduce the number of constructor overloads.
+ It is likely to be used considerably less frequently than the constructors, as the default limits
+ are suitable for most use cases.
+
+ The input stream to read from
+ The total limit of data to read from the stream.
+ The maximum recursion depth to allow while reading.
+ A CodedInputStream reading from with the specified size
+ and recursion limits.
+
+
+
+ Returns the current position in the input stream, or the position in the input buffer
+
+
+
+
+ Returns the last tag read, or 0 if no tags have been read or we've read beyond
+ the end of the stream.
+
+
+
+
+ Returns the size limit for this stream.
+
+
+ This limit is applied when reading from the underlying stream, as a sanity check. It is
+ not applied when reading from a byte array data source without an underlying stream.
+ The default value is Int32.MaxValue.
+
+
+ The size limit.
+
+
+
+
+ Returns the recursion limit for this stream. This limit is applied whilst reading messages,
+ to avoid maliciously-recursive data.
+
+
+ The default limit is 100.
+
+
+ The recursion limit for this stream.
+
+
+
+
+ Internal-only property; when set to true, unknown fields will be discarded while parsing.
+
+
+
+
+ Internal-only property; provides extension identifiers to compatible messages while parsing.
+
+
+
+
+ Disposes of this instance, potentially closing any underlying stream.
+
+
+ As there is no flushing to perform here, disposing of a which
+ was constructed with the leaveOpen option parameter set to true (or one which
+ was constructed to read from a byte array) has no effect.
+
+
+
+
+ Verifies that the last call to ReadTag() returned tag 0 - in other words,
+ we've reached the end of the stream when we expected to.
+
+ The
+ tag read was not the one specified
+
+
+
+ Peeks at the next field tag. This is like calling , but the
+ tag is not consumed. (So a subsequent call to will return the
+ same value.)
+
+
+
+
+ Reads a field tag, returning the tag of 0 for "end of stream".
+
+
+ If this method returns 0, it doesn't necessarily mean the end of all
+ the data in this CodedInputStream; it may be the end of the logical stream
+ for an embedded message, for example.
+
+ The next field tag, or 0 for end of stream. (0 is never a valid tag.)
+
+
+
+ Skips the data for the field with the tag we've just read.
+ This should be called directly after , when
+ the caller wishes to skip an unknown field.
+
+
+ This method throws if the last-read tag was an end-group tag.
+ If a caller wishes to skip a group, they should skip the whole group, by calling this method after reading the
+ start-group tag. This behavior allows callers to call this method on any field they don't understand, correctly
+ resulting in an error if an end-group tag has not been paired with an earlier start-group tag.
+
+ The last tag was an end-group tag
+ The last read operation read to the end of the logical stream
+
+
+
+ Skip a group.
+
+
+
+
+ Reads a double field from the stream.
+
+
+
+
+ Reads a float field from the stream.
+
+
+
+
+ Reads a uint64 field from the stream.
+
+
+
+
+ Reads an int64 field from the stream.
+
+
+
+
+ Reads an int32 field from the stream.
+
+
+
+
+ Reads a fixed64 field from the stream.
+
+
+
+
+ Reads a fixed32 field from the stream.
+
+
+
+
+ Reads a bool field from the stream.
+
+
+
+
+ Reads a string field from the stream.
+
+
+
+
+ Reads an embedded message field value from the stream.
+
+
+
+
+ Reads an embedded group field from the stream.
+
+
+
+
+ Reads an embedded group unknown field from the stream.
+
+
+
+
+ Reads a bytes field value from the stream.
+
+
+
+
+ Reads a uint32 field value from the stream.
+
+
+
+
+ Reads an enum field value from the stream.
+
+
+
+
+ Reads an sfixed32 field value from the stream.
+
+
+
+
+ Reads an sfixed64 field value from the stream.
+
+
+
+
+ Reads an sint32 field value from the stream.
+
+
+
+
+ Reads an sint64 field value from the stream.
+
+
+
+
+ Reads a length for length-delimited data.
+
+
+ This is internally just reading a varint, but this method exists
+ to make the calling code clearer.
+
+
+
+
+ Peeks at the next tag in the stream. If it matches ,
+ the tag is consumed and the method returns true; otherwise, the
+ stream is left in the original position and the method returns false.
+
+
+
+
+ Same code as ReadRawVarint32, but read each byte individually, checking for
+ buffer overflow.
+
+
+
+
+ Reads a raw Varint from the stream. If larger than 32 bits, discard the upper bits.
+ This method is optimised for the case where we've got lots of data in the buffer.
+ That means we can check the size just once, then just read directly from the buffer
+ without constant rechecking of the buffer length.
+
+
+
+
+ Reads a varint from the input one byte at a time, so that it does not
+ read any bytes after the end of the varint. If you simply wrapped the
+ stream in a CodedInputStream and used ReadRawVarint32(Stream)
+ then you would probably end up reading past the end of the varint since
+ CodedInputStream buffers its input.
+
+
+
+
+
+
+ Reads a raw varint from the stream.
+
+
+
+
+ Reads a 32-bit little-endian integer from the stream.
+
+
+
+
+ Reads a 64-bit little-endian integer from the stream.
+
+
+
+
+ Decode a 32-bit value with ZigZag encoding.
+
+
+ ZigZag encodes signed integers into values that can be efficiently
+ encoded with varint. (Otherwise, negative values must be
+ sign-extended to 64 bits to be varint encoded, thus always taking
+ 10 bytes on the wire.)
+
+
+
+
+ Decode a 32-bit value with ZigZag encoding.
+
+
+ ZigZag encodes signed integers into values that can be efficiently
+ encoded with varint. (Otherwise, negative values must be
+ sign-extended to 64 bits to be varint encoded, thus always taking
+ 10 bytes on the wire.)
+
+
+
+
+ Sets currentLimit to (current position) + byteLimit. This is called
+ when descending into a length-delimited embedded message. The previous
+ limit is returned.
+
+ The old limit.
+
+
+
+ Discards the current limit, returning the previous limit.
+
+
+
+
+ Returns whether or not all the data before the limit has been read.
+
+
+
+
+
+ Returns true if the stream has reached the end of the input. This is the
+ case if either the end of the underlying input source has been reached or
+ the stream has reached a limit created using PushLimit.
+
+
+
+
+ Called when buffer is empty to read more bytes from the
+ input. If is true, RefillBuffer() gurantees that
+ either there will be at least one byte in the buffer when it returns
+ or it will throw an exception. If is false,
+ RefillBuffer() returns false if no more bytes were available.
+
+
+
+
+
+
+ Read one byte from the input.
+
+
+ the end of the stream or the current limit was reached
+
+
+
+
+ Reads a fixed size of bytes from the input.
+
+
+ the end of the stream or the current limit was reached
+
+
+
+
+ Reads and discards bytes.
+
+ the end of the stream
+ or the current limit was reached
+
+
+
+ Abstraction of skipping to cope with streams which can't really skip.
+
+
+
+
+ Encodes and writes protocol message fields.
+
+
+
+ This class is generally used by generated code to write appropriate
+ primitives to the stream. It effectively encapsulates the lowest
+ levels of protocol buffer format. Unlike some other implementations,
+ this does not include combined "write tag and value" methods. Generated
+ code knows the exact byte representations of the tags they're going to write,
+ so there's no need to re-encode them each time. Manually-written code calling
+ this class should just call one of the WriteTag overloads before each value.
+
+
+ Repeated fields and map fields are not handled by this class; use RepeatedField<T>
+ and MapField<TKey, TValue> to serialize such fields.
+
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ double field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ float field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ uint64 field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode an
+ int64 field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode an
+ int32 field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ fixed64 field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ fixed32 field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ bool field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ string field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ group field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode an
+ embedded message field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ bytes field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ uint32 field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a
+ enum field, including the tag. The caller is responsible for
+ converting the enum value to its numeric value.
+
+
+
+
+ Computes the number of bytes that would be needed to encode an
+ sfixed32 field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode an
+ sfixed64 field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode an
+ sint32 field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode an
+ sint64 field, including the tag.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a length,
+ as written by .
+
+
+
+
+ Computes the number of bytes that would be needed to encode a varint.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a varint.
+
+
+
+
+ Computes the number of bytes that would be needed to encode a tag.
+
+
+
+
+ The buffer size used by CreateInstance(Stream).
+
+
+
+
+ Creates a new CodedOutputStream that writes directly to the given
+ byte array. If more bytes are written than fit in the array,
+ OutOfSpaceException will be thrown.
+
+
+
+
+ Creates a new CodedOutputStream that writes directly to the given
+ byte array slice. If more bytes are written than fit in the array,
+ OutOfSpaceException will be thrown.
+
+
+
+
+ Creates a new which write to the given stream, and disposes of that
+ stream when the returned CodedOutputStream is disposed.
+
+ The stream to write to. It will be disposed when the returned CodedOutputStream is disposed.
+
+
+
+ Creates a new CodedOutputStream which write to the given stream and uses
+ the specified buffer size.
+
+ The stream to write to. It will be disposed when the returned CodedOutputStream is disposed.
+ The size of buffer to use internally.
+
+
+
+ Creates a new CodedOutputStream which write to the given stream.
+
+ The stream to write to.
+ If true, is left open when the returned CodedOutputStream is disposed;
+ if false, the provided stream is disposed as well.
+
+
+
+ Creates a new CodedOutputStream which write to the given stream and uses
+ the specified buffer size.
+
+ The stream to write to.
+ The size of buffer to use internally.
+ If true, is left open when the returned CodedOutputStream is disposed;
+ if false, the provided stream is disposed as well.
+
+
+
+ Returns the current position in the stream, or the position in the output buffer
+
+
+
+
+ Writes a double field value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes a float field value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes a uint64 field value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes an int64 field value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes an int32 field value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes a fixed64 field value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes a fixed32 field value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes a bool field value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes a string field value, without a tag, to the stream.
+ The data is length-prefixed.
+
+ The value to write
+
+
+
+ Writes a message, without a tag, to the stream.
+ The data is length-prefixed.
+
+ The value to write
+
+
+
+ Writes a group, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Write a byte string, without a tag, to the stream.
+ The data is length-prefixed.
+
+ The value to write
+
+
+
+ Writes a uint32 value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes an enum value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes an sfixed32 value, without a tag, to the stream.
+
+ The value to write.
+
+
+
+ Writes an sfixed64 value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes an sint32 value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes an sint64 value, without a tag, to the stream.
+
+ The value to write
+
+
+
+ Writes a length (in bytes) for length-delimited data.
+
+
+ This method simply writes a rawint, but exists for clarity in calling code.
+
+ Length value, in bytes.
+
+
+
+ Encodes and writes a tag.
+
+ The number of the field to write the tag for
+ The wire format type of the tag to write
+
+
+
+ Writes an already-encoded tag.
+
+ The encoded tag
+
+
+
+ Writes the given single-byte tag directly to the stream.
+
+ The encoded tag
+
+
+
+ Writes the given two-byte tag directly to the stream.
+
+ The first byte of the encoded tag
+ The second byte of the encoded tag
+
+
+
+ Writes the given three-byte tag directly to the stream.
+
+ The first byte of the encoded tag
+ The second byte of the encoded tag
+ The third byte of the encoded tag
+
+
+
+ Writes the given four-byte tag directly to the stream.
+
+ The first byte of the encoded tag
+ The second byte of the encoded tag
+ The third byte of the encoded tag
+ The fourth byte of the encoded tag
+
+
+
+ Writes the given five-byte tag directly to the stream.
+
+ The first byte of the encoded tag
+ The second byte of the encoded tag
+ The third byte of the encoded tag
+ The fourth byte of the encoded tag
+ The fifth byte of the encoded tag
+
+
+
+ Writes a 32 bit value as a varint. The fast route is taken when
+ there's enough buffer space left to whizz through without checking
+ for each byte; otherwise, we resort to calling WriteRawByte each time.
+
+
+
+
+ Writes out an array of bytes.
+
+
+
+
+ Writes out part of an array of bytes.
+
+
+
+
+ Encode a 32-bit value with ZigZag encoding.
+
+
+ ZigZag encodes signed integers into values that can be efficiently
+ encoded with varint. (Otherwise, negative values must be
+ sign-extended to 64 bits to be varint encoded, thus always taking
+ 10 bytes on the wire.)
+
+
+
+
+ Encode a 64-bit value with ZigZag encoding.
+
+
+ ZigZag encodes signed integers into values that can be efficiently
+ encoded with varint. (Otherwise, negative values must be
+ sign-extended to 64 bits to be varint encoded, thus always taking
+ 10 bytes on the wire.)
+
+
+
+
+ Indicates that a CodedOutputStream wrapping a flat byte array
+ ran out of space.
+
+
+
+
+ Flushes any buffered data and optionally closes the underlying stream, if any.
+
+
+
+ By default, any underlying stream is closed by this method. To configure this behaviour,
+ use a constructor overload with a leaveOpen parameter. If this instance does not
+ have an underlying stream, this method does nothing.
+
+
+ For the sake of efficiency, calling this method does not prevent future write calls - but
+ if a later write ends up writing to a stream which has been disposed, that is likely to
+ fail. It is recommend that you not call any other methods after this.
+
+
+
+
+
+ Flushes any buffered data to the underlying stream (if there is one).
+
+
+
+
+ Verifies that SpaceLeft returns zero. It's common to create a byte array
+ that is exactly big enough to hold a message, then write to it with
+ a CodedOutputStream. Calling CheckNoSpaceLeft after writing verifies that
+ the message was actually as big as expected, which can help bugs.
+
+
+
+
+ If writing to a flat array, returns the space left in the array. Otherwise,
+ throws an InvalidOperationException.
+
+
+
+
+ Utility to compare if two Lists are the same, and the hash code
+ of a List.
+
+
+
+
+ Checks if two lists are equal.
+
+
+
+
+ Gets the list's hash code.
+
+
+
+
+ Representation of a map field in a Protocol Buffer message.
+
+ Key type in the map. Must be a type supported by Protocol Buffer map keys.
+ Value type in the map. Must be a type supported by Protocol Buffers.
+
+
+ For string keys, the equality comparison is provided by .
+
+
+ Null values are not permitted in the map, either for wrapper types or regular messages.
+ If a map is deserialized from a data stream and the value is missing from an entry, a default value
+ is created instead. For primitive types, that is the regular default value (0, the empty string and so
+ on); for message types, an empty instance of the message is created, as if the map entry contained a 0-length
+ encoded value for the field.
+
+
+ This implementation does not generally prohibit the use of key/value types which are not
+ supported by Protocol Buffers (e.g. using a key type of byte
) but nor does it guarantee
+ that all operations will work in such cases.
+
+
+ The order in which entries are returned when iterating over this object is undefined, and may change
+ in future versions.
+
+
+
+
+
+ Creates a deep clone of this object.
+
+
+ A deep clone of this object.
+
+
+
+
+ Adds the specified key/value pair to the map.
+
+
+ This operation fails if the key already exists in the map. To replace an existing entry, use the indexer.
+
+ The key to add
+ The value to add.
+ The given key already exists in map.
+
+
+
+ Determines whether the specified key is present in the map.
+
+ The key to check.
+ true if the map contains the given key; false otherwise.
+
+
+
+ Removes the entry identified by the given key from the map.
+
+ The key indicating the entry to remove from the map.
+ true if the map contained the given key before the entry was removed; false otherwise.
+
+
+
+ Gets the value associated with the specified key.
+
+ The key whose value to get.
+ When this method returns, the value associated with the specified key, if the key is found;
+ otherwise, the default value for the type of the parameter.
+ This parameter is passed uninitialized.
+ true if the map contains an element with the specified key; otherwise, false.
+
+
+
+ Gets or sets the value associated with the specified key.
+
+ The key of the value to get or set.
+ The property is retrieved and key does not exist in the collection.
+ The value associated with the specified key. If the specified key is not found,
+ a get operation throws a , and a set operation creates a new element with the specified key.
+
+
+
+ Gets a collection containing the keys in the map.
+
+
+
+
+ Gets a collection containing the values in the map.
+
+
+
+
+ Adds the specified entries to the map. The keys and values are not automatically cloned.
+
+ The entries to add to the map.
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ An enumerator that can be used to iterate through the collection.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Adds the specified item to the map.
+
+ The item to add to the map.
+
+
+
+ Removes all items from the map.
+
+
+
+
+ Determines whether map contains an entry equivalent to the given key/value pair.
+
+ The key/value pair to find.
+
+
+
+
+ Copies the key/value pairs in this map to an array.
+
+ The array to copy the entries into.
+ The index of the array at which to start copying values.
+
+
+
+ Removes the specified key/value pair from the map.
+
+ Both the key and the value must be found for the entry to be removed.
+ The key/value pair to remove.
+ true if the key/value pair was found and removed; false otherwise.
+
+
+
+ Gets the number of elements contained in the map.
+
+
+
+
+ Gets a value indicating whether the map is read-only.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Compares this map with another for equality.
+
+
+ The order of the key/value pairs in the maps is not deemed significant in this comparison.
+
+ The map to compare this with.
+ true if refers to an equal map; false otherwise.
+
+
+
+ Adds entries to the map from the given stream.
+
+
+ It is assumed that the stream is initially positioned after the tag specified by the codec.
+ This method will continue reading entries from the stream until the end is reached, or
+ a different tag is encountered.
+
+ Stream to read from
+ Codec describing how the key/value pairs are encoded
+
+
+
+ Writes the contents of this map to the given coded output stream, using the specified codec
+ to encode each entry.
+
+ The output stream to write to.
+ The codec to use for each entry.
+
+
+
+ Calculates the size of this map based on the given entry codec.
+
+ The codec to use to encode each entry.
+
+
+
+
+ Returns a string representation of this repeated field, in the same
+ way as it would be represented by the default JSON formatter.
+
+
+
+
+ A codec for a specific map field. This contains all the information required to encode and
+ decode the nested messages.
+
+
+
+
+ Creates a new entry codec based on a separate key codec and value codec,
+ and the tag to use for each map entry.
+
+ The key codec.
+ The value codec.
+ The map tag to use to introduce each map entry.
+
+
+
+ The tag used in the enclosing message to indicate map entries.
+
+
+
+
+ A mutable message class, used for parsing and serializing. This
+ delegates the work to a codec, but implements the interface
+ for interop with and .
+ This is nested inside Codec as it's tightly coupled to the associated codec,
+ and it's simpler if it has direct access to all its fields.
+
+
+
+
+ Provides a central place to implement equality comparisons, primarily for bitwise float/double equality.
+
+
+
+
+ Returns an equality comparer for suitable for Protobuf equality comparisons.
+ This is usually just the default equality comparer for the type, but floating point numbers are compared
+ bitwise.
+
+ The type of equality comparer to return.
+ The equality comparer.
+
+
+
+ Returns an equality comparer suitable for comparing 64-bit floating point values, by bitwise comparison.
+ (NaN values are considered equal, but only when they have the same representation.)
+
+
+
+
+ Returns an equality comparer suitable for comparing 32-bit floating point values, by bitwise comparison.
+ (NaN values are considered equal, but only when they have the same representation.)
+
+
+
+
+ Returns an equality comparer suitable for comparing nullable 64-bit floating point values, by bitwise comparison.
+ (NaN values are considered equal, but only when they have the same representation.)
+
+
+
+
+ Returns an equality comparer suitable for comparing nullable 32-bit floating point values, by bitwise comparison.
+ (NaN values are considered equal, but only when they have the same representation.)
+
+
+
+
+ Read-only wrapper around another dictionary.
+
+
+
+
+ The contents of a repeated field: essentially, a collection with some extra
+ restrictions (no null values) and capabilities (deep cloning).
+
+
+ This implementation does not generally prohibit the use of types which are not
+ supported by Protocol Buffers but nor does it guarantee that all operations will work in such cases.
+
+ The element type of the repeated field.
+
+
+
+ Creates a deep clone of this repeated field.
+
+
+ If the field type is
+ a message type, each element is also cloned; otherwise, it is
+ assumed that the field type is primitive (including string and
+ bytes, both of which are immutable) and so a simple copy is
+ equivalent to a deep clone.
+
+ A deep clone of this repeated field.
+
+
+
+ Adds the entries from the given input stream, decoding them with the specified codec.
+
+ The input stream to read from.
+ The codec to use in order to read each entry.
+
+
+
+ Calculates the size of this collection based on the given codec.
+
+ The codec to use when encoding each field.
+ The number of bytes that would be written to a by ,
+ using the same codec.
+
+
+
+ Writes the contents of this collection to the given ,
+ encoding each value using the specified codec.
+
+ The output stream to write to.
+ The codec to use when encoding each value.
+
+
+
+ Gets and sets the capacity of the RepeatedField's internal array. WHen set, the internal array is reallocated to the given capacity.
+ The new value is less than Count -or- when Count is less than 0.
+
+
+
+
+ Adds the specified item to the collection.
+
+ The item to add.
+
+
+
+ Removes all items from the collection.
+
+
+
+
+ Determines whether this collection contains the given item.
+
+ The item to find.
+ true if this collection contains the given item; false otherwise.
+
+
+
+ Copies this collection to the given array.
+
+ The array to copy to.
+ The first index of the array to copy to.
+
+
+
+ Removes the specified item from the collection
+
+ The item to remove.
+ true if the item was found and removed; false otherwise.
+
+
+
+ Gets the number of elements contained in the collection.
+
+
+
+
+ Gets a value indicating whether the collection is read-only.
+
+
+
+
+ Adds all of the specified values into this collection.
+
+ The values to add to this collection.
+
+
+
+ Adds all of the specified values into this collection. This method is present to
+ allow repeated fields to be constructed from queries within collection initializers.
+ Within non-collection-initializer code, consider using the equivalent
+ method instead for clarity.
+
+ The values to add to this collection.
+
+
+
+ Returns an enumerator that iterates through the collection.
+
+
+ An enumerator that can be used to iterate through the collection.
+
+
+
+
+ Determines whether the specified , is equal to this instance.
+
+ The to compare with this instance.
+
+ true if the specified is equal to this instance; otherwise, false.
+
+
+
+
+ Returns an enumerator that iterates through a collection.
+
+
+ An object that can be used to iterate through the collection.
+
+
+
+
+ Returns a hash code for this instance.
+
+
+ A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table.
+
+
+
+
+ Compares this repeated field with another for equality.
+
+ The repeated field to compare this with.
+ true if refers to an equal repeated field; false otherwise.
+
+
+
+ Returns the index of the given item within the collection, or -1 if the item is not
+ present.
+
+ The item to find in the collection.
+ The zero-based index of the item, or -1 if it is not found.
+
+
+
+ Inserts the given item at the specified index.
+
+ The index at which to insert the item.
+ The item to insert.
+
+
+
+ Removes the item at the given index.
+
+ The zero-based index of the item to remove.
+
+
+
+ Returns a string representation of this repeated field, in the same
+ way as it would be represented by the default JSON formatter.
+
+
+
+
+ Gets or sets the item at the specified index.
+
+
+ The element at the specified index.
+
+ The zero-based index of the element to get or set.
+ The item at the specified index.
+
+
+
+ Extension methods for , effectively providing
+ the familiar members from previous desktop framework versions while
+ targeting the newer releases, .NET Core etc.
+
+
+
+
+ Returns the public getter of a property, or null if there is no such getter
+ (either because it's read-only, or the getter isn't public).
+
+
+
+
+ Returns the public setter of a property, or null if there is no such setter
+ (either because it's write-only, or the setter isn't public).
+
+
+
+
+ Provides extension methods on Type that just proxy to TypeInfo.
+ These are used to support the new type system from .NET 4.5, without
+ having calls to GetTypeInfo all over the place. While the methods here are meant to be
+ broadly compatible with the desktop framework, there are some subtle differences in behaviour - but
+ they're not expected to affect our use cases. While the class is internal, that should be fine: we can
+ evaluate each new use appropriately.
+
+
+
+
+ See https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom
+
+
+
+
+ Returns a representation of the public property associated with the given name in the given type,
+ including inherited properties or null if there is no such public property.
+ Here, "public property" means a property where either the getter, or the setter, or both, is public.
+
+
+
+
+ Returns a representation of the public method associated with the given name in the given type,
+ including inherited methods.
+
+
+ This has a few differences compared with Type.GetMethod in the desktop framework. It will throw
+ if there is an ambiguous match even between a private method and a public one, but it *won't* throw
+ if there are two overloads at different levels in the type hierarchy (e.g. class Base declares public void Foo(int) and
+ class Child : Base declares public void Foo(long)).
+
+ One type in the hierarchy declared more than one method with the same name
+
+
+
+ Represents a non-generic extension definition. This API is experimental and subject to change.
+
+
+
+
+ Internal use. Creates a new extension with the specified field number.
+
+
+
+
+ Gets the field number of this extension
+
+
+
+
+ Represents a type-safe extension identifier used for getting and setting single extension values in instances.
+ This API is experimental and subject to change.
+
+ The message type this field applies to
+ The field value type of this extension
+
+
+
+ Creates a new extension identifier with the specified field number and codec
+
+
+
+
+ Represents a type-safe extension identifier used for getting repeated extension values in instances.
+ This API is experimental and subject to change.
+
+ The message type this field applies to
+ The repeated field value type of this extension
+
+
+
+ Creates a new repeated extension identifier with the specified field number and codec
+
+
+
+
+ Provides extensions to messages while parsing. This API is experimental and subject to change.
+
+
+
+
+ Creates a new empty extension registry
+
+
+
+
+ Gets the total number of extensions in this extension registry
+
+
+
+
+ Returns whether the registry is readonly
+
+
+
+
+ Adds the specified extension to the registry
+
+
+
+
+ Adds the specified extensions to the reigstry
+
+
+
+
+ Clears the registry of all values
+
+
+
+
+ Gets whether the extension registry contains the specified extension
+
+
+
+
+ Copies the arrays in the registry set to the specified array at the specified index
+
+ The array to copy to
+ The array index to start at
+
+
+
+ Returns an enumerator to enumerate through the items in the registry
+
+ Returns an enumerator for the extensions in this registry
+
+
+
+ Removes the specified extension from the set
+
+ The extension
+ true if the extension was removed, otherwise false
+
+
+
+ Clones the registry into a new registry
+
+
+
+
+ Methods for managing s with null checking.
+
+ Most users will not use this class directly and its API is experimental and subject to change.
+
+
+
+
+ Gets the value of the specified extension
+
+
+
+
+ Gets the value of the specified repeated extension or null if it doesn't exist in this set
+
+
+
+
+ Gets the value of the specified repeated extension, registering it if it doesn't exist
+
+
+
+
+ Sets the value of the specified extension. This will make a new instance of ExtensionSet if the set is null.
+
+
+
+
+ Gets whether the value of the specified extension is set
+
+
+
+
+ Clears the value of the specified extension
+
+
+
+
+ Clears the value of the specified extension
+
+
+
+
+ Tries to merge a field from the coded input, returning true if the field was merged.
+ If the set is null or the field was not otherwise merged, this returns false.
+
+
+
+
+ Merges the second set into the first set, creating a new instance if first is null
+
+
+
+
+ Clones the set into a new set. If the set is null, this returns null
+
+
+
+
+ Used for keeping track of extensions in messages.
+ methods route to this set.
+
+ Most users will not need to use this class directly
+
+ The message type that extensions in this set target
+
+
+
+ Gets a hash code of the set
+
+
+
+
+ Returns whether this set is equal to the other object
+
+
+
+
+ Calculates the size of this extension set
+
+
+
+
+ Writes the extension values in this set to the output stream
+
+
+
+
+ Factory methods for .
+
+
+
+
+ Retrieves a codec suitable for a string field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a bytes field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a bool field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an int32 field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an sint32 field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a fixed32 field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an sfixed32 field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a uint32 field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an int64 field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an sint64 field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a fixed64 field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an sfixed64 field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a uint64 field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a float field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a double field with the given tag.
+
+ The tag.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an enum field with the given tag.
+
+ The tag.
+ A conversion function from to the enum type.
+ A conversion function from the enum type to .
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a string field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a bytes field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a bool field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an int32 field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an sint32 field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a fixed32 field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an sfixed32 field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a uint32 field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an int64 field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an sint64 field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a fixed64 field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an sfixed64 field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a uint64 field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a float field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a double field with the given tag.
+
+ The tag.
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for an enum field with the given tag.
+
+ The tag.
+ A conversion function from to the enum type.
+ A conversion function from the enum type to .
+ The default value.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a message field with the given tag.
+
+ The tag.
+ A parser to use for the message type.
+ A codec for the given tag.
+
+
+
+ Retrieves a codec suitable for a group field with the given tag.
+
+ The start group tag.
+ The end group tag.
+ A parser to use for the group message type.
+ A codec for given tag
+
+
+
+ Creates a codec for a wrapper type of a class - which must be string or ByteString.
+
+
+
+
+ Creates a codec for a wrapper type of a struct - which must be Int32, Int64, UInt32, UInt64,
+ Bool, Single or Double.
+
+
+
+
+ Helper code to create codecs for wrapper types.
+
+
+ Somewhat ugly with all the static methods, but the conversions involved to/from nullable types make it
+ slightly tricky to improve. So long as we keep the public API (ForClassWrapper, ForStructWrapper) in place,
+ we can refactor later if we come up with something cleaner.
+
+
+
+
+ Returns a field codec which effectively wraps a value of type T in a message.
+
+
+
+
+
+
+ An encode/decode pair for a single field. This effectively encapsulates
+ all the information needed to read or write the field value from/to a coded
+ stream.
+
+
+ This class is public and has to be as it is used by generated code, but its public
+ API is very limited - just what the generated code needs to call directly.
+
+
+
+ This never writes default values to the stream, and does not address "packedness"
+ in repeated fields itself, other than to know whether or not the field *should* be packed.
+
+
+
+
+ Merges an input stream into a value
+
+
+
+
+ Merges a value into a reference to another value, returning a boolean if the value was set
+
+
+
+
+ Returns a delegate to write a value (unconditionally) to a coded output stream.
+
+
+
+
+ Returns the size calculator for just a value.
+
+
+
+
+ Returns a delegate to read a value from a coded input stream. It is assumed that
+ the stream is already positioned on the appropriate tag.
+
+
+
+
+ Returns a delegate to merge a value from a coded input stream.
+ It is assumed that the stream is already positioned on the appropriate tag
+
+
+
+
+ Returns a delegate to merge two values together.
+
+
+
+
+ Returns the fixed size for an entry, or 0 if sizes vary.
+
+
+
+
+ Gets the tag of the codec.
+
+
+ The tag of the codec.
+
+
+
+
+ Gets the end tag of the codec or 0 if there is no end tag
+
+
+ The end tag of the codec.
+
+
+
+
+ Default value for this codec. Usually the same for every instance of the same type, but
+ for string/ByteString wrapper fields the codec's default value is null, whereas for
+ other string/ByteString fields it's "" or ByteString.Empty.
+
+
+ The default value of the codec's type.
+
+
+
+
+ Write a tag and the given value, *if* the value is not the default.
+
+
+
+
+ Reads a value of the codec type from the given .
+
+ The input stream to read from.
+ The value read from the stream.
+
+
+
+ Calculates the size required to write the given value, with a tag,
+ if the value is not the default.
+
+
+
+
+ A tree representation of a FieldMask. Each leaf node in this tree represent
+ a field path in the FieldMask.
+
+ For example, FieldMask "foo.bar,foo.baz,bar.baz" as a tree will be:
+
+ [root] -+- foo -+- bar
+ | |
+ | +- baz
+ |
+ +- bar --- baz
+
+
+ By representing FieldMasks with this tree structure we can easily convert
+ a FieldMask to a canonical form, merge two FieldMasks, calculate the
+ intersection to two FieldMasks and traverse all fields specified by the
+ FieldMask in a message tree.
+
+
+
+
+ Creates an empty FieldMaskTree.
+
+
+
+
+ Creates a FieldMaskTree for a given FieldMask.
+
+
+
+
+ Adds a field path to the tree. In a FieldMask, every field path matches the
+ specified field as well as all its sub-fields. For example, a field path
+ "foo.bar" matches field "foo.bar" and also "foo.bar.baz", etc. When adding
+ a field path to the tree, redundant sub-paths will be removed. That is,
+ after adding "foo.bar" to the tree, "foo.bar.baz" will be removed if it
+ exists, which will turn the tree node for "foo.bar" to a leaf node.
+ Likewise, if the field path to add is a sub-path of an existing leaf node,
+ nothing will be changed in the tree.
+
+
+
+
+ Merges all field paths in a FieldMask into this tree.
+
+
+
+
+ Converts this tree to a FieldMask.
+
+
+
+
+ Gathers all field paths in a sub-tree.
+
+
+
+
+ Adds the intersection of this tree with the given to .
+
+
+
+
+ Merges all fields specified by this FieldMaskTree from to .
+
+
+
+
+ Merges all fields specified by a sub-tree from to .
+
+
+
+
+ Class containing helpful workarounds for various platform compatibility
+
+
+
+
+ A message type that has a custom string format for diagnostic purposes.
+
+
+
+ Calling on a generated message type normally
+ returns the JSON representation. If a message type implements this interface,
+ then the method will be called instead of the regular
+ JSON formatting code, but only when ToString() is called either on the message itself
+ or on another message which contains it. This does not affect the normal JSON formatting of
+ the message.
+
+
+ For example, if you create a proto message representing a GUID, the internal
+ representation may be a bytes field or four fixed32 fields. However, when debugging
+ it may be more convenient to see a result in the same format as provides.
+
+ This interface extends to avoid it accidentally being implemented
+ on types other than messages, where it would not be used by anything in the framework.
+
+
+
+
+ Returns a string representation of this object, for diagnostic purposes.
+
+
+ This method is called when a message is formatted as part of a
+ call. It does not affect the JSON representation used by other than
+ in calls to . While it is recommended
+ that the result is valid JSON, this is never assumed by the Protobuf library.
+
+ A string representation of this object, for diagnostic purposes.
+
+
+
+ Generic interface for a deeply cloneable type.
+
+
+
+ All generated messages implement this interface, but so do some non-message types.
+ Additionally, due to the type constraint on T in ,
+ it is simpler to keep this as a separate interface.
+
+
+ The type itself, returned by the method.
+
+
+
+ Creates a deep clone of this object.
+
+ A deep clone of this object.
+
+
+
+ Generic interface for a Protocol Buffers message containing one or more extensions, where the type parameter is expected to be the same type as the implementation class.
+ This interface is experiemental and is subject to change.
+
+
+
+
+ Gets the value of the specified extension
+
+
+
+
+ Gets the value of the specified repeated extension or null if the extension isn't registered in this set.
+ For a version of this method that never returns null, use
+
+
+
+
+ Gets the value of the specified repeated extension, registering it if it hasn't already been registered.
+
+
+
+
+ Sets the value of the specified extension
+
+
+
+
+ Gets whether the value of the specified extension is set
+
+
+
+
+ Clears the value of the specified extension
+
+
+
+
+ Clears the value of the specified repeated extension
+
+
+
+
+ Interface for a Protocol Buffers message, supporting
+ basic operations required for serialization.
+
+
+
+
+ Merges the data from the specified coded input stream with the current message.
+
+ See the user guide for precise merge semantics.
+
+
+
+
+ Writes the data to the given coded output stream.
+
+ Coded output stream to write the data to. Must not be null.
+
+
+
+ Calculates the size of this message in Protocol Buffer wire format, in bytes.
+
+ The number of bytes required to write this message
+ to a coded output stream.
+
+
+
+ Descriptor for this message. All instances are expected to return the same descriptor,
+ and for generated types this will be an explicitly-implemented member, returning the
+ same value as the static property declared on the type.
+
+
+
+
+ Generic interface for a Protocol Buffers message,
+ where the type parameter is expected to be the same type as
+ the implementation class.
+
+ The message type.
+
+
+
+ Merges the given message into this one.
+
+ See the user guide for precise merge semantics.
+ The message to merge with this one. Must not be null.
+
+
+
+ Thrown when an attempt is made to parse invalid JSON, e.g. using
+ a non-string property key, or including a redundant comma. Parsing a protocol buffer
+ message represented in JSON using can throw both this
+ exception and depending on the situation. This
+ exception is only thrown for "pure JSON" errors, whereas InvalidProtocolBufferException
+ is thrown when the JSON may be valid in and of itself, but cannot be parsed as a protocol buffer
+ message.
+
+
+
+
+ Thrown when a protocol message being parsed is invalid in some way,
+ e.g. it contains a malformed varint or a negative byte length.
+
+
+
+
+ Creates an exception for an error condition of an invalid tag being encountered.
+
+
+
+
+ Reflection-based converter from messages to JSON.
+
+
+
+ Instances of this class are thread-safe, with no mutable state.
+
+
+ This is a simple start to get JSON formatting working. As it's reflection-based,
+ it's not as quick as baking calls into generated messages - but is a simpler implementation.
+ (This code is generally not heavily optimized.)
+
+
+
+
+
+ Returns a formatter using the default settings.
+
+
+
+
+ The JSON representation of the first 160 characters of Unicode.
+ Empty strings are replaced by the static constructor.
+
+
+
+
+ Creates a new formatted with the given settings.
+
+ The settings.
+
+
+
+ Formats the specified message as JSON.
+
+ The message to format.
+ The formatted message.
+
+
+
+ Formats the specified message as JSON.
+
+ The message to format.
+ The TextWriter to write the formatted message to.
+ The formatted message.
+
+
+
+ Converts a message to JSON for diagnostic purposes with no extra context.
+
+
+
+ This differs from calling on the default JSON
+ formatter in its handling of . As no type registry is available
+ in calls, the normal way of resolving the type of
+ an Any message cannot be applied. Instead, a JSON property named @value
+ is included with the base64 data from the property of the message.
+
+ The value returned by this method is only designed to be used for diagnostic
+ purposes. It may not be parsable by , and may not be parsable
+ by other Protocol Buffer implementations.
+
+ The message to format for diagnostic purposes.
+ The diagnostic-only JSON representation of the message
+
+
+
+ Writes a single value to the given writer as JSON. Only types understood by
+ Protocol Buffers can be written in this way. This method is only exposed for
+ advanced use cases; most users should be using
+ or .
+
+ The writer to write the value to. Must not be null.
+ The value to write. May be null.
+
+
+
+ Central interception point for well-known type formatting. Any well-known types which
+ don't need special handling can fall back to WriteMessage. We avoid assuming that the
+ values are using the embedded well-known types, in order to allow for dynamic messages
+ in the future.
+
+
+
+
+ Writes a string (including leading and trailing double quotes) to a builder, escaping as required.
+
+
+ Other than surrogate pair handling, this code is mostly taken from src/google/protobuf/util/internal/json_escaping.cc.
+
+
+
+
+ Settings controlling JSON formatting.
+
+
+
+
+ Default settings, as used by
+
+
+
+
+ Whether fields whose values are the default for the field type (e.g. 0 for integers)
+ should be formatted (true) or omitted (false).
+
+
+
+
+ The type registry used to format messages.
+
+
+
+
+ Whether to format enums as ints. Defaults to false.
+
+
+
+
+ Creates a new object with the specified formatting of default values
+ and an empty type registry.
+
+ true if default values (0, empty strings etc) should be formatted; false otherwise.
+
+
+
+ Creates a new object with the specified formatting of default values
+ and type registry.
+
+ true if default values (0, empty strings etc) should be formatted; false otherwise.
+ The to use when formatting messages.
+
+
+
+ Creates a new object with the specified parameters.
+
+ true if default values (0, empty strings etc) should be formatted; false otherwise.
+ The to use when formatting messages. TypeRegistry.Empty will be used if it is null.
+ true to format the enums as integers; false to format enums as enum names.
+
+
+
+ Creates a new object with the specified formatting of default values and the current settings.
+
+ true if default values (0, empty strings etc) should be formatted; false otherwise.
+
+
+
+ Creates a new object with the specified type registry and the current settings.
+
+ The to use when formatting messages.
+
+
+
+ Creates a new object with the specified enums formatting option and the current settings.
+
+ true to format the enums as integers; false to format enums as enum names.
+
+
+
+ Reflection-based converter from JSON to messages.
+
+
+
+ Instances of this class are thread-safe, with no mutable state.
+
+
+ This is a simple start to get JSON parsing working. As it's reflection-based,
+ it's not as quick as baking calls into generated messages - but is a simpler implementation.
+ (This code is generally not heavily optimized.)
+
+
+
+
+
+ Returns a formatter using the default settings.
+
+
+
+
+ Creates a new formatted with the given settings.
+
+ The settings.
+
+
+
+ Parses and merges the information into the given message.
+
+ The message to merge the JSON information into.
+ The JSON to parse.
+
+
+
+ Parses JSON read from and merges the information into the given message.
+
+ The message to merge the JSON information into.
+ Reader providing the JSON to parse.
+
+
+
+ Merges the given message using data from the given tokenizer. In most cases, the next
+ token should be a "start object" token, but wrapper types and nullity can invalidate
+ that assumption. This is implemented as an LL(1) recursive descent parser over the stream
+ of tokens provided by the tokenizer. This token stream is assumed to be valid JSON, with the
+ tokenizer performing that validation - but not every token stream is valid "protobuf JSON".
+
+
+
+
+ Parses into a new message.
+
+ The type of message to create.
+ The JSON to parse.
+ The JSON does not comply with RFC 7159
+ The JSON does not represent a Protocol Buffers message correctly
+
+
+
+ Parses JSON read from into a new message.
+
+ The type of message to create.
+ Reader providing the JSON to parse.
+ The JSON does not comply with RFC 7159
+ The JSON does not represent a Protocol Buffers message correctly
+
+
+
+ Parses into a new message.
+
+ The JSON to parse.
+ Descriptor of message type to parse.
+ The JSON does not comply with RFC 7159
+ The JSON does not represent a Protocol Buffers message correctly
+
+
+
+ Parses JSON read from into a new message.
+
+ Reader providing the JSON to parse.
+ Descriptor of message type to parse.
+ The JSON does not comply with RFC 7159
+ The JSON does not represent a Protocol Buffers message correctly
+
+
+
+ Creates a new instance of the message type for the given field.
+
+
+
+
+ Checks that any infinite/NaN values originated from the correct text.
+ This corrects the lenient whitespace handling of double.Parse/float.Parse, as well as the
+ way that Mono parses out-of-range values as infinity.
+
+
+
+
+ Settings controlling JSON parsing.
+
+
+
+
+ Default settings, as used by . This has the same default
+ recursion limit as , and an empty type registry.
+
+
+
+
+ The maximum depth of messages to parse. Note that this limit only applies to parsing
+ messages, not collections - so a message within a collection within a message only counts as
+ depth 2, not 3.
+
+
+
+
+ The type registry used to parse messages.
+
+
+
+
+ Whether the parser should ignore unknown fields (true) or throw an exception when
+ they are encountered (false).
+
+
+
+
+ Creates a new object with the specified recursion limit.
+
+ The maximum depth of messages to parse
+
+
+
+ Creates a new object with the specified recursion limit and type registry.
+
+ The maximum depth of messages to parse
+ The type registry used to parse messages
+
+
+
+ Creates a new object set to either ignore unknown fields, or throw an exception
+ when unknown fields are encountered.
+
+ true if unknown fields should be ignored when parsing; false to throw an exception.
+
+
+
+ Creates a new object based on this one, but with the specified recursion limit.
+
+ The new recursion limit.
+
+
+
+ Creates a new object based on this one, but with the specified type registry.
+
+ The new type registry. Must not be null.
+
+
+
+ Simple but strict JSON tokenizer, rigidly following RFC 7159.
+
+
+
+ This tokenizer is stateful, and only returns "useful" tokens - names, values etc.
+ It does not create tokens for the separator between names and values, or for the comma
+ between values. It validates the token stream as it goes - so callers can assume that the
+ tokens it produces are appropriate. For example, it would never produce "start object, end array."
+
+ Implementation details: the base class handles single token push-back and
+ Not thread-safe.
+
+
+
+
+ Creates a tokenizer that reads from the given text reader.
+
+
+
+
+ Creates a tokenizer that first replays the given list of tokens, then continues reading
+ from another tokenizer. Note that if the returned tokenizer is "pushed back", that does not push back
+ on the continuation tokenizer, or vice versa. Care should be taken when using this method - it was
+ created for the sake of Any parsing.
+
+
+
+
+ Returns the depth of the stack, purely in objects (not collections).
+ Informally, this is the number of remaining unclosed '{' characters we have.
+
+
+
+
+ Returns the next JSON token in the stream. An EndDocument token is returned to indicate the end of the stream,
+ after which point Next() should not be called again.
+
+ This implementation provides single-token buffering, and calls if there is no buffered token.
+ The next token in the stream. This is never null.
+ This method is called after an EndDocument token has been returned
+ The input text does not comply with RFC 7159
+
+
+
+ Returns the next JSON token in the stream, when requested by the base class. (The method delegates
+ to this if it doesn't have a buffered token.)
+
+ This method is called after an EndDocument token has been returned
+ The input text does not comply with RFC 7159
+
+
+
+ Skips the value we're about to read. This must only be called immediately after reading a property name.
+ If the value is an object or an array, the complete object/array is skipped.
+
+
+
+
+ Tokenizer which first exhausts a list of tokens, then consults another tokenizer.
+
+
+
+
+ Tokenizer which does all the *real* work of parsing JSON.
+
+
+
+
+ This method essentially just loops through characters skipping whitespace, validating and
+ changing state (e.g. from ObjectBeforeColon to ObjectAfterColon)
+ until it reaches something which will be a genuine token (e.g. a start object, or a value) at which point
+ it returns the token. Although the method is large, it would be relatively hard to break down further... most
+ of it is the large switch statement, which sometimes returns and sometimes doesn't.
+
+
+
+
+ Reads a string token. It is assumed that the opening " has already been read.
+
+
+
+
+ Reads an escaped character. It is assumed that the leading backslash has already been read.
+
+
+
+
+ Reads an escaped Unicode 4-nybble hex sequence. It is assumed that the leading \u has already been read.
+
+
+
+
+ Consumes a text-only literal, throwing an exception if the read text doesn't match it.
+ It is assumed that the first letter of the literal has already been read.
+
+
+
+
+ Validates that we're in a valid state to read a value (using the given error prefix if necessary)
+ and changes the state to the appropriate one, e.g. ObjectAfterColon to ObjectAfterProperty.
+
+
+
+
+ Pops the top-most container, and sets the state to the appropriate one for the end of a value
+ in the parent container.
+
+
+
+
+ Possible states of the tokenizer.
+
+
+ This is a flags enum purely so we can simply and efficiently represent a set of valid states
+ for checking.
+
+ Each is documented with an example,
+ where ^ represents the current position within the text stream. The examples all use string values,
+ but could be any value, including nested objects/arrays.
+ The complete state of the tokenizer also includes a stack to indicate the contexts (arrays/objects).
+ Any additional notional state of "AfterValue" indicates that a value has been completed, at which
+ point there's an immediate transition to ExpectedEndOfDocument, ObjectAfterProperty or ArrayAfterValue.
+
+
+ These states were derived manually by reading RFC 7159 carefully.
+
+
+
+
+
+ ^ { "foo": "bar" }
+ Before the value in a document. Next states: ObjectStart, ArrayStart, "AfterValue"
+
+
+
+
+ { "foo": "bar" } ^
+ After the value in a document. Next states: ReaderExhausted
+
+
+
+
+ { "foo": "bar" } ^ (and already read to the end of the reader)
+ Terminal state.
+
+
+
+
+ { ^ "foo": "bar" }
+ Before the *first* property in an object.
+ Next states:
+ "AfterValue" (empty object)
+ ObjectBeforeColon (read a name)
+
+
+
+
+ { "foo" ^ : "bar", "x": "y" }
+ Next state: ObjectAfterColon
+
+
+
+
+ { "foo" : ^ "bar", "x": "y" }
+ Before any property other than the first in an object.
+ (Equivalently: after any property in an object)
+ Next states:
+ "AfterValue" (value is simple)
+ ObjectStart (value is object)
+ ArrayStart (value is array)
+
+
+
+
+ { "foo" : "bar" ^ , "x" : "y" }
+ At the end of a property, so expecting either a comma or end-of-object
+ Next states: ObjectAfterComma or "AfterValue"
+
+
+
+
+ { "foo":"bar", ^ "x":"y" }
+ Read the comma after the previous property, so expecting another property.
+ This is like ObjectStart, but closing brace isn't valid here
+ Next state: ObjectBeforeColon.
+
+
+
+
+ [ ^ "foo", "bar" ]
+ Before the *first* value in an array.
+ Next states:
+ "AfterValue" (read a value)
+ "AfterValue" (end of array; will pop stack)
+
+
+
+
+ [ "foo" ^ , "bar" ]
+ After any value in an array, so expecting either a comma or end-of-array
+ Next states: ArrayAfterComma or "AfterValue"
+
+
+
+
+ [ "foo", ^ "bar" ]
+ After a comma in an array, so there *must* be another value (simple or complex).
+ Next states: "AfterValue" (simple value), StartObject, StartArray
+
+
+
+
+ Wrapper around a text reader allowing small amounts of buffering and location handling.
+
+
+
+
+ The buffered next character, if we have one.
+
+
+
+
+ Returns the next character in the stream, or null if we have reached the end.
+
+
+
+
+
+ Creates a new exception appropriate for the current state of the reader.
+
+
+
+
+ Stream implementation which proxies another stream, only allowing a certain amount
+ of data to be read. Note that this is only used to read delimited streams, so it
+ doesn't attempt to implement everything.
+
+
+
+
+ Extension methods on and .
+
+
+
+
+ Merges data from the given byte array into an existing message.
+
+ The message to merge the data into.
+ The data to merge, which must be protobuf-encoded binary data.
+
+
+
+ Merges data from the given byte array slice into an existing message.
+
+ The message to merge the data into.
+ The data containing the slice to merge, which must be protobuf-encoded binary data.
+ The offset of the slice to merge.
+ The length of the slice to merge.
+
+
+
+ Merges data from the given byte string into an existing message.
+
+ The message to merge the data into.
+ The data to merge, which must be protobuf-encoded binary data.
+
+
+
+ Merges data from the given stream into an existing message.
+
+ The message to merge the data into.
+ Stream containing the data to merge, which must be protobuf-encoded binary data.
+
+
+
+ Merges length-delimited data from the given stream into an existing message.
+
+
+ The stream is expected to contain a length and then the data. Only the amount of data
+ specified by the length will be consumed.
+
+ The message to merge the data into.
+ Stream containing the data to merge, which must be protobuf-encoded binary data.
+
+
+
+ Converts the given message into a byte array in protobuf encoding.
+
+ The message to convert.
+ The message data as a byte array.
+
+
+
+ Writes the given message data to the given stream in protobuf encoding.
+
+ The message to write to the stream.
+ The stream to write to.
+
+
+
+ Writes the length and then data of the given message to a stream.
+
+ The message to write.
+ The output stream to write to.
+
+
+
+ Converts the given message into a byte string in protobuf encoding.
+
+ The message to convert.
+ The message data as a byte string.
+
+
+
+ Checks if all required fields in a message have values set. For proto3 messages, this returns true
+
+
+
+
+ A general message parser, typically used by reflection-based code as all the methods
+ return simple .
+
+
+
+
+ Creates a template instance ready for population.
+
+ An empty message.
+
+
+
+ Parses a message from a byte array.
+
+ The byte array containing the message. Must not be null.
+ The newly parsed message.
+
+
+
+ Parses a message from a byte array slice.
+
+ The byte array containing the message. Must not be null.
+ The offset of the slice to parse.
+ The length of the slice to parse.
+ The newly parsed message.
+
+
+
+ Parses a message from the given byte string.
+
+ The data to parse.
+ The parsed message.
+
+
+
+ Parses a message from the given stream.
+
+ The stream to parse.
+ The parsed message.
+
+
+
+ Parses a length-delimited message from the given stream.
+
+
+ The stream is expected to contain a length and then the data. Only the amount of data
+ specified by the length will be consumed.
+
+ The stream to parse.
+ The parsed message.
+
+
+
+ Parses a message from the given coded input stream.
+
+ The stream to parse.
+ The parsed message.
+
+
+
+ Parses a message from the given JSON.
+
+ The JSON to parse.
+ The parsed message.
+ The JSON does not comply with RFC 7159
+ The JSON does not represent a Protocol Buffers message correctly
+
+
+
+ Creates a new message parser which optionally discards unknown fields when parsing.
+
+ Whether or not to discard unknown fields when parsing.
+ A newly configured message parser.
+
+
+
+ Creates a new message parser which registers extensions from the specified registry upon creating the message instance
+
+ The extensions to register
+ A newly configured message parser.
+
+
+
+ A parser for a specific message type.
+
+
+
+ This delegates most behavior to the
+ implementation within the original type, but
+ provides convenient overloads to parse from a variety of sources.
+
+
+ Most applications will never need to create their own instances of this type;
+ instead, use the static Parser property of a generated message type to obtain a
+ parser for that type.
+
+
+ The type of message to be parsed.
+
+
+
+ Creates a new parser.
+
+
+ The factory method is effectively an optimization over using a generic constraint
+ to require a parameterless constructor: delegates are significantly faster to execute.
+
+ Function to invoke when a new, empty message is required.
+
+
+
+ Creates a template instance ready for population.
+
+ An empty message.
+
+
+
+ Parses a message from a byte array.
+
+ The byte array containing the message. Must not be null.
+ The newly parsed message.
+
+
+
+ Parses a message from a byte array slice.
+
+ The byte array containing the message. Must not be null.
+ The offset of the slice to parse.
+ The length of the slice to parse.
+ The newly parsed message.
+
+
+
+ Parses a message from the given byte string.
+
+ The data to parse.
+ The parsed message.
+
+
+
+ Parses a message from the given stream.
+
+ The stream to parse.
+ The parsed message.
+
+
+
+ Parses a length-delimited message from the given stream.
+
+
+ The stream is expected to contain a length and then the data. Only the amount of data
+ specified by the length will be consumed.
+
+ The stream to parse.
+ The parsed message.
+
+
+
+ Parses a message from the given coded input stream.
+
+ The stream to parse.
+ The parsed message.
+
+
+
+ Parses a message from the given JSON.
+
+ The JSON to parse.
+ The parsed message.
+ The JSON does not comply with RFC 7159
+ The JSON does not represent a Protocol Buffers message correctly
+
+
+
+ Creates a new message parser which optionally discards unknown fields when parsing.
+
+ Whether or not to discard unknown fields when parsing.
+ A newly configured message parser.
+
+
+
+ Creates a new message parser which registers extensions from the specified registry upon creating the message instance
+
+ The extensions to register
+ A newly configured message parser.
+
+
+
+ Struct used to hold the keys for the fieldByNumber table in DescriptorPool and the keys for the
+ extensionByNumber table in ExtensionRegistry.
+
+
+
+
+ Helper methods for throwing exceptions when preconditions are not met.
+
+
+ This class is used internally and by generated code; it is not particularly
+ expected to be used from application code, although nothing prevents it
+ from being used that way.
+
+
+
+
+ Throws an ArgumentNullException if the given value is null, otherwise
+ return the value to the caller.
+
+
+
+
+ Throws an ArgumentNullException if the given value is null, otherwise
+ return the value to the caller.
+
+
+ This is equivalent to but without the type parameter
+ constraint. In most cases, the constraint is useful to prevent you from calling CheckNotNull
+ with a value type - but it gets in the way if either you want to use it with a nullable
+ value type, or you want to use it with an unconstrained type parameter.
+
+
+
+
+ Container for a set of custom options specified within a message, field etc.
+
+
+
+ This type is publicly immutable, but internally mutable. It is only populated
+ by the descriptor parsing code - by the time any user code is able to see an instance,
+ it will be fully initialized.
+
+
+ If an option is requested using the incorrect method, an answer may still be returned: all
+ of the numeric types are represented internally using 64-bit integers, for example. It is up to
+ the caller to ensure that they make the appropriate method call for the option they're interested in.
+ Note that enum options are simply stored as integers, so the value should be fetched using
+ and then cast appropriately.
+
+
+ Repeated options are currently not supported. Asking for a single value of an option
+ which was actually repeated will return the last value, except for message types where
+ all the set values are merged together.
+
+
+
+
+
+ Retrieves a Boolean value for the specified option field.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a signed 32-bit integer value for the specified option field.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a signed 64-bit integer value for the specified option field.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves an unsigned 32-bit integer value for the specified option field,
+ assuming a fixed-length representation.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves an unsigned 64-bit integer value for the specified option field,
+ assuming a fixed-length representation.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a signed 32-bit integer value for the specified option field,
+ assuming a fixed-length representation.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a signed 64-bit integer value for the specified option field,
+ assuming a fixed-length representation.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a signed 32-bit integer value for the specified option field,
+ assuming a zigzag encoding.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a signed 64-bit integer value for the specified option field,
+ assuming a zigzag encoding.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves an unsigned 32-bit integer value for the specified option field.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves an unsigned 64-bit integer value for the specified option field.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a 32-bit floating point value for the specified option field.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a 64-bit floating point value for the specified option field.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a string value for the specified option field.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a bytes value for the specified option field.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+
+ Retrieves a message value for the specified option field.
+
+ The field to fetch the value for.
+ The output variable to populate.
+ true if a suitable value for the field was found; false otherwise.
+
+
+ Holder for reflection information generated from google/protobuf/descriptor.proto
+
+
+ File descriptor for google/protobuf/descriptor.proto
+
+
+
+ The protocol compiler can output a FileDescriptorSet containing the .proto
+ files it parses.
+
+
+
+ Field number for the "file" field.
+
+
+
+ Describes a complete .proto file.
+
+
+
+ Field number for the "name" field.
+
+
+
+ file name, relative to root of source tree
+
+
+
+ Gets whether the "name" field is set
+
+
+ Clears the value of the "name" field
+
+
+ Field number for the "package" field.
+
+
+
+ e.g. "foo", "foo.bar", etc.
+
+
+
+ Gets whether the "package" field is set
+
+
+ Clears the value of the "package" field
+
+
+ Field number for the "dependency" field.
+
+
+
+ Names of files imported by this file.
+
+
+
+ Field number for the "public_dependency" field.
+
+
+
+ Indexes of the public imported files in the dependency list above.
+
+
+
+ Field number for the "weak_dependency" field.
+
+
+
+ Indexes of the weak imported files in the dependency list.
+ For Google-internal migration only. Do not use.
+
+
+
+ Field number for the "message_type" field.
+
+
+
+ All top-level definitions in this file.
+
+
+
+ Field number for the "enum_type" field.
+
+
+ Field number for the "service" field.
+
+
+ Field number for the "extension" field.
+
+
+ Field number for the "options" field.
+
+
+ Gets whether the options field is set
+
+
+ Clears the value of the options field
+
+
+ Field number for the "source_code_info" field.
+
+
+
+ This field contains optional information about the original source code.
+ You may safely remove this entire field without harming runtime
+ functionality of the descriptors -- the information is needed only by
+ development tools.
+
+
+
+ Gets whether the source_code_info field is set
+
+
+ Clears the value of the source_code_info field
+
+
+ Field number for the "syntax" field.
+
+
+
+ The syntax of the proto file.
+ The supported values are "proto2" and "proto3".
+
+
+
+ Gets whether the "syntax" field is set
+
+
+ Clears the value of the "syntax" field
+
+
+
+ Describes a message type.
+
+
+
+ Field number for the "name" field.
+
+
+ Gets whether the "name" field is set
+
+
+ Clears the value of the "name" field
+
+
+ Field number for the "field" field.
+
+
+ Field number for the "extension" field.
+
+
+ Field number for the "nested_type" field.
+
+
+ Field number for the "enum_type" field.
+
+
+ Field number for the "extension_range" field.
+
+
+ Field number for the "oneof_decl" field.
+
+
+ Field number for the "options" field.
+
+
+ Gets whether the options field is set
+
+
+ Clears the value of the options field
+
+
+ Field number for the "reserved_range" field.
+
+
+ Field number for the "reserved_name" field.
+
+
+
+ Reserved field names, which may not be used by fields in the same message.
+ A given name may only be reserved once.
+
+
+
+ Container for nested types declared in the DescriptorProto message type.
+
+
+ Field number for the "start" field.
+
+
+
+ Inclusive.
+
+
+
+ Gets whether the "start" field is set
+
+
+ Clears the value of the "start" field
+
+
+ Field number for the "end" field.
+
+
+
+ Exclusive.
+
+
+
+ Gets whether the "end" field is set
+
+
+ Clears the value of the "end" field
+
+
+ Field number for the "options" field.
+
+
+ Gets whether the options field is set
+
+
+ Clears the value of the options field
+
+
+
+ Range of reserved tag numbers. Reserved tag numbers may not be used by
+ fields or extension ranges in the same message. Reserved ranges may
+ not overlap.
+
+
+
+ Field number for the "start" field.
+
+
+
+ Inclusive.
+
+
+
+ Gets whether the "start" field is set
+
+
+ Clears the value of the "start" field
+
+
+ Field number for the "end" field.
+
+
+
+ Exclusive.
+
+
+
+ Gets whether the "end" field is set
+
+
+ Clears the value of the "end" field
+
+
+ Field number for the "uninterpreted_option" field.
+
+
+
+ The parser stores options it doesn't recognize here. See above.
+
+
+
+
+ Describes a field within a message.
+
+
+
+ Field number for the "name" field.
+
+
+ Gets whether the "name" field is set
+
+
+ Clears the value of the "name" field
+
+
+ Field number for the "number" field.
+
+
+ Gets whether the "number" field is set
+
+
+ Clears the value of the "number" field
+
+
+ Field number for the "label" field.
+
+
+ Gets whether the "label" field is set
+
+
+ Clears the value of the "label" field
+
+
+ Field number for the "type" field.
+
+
+
+ If type_name is set, this need not be set. If both this and type_name
+ are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+
+
+
+ Gets whether the "type" field is set
+
+
+ Clears the value of the "type" field
+
+
+ Field number for the "type_name" field.
+
+
+
+ For message and enum types, this is the name of the type. If the name
+ starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
+ rules are used to find the type (i.e. first the nested types within this
+ message are searched, then within the parent, on up to the root
+ namespace).
+
+
+
+ Gets whether the "type_name" field is set
+
+
+ Clears the value of the "type_name" field
+
+
+ Field number for the "extendee" field.
+
+
+
+ For extensions, this is the name of the type being extended. It is
+ resolved in the same manner as type_name.
+
+
+
+ Gets whether the "extendee" field is set
+
+
+ Clears the value of the "extendee" field
+
+
+ Field number for the "default_value" field.
+
+
+
+ For numeric types, contains the original text representation of the value.
+ For booleans, "true" or "false".
+ For strings, contains the default text contents (not escaped in any way).
+ For bytes, contains the C escaped value. All bytes >= 128 are escaped.
+ TODO(kenton): Base-64 encode?
+
+
+
+ Gets whether the "default_value" field is set
+
+
+ Clears the value of the "default_value" field
+
+
+ Field number for the "oneof_index" field.
+
+
+
+ If set, gives the index of a oneof in the containing type's oneof_decl
+ list. This field is a member of that oneof.
+
+
+
+ Gets whether the "oneof_index" field is set
+
+
+ Clears the value of the "oneof_index" field
+
+
+ Field number for the "json_name" field.
+
+
+
+ JSON name of this field. The value is set by protocol compiler. If the
+ user has set a "json_name" option on this field, that option's value
+ will be used. Otherwise, it's deduced from the field's name by converting
+ it to camelCase.
+
+
+
+ Gets whether the "json_name" field is set
+
+
+ Clears the value of the "json_name" field
+
+
+ Field number for the "options" field.
+
+
+ Gets whether the options field is set
+
+
+ Clears the value of the options field
+
+
+ Container for nested types declared in the FieldDescriptorProto message type.
+
+
+
+ 0 is reserved for errors.
+ Order is weird for historical reasons.
+
+
+
+
+ Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
+ negative values are likely.
+
+
+
+
+ Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
+ negative values are likely.
+
+
+
+
+ Tag-delimited aggregate.
+ Group type is deprecated and not supported in proto3. However, Proto3
+ implementations should still be able to parse the group wire format and
+ treat group fields as unknown fields.
+
+
+
+
+ Length-delimited aggregate.
+
+
+
+
+ New in version 2.
+
+
+
+
+ Uses ZigZag encoding.
+
+
+
+
+ Uses ZigZag encoding.
+
+
+
+
+ 0 is reserved for errors
+
+
+
+
+ Describes a oneof.
+
+
+
+ Field number for the "name" field.
+
+
+ Gets whether the "name" field is set
+
+
+ Clears the value of the "name" field
+
+
+ Field number for the "options" field.
+
+
+ Gets whether the options field is set
+
+
+ Clears the value of the options field
+
+
+
+ Describes an enum type.
+
+
+
+ Field number for the "name" field.
+
+
+ Gets whether the "name" field is set
+
+
+ Clears the value of the "name" field
+
+
+ Field number for the "value" field.
+
+
+ Field number for the "options" field.
+
+
+ Gets whether the options field is set
+
+
+ Clears the value of the options field
+
+
+ Field number for the "reserved_range" field.
+
+
+
+ Range of reserved numeric values. Reserved numeric values may not be used
+ by enum values in the same enum declaration. Reserved ranges may not
+ overlap.
+
+
+
+ Field number for the "reserved_name" field.
+
+
+
+ Reserved enum value names, which may not be reused. A given name may only
+ be reserved once.
+
+
+
+ Container for nested types declared in the EnumDescriptorProto message type.
+
+
+
+ Range of reserved numeric values. Reserved values may not be used by
+ entries in the same enum. Reserved ranges may not overlap.
+
+ Note that this is distinct from DescriptorProto.ReservedRange in that it
+ is inclusive such that it can appropriately represent the entire int32
+ domain.
+
+
+
+ Field number for the "start" field.
+
+
+
+ Inclusive.
+
+
+
+ Gets whether the "start" field is set
+
+
+ Clears the value of the "start" field
+
+
+ Field number for the "end" field.
+
+
+
+ Inclusive.
+
+
+
+ Gets whether the "end" field is set
+
+
+ Clears the value of the "end" field
+
+
+
+ Describes a value within an enum.
+
+
+
+ Field number for the "name" field.
+
+
+ Gets whether the "name" field is set
+
+
+ Clears the value of the "name" field
+
+
+ Field number for the "number" field.
+
+
+ Gets whether the "number" field is set
+
+
+ Clears the value of the "number" field
+
+
+ Field number for the "options" field.
+
+
+ Gets whether the options field is set
+
+
+ Clears the value of the options field
+
+
+
+ Describes a service.
+
+
+
+ Field number for the "name" field.
+
+
+ Gets whether the "name" field is set
+
+
+ Clears the value of the "name" field
+
+
+ Field number for the "method" field.
+
+
+ Field number for the "options" field.
+
+
+ Gets whether the options field is set
+
+
+ Clears the value of the options field
+
+
+
+ Describes a method of a service.
+
+
+
+ Field number for the "name" field.
+
+
+ Gets whether the "name" field is set
+
+
+ Clears the value of the "name" field
+
+
+ Field number for the "input_type" field.
+
+
+
+ Input and output type names. These are resolved in the same way as
+ FieldDescriptorProto.type_name, but must refer to a message type.
+
+
+
+ Gets whether the "input_type" field is set
+
+
+ Clears the value of the "input_type" field
+
+
+ Field number for the "output_type" field.
+
+
+ Gets whether the "output_type" field is set
+
+
+ Clears the value of the "output_type" field
+
+
+ Field number for the "options" field.
+
+
+ Gets whether the options field is set
+
+
+ Clears the value of the options field
+
+
+ Field number for the "client_streaming" field.
+
+
+
+ Identifies if client streams multiple client messages
+
+
+
+ Gets whether the "client_streaming" field is set
+
+
+ Clears the value of the "client_streaming" field
+
+
+ Field number for the "server_streaming" field.
+
+
+
+ Identifies if server streams multiple server messages
+
+
+
+ Gets whether the "server_streaming" field is set
+
+
+ Clears the value of the "server_streaming" field
+
+
+ Field number for the "java_package" field.
+
+
+
+ Sets the Java package where classes generated from this .proto will be
+ placed. By default, the proto package is used, but this is often
+ inappropriate because proto packages do not normally start with backwards
+ domain names.
+
+
+
+ Gets whether the "java_package" field is set
+
+
+ Clears the value of the "java_package" field
+
+
+ Field number for the "java_outer_classname" field.
+
+
+
+ If set, all the classes from the .proto file are wrapped in a single
+ outer class with the given name. This applies to both Proto1
+ (equivalent to the old "--one_java_file" option) and Proto2 (where
+ a .proto always translates to a single class, but you may want to
+ explicitly choose the class name).
+
+
+
+ Gets whether the "java_outer_classname" field is set
+
+
+ Clears the value of the "java_outer_classname" field
+
+
+ Field number for the "java_multiple_files" field.
+
+
+
+ If set true, then the Java code generator will generate a separate .java
+ file for each top-level message, enum, and service defined in the .proto
+ file. Thus, these types will *not* be nested inside the outer class
+ named by java_outer_classname. However, the outer class will still be
+ generated to contain the file's getDescriptor() method as well as any
+ top-level extensions defined in the file.
+
+
+
+ Gets whether the "java_multiple_files" field is set
+
+
+ Clears the value of the "java_multiple_files" field
+
+
+ Field number for the "java_generate_equals_and_hash" field.
+
+
+
+ This option does nothing.
+
+
+
+ Gets whether the "java_generate_equals_and_hash" field is set
+
+
+ Clears the value of the "java_generate_equals_and_hash" field
+
+
+ Field number for the "java_string_check_utf8" field.
+
+
+
+ If set true, then the Java2 code generator will generate code that
+ throws an exception whenever an attempt is made to assign a non-UTF-8
+ byte sequence to a string field.
+ Message reflection will do the same.
+ However, an extension field still accepts non-UTF-8 byte sequences.
+ This option has no effect on when used with the lite runtime.
+
+
+
+ Gets whether the "java_string_check_utf8" field is set
+
+
+ Clears the value of the "java_string_check_utf8" field
+
+
+ Field number for the "optimize_for" field.
+
+
+ Gets whether the "optimize_for" field is set
+
+
+ Clears the value of the "optimize_for" field
+
+
+ Field number for the "go_package" field.
+
+
+
+ Sets the Go package where structs generated from this .proto will be
+ placed. If omitted, the Go package will be derived from the following:
+ - The basename of the package import path, if provided.
+ - Otherwise, the package statement in the .proto file, if present.
+ - Otherwise, the basename of the .proto file, without extension.
+
+
+
+ Gets whether the "go_package" field is set
+
+
+ Clears the value of the "go_package" field
+
+
+ Field number for the "cc_generic_services" field.
+
+
+
+ Should generic services be generated in each language? "Generic" services
+ are not specific to any particular RPC system. They are generated by the
+ main code generators in each language (without additional plugins).
+ Generic services were the only kind of service generation supported by
+ early versions of google.protobuf.
+
+ Generic services are now considered deprecated in favor of using plugins
+ that generate code specific to your particular RPC system. Therefore,
+ these default to false. Old code which depends on generic services should
+ explicitly set them to true.
+
+
+
+ Gets whether the "cc_generic_services" field is set
+
+
+ Clears the value of the "cc_generic_services" field
+
+
+ Field number for the "java_generic_services" field.
+
+
+ Gets whether the "java_generic_services" field is set
+
+
+ Clears the value of the "java_generic_services" field
+
+
+ Field number for the "py_generic_services" field.
+
+
+ Gets whether the "py_generic_services" field is set
+
+
+ Clears the value of the "py_generic_services" field
+
+
+ Field number for the "php_generic_services" field.
+
+
+ Gets whether the "php_generic_services" field is set
+
+
+ Clears the value of the "php_generic_services" field
+
+
+ Field number for the "deprecated" field.
+
+
+
+ Is this file deprecated?
+ Depending on the target platform, this can emit Deprecated annotations
+ for everything in the file, or it will be completely ignored; in the very
+ least, this is a formalization for deprecating files.
+
+
+
+ Gets whether the "deprecated" field is set
+
+
+ Clears the value of the "deprecated" field
+
+
+ Field number for the "cc_enable_arenas" field.
+
+
+
+ Enables the use of arenas for the proto messages in this file. This applies
+ only to generated classes for C++.
+
+
+
+ Gets whether the "cc_enable_arenas" field is set
+
+
+ Clears the value of the "cc_enable_arenas" field
+
+
+ Field number for the "objc_class_prefix" field.
+
+
+
+ Sets the objective c class prefix which is prepended to all objective c
+ generated classes from this .proto. There is no default.
+
+
+
+ Gets whether the "objc_class_prefix" field is set
+
+
+ Clears the value of the "objc_class_prefix" field
+
+
+ Field number for the "csharp_namespace" field.
+
+
+
+ Namespace for generated classes; defaults to the package.
+
+
+
+ Gets whether the "csharp_namespace" field is set
+
+
+ Clears the value of the "csharp_namespace" field
+
+
+ Field number for the "swift_prefix" field.
+
+
+
+ By default Swift generators will take the proto package and CamelCase it
+ replacing '.' with underscore and use that to prefix the types/symbols
+ defined. When this options is provided, they will use this value instead
+ to prefix the types/symbols defined.
+
+
+
+ Gets whether the "swift_prefix" field is set
+
+
+ Clears the value of the "swift_prefix" field
+
+
+ Field number for the "php_class_prefix" field.
+
+
+
+ Sets the php class prefix which is prepended to all php generated classes
+ from this .proto. Default is empty.
+
+
+
+ Gets whether the "php_class_prefix" field is set
+
+
+ Clears the value of the "php_class_prefix" field
+
+
+ Field number for the "php_namespace" field.
+
+
+
+ Use this option to change the namespace of php generated classes. Default
+ is empty. When this option is empty, the package name will be used for
+ determining the namespace.
+
+
+
+ Gets whether the "php_namespace" field is set
+
+
+ Clears the value of the "php_namespace" field
+
+
+ Field number for the "php_metadata_namespace" field.
+
+
+
+ Use this option to change the namespace of php generated metadata classes.
+ Default is empty. When this option is empty, the proto file name will be
+ used for determining the namespace.
+
+
+
+ Gets whether the "php_metadata_namespace" field is set
+
+
+ Clears the value of the "php_metadata_namespace" field
+
+
+ Field number for the "ruby_package" field.
+
+
+
+ Use this option to change the package of ruby generated classes. Default
+ is empty. When this option is not set, the package name will be used for
+ determining the ruby package.
+
+
+
+ Gets whether the "ruby_package" field is set
+
+
+ Clears the value of the "ruby_package" field
+
+
+ Field number for the "uninterpreted_option" field.
+
+
+
+ The parser stores options it doesn't recognize here.
+ See the documentation for the "Options" section above.
+
+
+
+ Container for nested types declared in the FileOptions message type.
+
+
+
+ Generated classes can be optimized for speed or code size.
+
+
+
+
+ Generate complete code for parsing, serialization,
+
+
+
+
+ etc.
+
+
+
+
+ Generate code using MessageLite and the lite runtime.
+
+
+
+ Field number for the "message_set_wire_format" field.
+
+
+
+ Set true to use the old proto1 MessageSet wire format for extensions.
+ This is provided for backwards-compatibility with the MessageSet wire
+ format. You should not use this for any other reason: It's less
+ efficient, has fewer features, and is more complicated.
+
+ The message must be defined exactly as follows:
+ message Foo {
+ option message_set_wire_format = true;
+ extensions 4 to max;
+ }
+ Note that the message cannot have any defined fields; MessageSets only
+ have extensions.
+
+ All extensions of your type must be singular messages; e.g. they cannot
+ be int32s, enums, or repeated messages.
+
+ Because this is an option, the above two restrictions are not enforced by
+ the protocol compiler.
+
+
+
+ Gets whether the "message_set_wire_format" field is set
+
+
+ Clears the value of the "message_set_wire_format" field
+
+
+ Field number for the "no_standard_descriptor_accessor" field.
+
+
+
+ Disables the generation of the standard "descriptor()" accessor, which can
+ conflict with a field of the same name. This is meant to make migration
+ from proto1 easier; new code should avoid fields named "descriptor".
+
+
+
+ Gets whether the "no_standard_descriptor_accessor" field is set
+
+
+ Clears the value of the "no_standard_descriptor_accessor" field
+
+
+ Field number for the "deprecated" field.
+
+
+
+ Is this message deprecated?
+ Depending on the target platform, this can emit Deprecated annotations
+ for the message, or it will be completely ignored; in the very least,
+ this is a formalization for deprecating messages.
+
+
+
+ Gets whether the "deprecated" field is set
+
+
+ Clears the value of the "deprecated" field
+
+
+ Field number for the "map_entry" field.
+
+
+
+ Whether the message is an automatically generated map entry type for the
+ maps field.
+
+ For maps fields:
+ map<KeyType, ValueType> map_field = 1;
+ The parsed descriptor looks like:
+ message MapFieldEntry {
+ option map_entry = true;
+ optional KeyType key = 1;
+ optional ValueType value = 2;
+ }
+ repeated MapFieldEntry map_field = 1;
+
+ Implementations may choose not to generate the map_entry=true message, but
+ use a native map in the target language to hold the keys and values.
+ The reflection APIs in such implementations still need to work as
+ if the field is a repeated message field.
+
+ NOTE: Do not set the option in .proto files. Always use the maps syntax
+ instead. The option should only be implicitly set by the proto compiler
+ parser.
+
+
+
+ Gets whether the "map_entry" field is set
+
+
+ Clears the value of the "map_entry" field
+
+
+ Field number for the "uninterpreted_option" field.
+
+
+
+ The parser stores options it doesn't recognize here. See above.
+
+
+
+ Field number for the "ctype" field.
+
+
+
+ The ctype option instructs the C++ code generator to use a different
+ representation of the field than it normally would. See the specific
+ options below. This option is not yet implemented in the open source
+ release -- sorry, we'll try to include it in a future version!
+
+
+
+ Gets whether the "ctype" field is set
+
+
+ Clears the value of the "ctype" field
+
+
+ Field number for the "packed" field.
+
+
+
+ The packed option can be enabled for repeated primitive fields to enable
+ a more efficient representation on the wire. Rather than repeatedly
+ writing the tag and type for each element, the entire array is encoded as
+ a single length-delimited blob. In proto3, only explicit setting it to
+ false will avoid using packed encoding.
+
+
+
+ Gets whether the "packed" field is set
+
+
+ Clears the value of the "packed" field
+
+
+ Field number for the "jstype" field.
+
+
+
+ The jstype option determines the JavaScript type used for values of the
+ field. The option is permitted only for 64 bit integral and fixed types
+ (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
+ is represented as JavaScript string, which avoids loss of precision that
+ can happen when a large value is converted to a floating point JavaScript.
+ Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+ use the JavaScript "number" type. The behavior of the default option
+ JS_NORMAL is implementation dependent.
+
+ This option is an enum to permit additional types to be added, e.g.
+ goog.math.Integer.
+
+
+
+ Gets whether the "jstype" field is set
+
+
+ Clears the value of the "jstype" field
+
+
+ Field number for the "lazy" field.
+
+
+
+ Should this field be parsed lazily? Lazy applies only to message-type
+ fields. It means that when the outer message is initially parsed, the
+ inner message's contents will not be parsed but instead stored in encoded
+ form. The inner message will actually be parsed when it is first accessed.
+
+ This is only a hint. Implementations are free to choose whether to use
+ eager or lazy parsing regardless of the value of this option. However,
+ setting this option true suggests that the protocol author believes that
+ using lazy parsing on this field is worth the additional bookkeeping
+ overhead typically needed to implement it.
+
+ This option does not affect the public interface of any generated code;
+ all method signatures remain the same. Furthermore, thread-safety of the
+ interface is not affected by this option; const methods remain safe to
+ call from multiple threads concurrently, while non-const methods continue
+ to require exclusive access.
+
+ Note that implementations may choose not to check required fields within
+ a lazy sub-message. That is, calling IsInitialized() on the outer message
+ may return true even if the inner message has missing required fields.
+ This is necessary because otherwise the inner message would have to be
+ parsed in order to perform the check, defeating the purpose of lazy
+ parsing. An implementation which chooses not to check required fields
+ must be consistent about it. That is, for any particular sub-message, the
+ implementation must either *always* check its required fields, or *never*
+ check its required fields, regardless of whether or not the message has
+ been parsed.
+
+
+
+ Gets whether the "lazy" field is set
+
+
+ Clears the value of the "lazy" field
+
+
+ Field number for the "deprecated" field.
+
+
+
+ Is this field deprecated?
+ Depending on the target platform, this can emit Deprecated annotations
+ for accessors, or it will be completely ignored; in the very least, this
+ is a formalization for deprecating fields.
+
+
+
+ Gets whether the "deprecated" field is set
+
+
+ Clears the value of the "deprecated" field
+
+
+ Field number for the "weak" field.
+
+
+
+ For Google-internal migration only. Do not use.
+
+
+
+ Gets whether the "weak" field is set
+
+
+ Clears the value of the "weak" field
+
+
+ Field number for the "uninterpreted_option" field.
+
+
+
+ The parser stores options it doesn't recognize here. See above.
+
+
+
+ Container for nested types declared in the FieldOptions message type.
+
+
+
+ Default mode.
+
+
+
+
+ Use the default type.
+
+
+
+
+ Use JavaScript strings.
+
+
+
+
+ Use JavaScript numbers.
+
+
+
+ Field number for the "uninterpreted_option" field.
+
+
+
+ The parser stores options it doesn't recognize here. See above.
+
+
+
+ Field number for the "allow_alias" field.
+
+
+
+ Set this option to true to allow mapping different tag names to the same
+ value.
+
+
+
+ Gets whether the "allow_alias" field is set
+
+
+ Clears the value of the "allow_alias" field
+
+
+ Field number for the "deprecated" field.
+
+
+
+ Is this enum deprecated?
+ Depending on the target platform, this can emit Deprecated annotations
+ for the enum, or it will be completely ignored; in the very least, this
+ is a formalization for deprecating enums.
+
+
+
+ Gets whether the "deprecated" field is set
+
+
+ Clears the value of the "deprecated" field
+
+
+ Field number for the "uninterpreted_option" field.
+
+
+
+ The parser stores options it doesn't recognize here. See above.
+
+
+
+ Field number for the "deprecated" field.
+
+
+
+ Is this enum value deprecated?
+ Depending on the target platform, this can emit Deprecated annotations
+ for the enum value, or it will be completely ignored; in the very least,
+ this is a formalization for deprecating enum values.
+
+
+
+ Gets whether the "deprecated" field is set
+
+
+ Clears the value of the "deprecated" field
+
+
+ Field number for the "uninterpreted_option" field.
+
+
+
+ The parser stores options it doesn't recognize here. See above.
+
+
+
+ Field number for the "deprecated" field.
+
+
+
+ Is this service deprecated?
+ Depending on the target platform, this can emit Deprecated annotations
+ for the service, or it will be completely ignored; in the very least,
+ this is a formalization for deprecating services.
+
+
+
+ Gets whether the "deprecated" field is set
+
+
+ Clears the value of the "deprecated" field
+
+
+ Field number for the "uninterpreted_option" field.
+
+
+
+ The parser stores options it doesn't recognize here. See above.
+
+
+
+ Field number for the "deprecated" field.
+
+
+
+ Is this method deprecated?
+ Depending on the target platform, this can emit Deprecated annotations
+ for the method, or it will be completely ignored; in the very least,
+ this is a formalization for deprecating methods.
+
+
+
+ Gets whether the "deprecated" field is set
+
+
+ Clears the value of the "deprecated" field
+
+
+ Field number for the "idempotency_level" field.
+
+
+ Gets whether the "idempotency_level" field is set
+
+
+ Clears the value of the "idempotency_level" field
+
+
+ Field number for the "uninterpreted_option" field.
+
+
+
+ The parser stores options it doesn't recognize here. See above.
+
+
+
+ Container for nested types declared in the MethodOptions message type.
+
+
+
+ Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
+ or neither? HTTP based RPC implementation may choose GET verb for safe
+ methods, and PUT verb for idempotent methods instead of the default POST.
+
+
+
+
+ implies idempotent
+
+
+
+
+ idempotent, but may have side effects
+
+
+
+
+ A message representing a option the parser does not recognize. This only
+ appears in options protos created by the compiler::Parser class.
+ DescriptorPool resolves these when building Descriptor objects. Therefore,
+ options protos in descriptor objects (e.g. returned by Descriptor::options(),
+ or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
+ in them.
+
+
+
+ Field number for the "name" field.
+
+
+ Field number for the "identifier_value" field.
+
+
+
+ The value of the uninterpreted option, in whatever type the tokenizer
+ identified it as during parsing. Exactly one of these should be set.
+
+
+
+ Gets whether the "identifier_value" field is set
+
+
+ Clears the value of the "identifier_value" field
+
+
+ Field number for the "positive_int_value" field.
+
+
+ Gets whether the "positive_int_value" field is set
+
+
+ Clears the value of the "positive_int_value" field
+
+
+ Field number for the "negative_int_value" field.
+
+
+ Gets whether the "negative_int_value" field is set
+
+
+ Clears the value of the "negative_int_value" field
+
+
+ Field number for the "double_value" field.
+
+
+ Gets whether the "double_value" field is set
+
+
+ Clears the value of the "double_value" field
+
+
+ Field number for the "string_value" field.
+
+
+ Gets whether the "string_value" field is set
+
+
+ Clears the value of the "string_value" field
+
+
+ Field number for the "aggregate_value" field.
+
+
+ Gets whether the "aggregate_value" field is set
+
+
+ Clears the value of the "aggregate_value" field
+
+
+ Container for nested types declared in the UninterpretedOption message type.
+
+
+
+ The name of the uninterpreted option. Each string represents a segment in
+ a dot-separated name. is_extension is true iff a segment represents an
+ extension (denoted with parentheses in options specs in .proto files).
+ E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
+ "foo.(bar.baz).qux".
+
+
+
+ Field number for the "name_part" field.
+
+
+ Gets whether the "name_part" field is set
+
+
+ Clears the value of the "name_part" field
+
+
+ Field number for the "is_extension" field.
+
+
+ Gets whether the "is_extension" field is set
+
+
+ Clears the value of the "is_extension" field
+
+
+
+ Encapsulates information about the original source file from which a
+ FileDescriptorProto was generated.
+
+
+
+ Field number for the "location" field.
+
+
+
+ A Location identifies a piece of source code in a .proto file which
+ corresponds to a particular definition. This information is intended
+ to be useful to IDEs, code indexers, documentation generators, and similar
+ tools.
+
+ For example, say we have a file like:
+ message Foo {
+ optional string foo = 1;
+ }
+ Let's look at just the field definition:
+ optional string foo = 1;
+ ^ ^^ ^^ ^ ^^^
+ a bc de f ghi
+ We have the following locations:
+ span path represents
+ [a,i) [ 4, 0, 2, 0 ] The whole field definition.
+ [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
+ [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
+ [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
+ [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
+
+ Notes:
+ - A location may refer to a repeated field itself (i.e. not to any
+ particular index within it). This is used whenever a set of elements are
+ logically enclosed in a single code segment. For example, an entire
+ extend block (possibly containing multiple extension definitions) will
+ have an outer location whose path refers to the "extensions" repeated
+ field without an index.
+ - Multiple locations may have the same path. This happens when a single
+ logical declaration is spread out across multiple places. The most
+ obvious example is the "extend" block again -- there may be multiple
+ extend blocks in the same scope, each of which will have the same path.
+ - A location's span is not always a subset of its parent's span. For
+ example, the "extendee" of an extension declaration appears at the
+ beginning of the "extend" block and is shared by all extensions within
+ the block.
+ - Just because a location's span is a subset of some other location's span
+ does not mean that it is a descendant. For example, a "group" defines
+ both a type and a field in a single declaration. Thus, the locations
+ corresponding to the type and field and their components will overlap.
+ - Code which tries to interpret locations should probably be designed to
+ ignore those that it doesn't understand, as more types of locations could
+ be recorded in the future.
+
+
+
+ Container for nested types declared in the SourceCodeInfo message type.
+
+
+ Field number for the "path" field.
+
+
+
+ Identifies which part of the FileDescriptorProto was defined at this
+ location.
+
+ Each element is a field number or an index. They form a path from
+ the root FileDescriptorProto to the place where the definition. For
+ example, this path:
+ [ 4, 3, 2, 7, 1 ]
+ refers to:
+ file.message_type(3) // 4, 3
+ .field(7) // 2, 7
+ .name() // 1
+ This is because FileDescriptorProto.message_type has field number 4:
+ repeated DescriptorProto message_type = 4;
+ and DescriptorProto.field has field number 2:
+ repeated FieldDescriptorProto field = 2;
+ and FieldDescriptorProto.name has field number 1:
+ optional string name = 1;
+
+ Thus, the above path gives the location of a field name. If we removed
+ the last element:
+ [ 4, 3, 2, 7 ]
+ this path refers to the whole field declaration (from the beginning
+ of the label to the terminating semicolon).
+
+
+
+ Field number for the "span" field.
+
+
+
+ Always has exactly three or four elements: start line, start column,
+ end line (optional, otherwise assumed same as start line), end column.
+ These are packed into a single field for efficiency. Note that line
+ and column numbers are zero-based -- typically you will want to add
+ 1 to each before displaying to a user.
+
+
+
+ Field number for the "leading_comments" field.
+
+
+
+ If this SourceCodeInfo represents a complete declaration, these are any
+ comments appearing before and after the declaration which appear to be
+ attached to the declaration.
+
+ A series of line comments appearing on consecutive lines, with no other
+ tokens appearing on those lines, will be treated as a single comment.
+
+ leading_detached_comments will keep paragraphs of comments that appear
+ before (but not connected to) the current element. Each paragraph,
+ separated by empty lines, will be one comment element in the repeated
+ field.
+
+ Only the comment content is provided; comment markers (e.g. //) are
+ stripped out. For block comments, leading whitespace and an asterisk
+ will be stripped from the beginning of each line other than the first.
+ Newlines are included in the output.
+
+ Examples:
+
+ optional int32 foo = 1; // Comment attached to foo.
+ // Comment attached to bar.
+ optional int32 bar = 2;
+
+ optional string baz = 3;
+ // Comment attached to baz.
+ // Another line attached to baz.
+
+ // Comment attached to qux.
+ //
+ // Another line attached to qux.
+ optional double qux = 4;
+
+ // Detached comment for corge. This is not leading or trailing comments
+ // to qux or corge because there are blank lines separating it from
+ // both.
+
+ // Detached comment for corge paragraph 2.
+
+ optional string corge = 5;
+ /* Block comment attached
+ * to corge. Leading asterisks
+ * will be removed. */
+ /* Block comment attached to
+ * grault. */
+ optional int32 grault = 6;
+
+ // ignored detached comments.
+
+
+
+ Gets whether the "leading_comments" field is set
+
+
+ Clears the value of the "leading_comments" field
+
+
+ Field number for the "trailing_comments" field.
+
+
+ Gets whether the "trailing_comments" field is set
+
+
+ Clears the value of the "trailing_comments" field
+
+
+ Field number for the "leading_detached_comments" field.
+
+
+
+ Describes the relationship between generated code and its original source
+ file. A GeneratedCodeInfo message is associated with only one generated
+ source file, but may contain references to different source .proto files.
+
+
+
+ Field number for the "annotation" field.
+
+
+
+ An Annotation connects some span of text in generated code to an element
+ of its generating .proto file.
+
+
+
+ Container for nested types declared in the GeneratedCodeInfo message type.
+
+
+ Field number for the "path" field.
+
+
+
+ Identifies the element in the original source .proto file. This field
+ is formatted the same as SourceCodeInfo.Location.path.
+
+
+
+ Field number for the "source_file" field.
+
+
+
+ Identifies the filesystem path to the original source .proto.
+
+
+
+ Gets whether the "source_file" field is set
+
+
+ Clears the value of the "source_file" field
+
+
+ Field number for the "begin" field.
+
+
+
+ Identifies the starting offset in bytes in the generated code
+ that relates to the identified object.
+
+
+
+ Gets whether the "begin" field is set
+
+
+ Clears the value of the "begin" field
+
+
+ Field number for the "end" field.
+
+
+
+ Identifies the ending offset in bytes in the generated code that
+ relates to the identified offset. The end offset should be one past
+ the last relevant byte (so the length of the text = end - begin).
+
+
+
+ Gets whether the "end" field is set
+
+
+ Clears the value of the "end" field
+
+
+
+ Base class for nearly all descriptors, providing common functionality.
+
+
+
+
+ The index of this descriptor within its parent descriptor.
+
+
+ This returns the index of this descriptor within its parent, for
+ this descriptor's type. (There can be duplicate values for different
+ types, e.g. one enum type with index 0 and one message type with index 0.)
+
+
+
+
+ Returns the name of the entity (field, message etc) being described.
+
+
+
+
+ The fully qualified name of the descriptor's target.
+
+
+
+
+ The file this descriptor was declared in.
+
+
+
+
+ The declaration information about the descriptor, or null if no declaration information
+ is available for this descriptor.
+
+
+ This information is typically only available for dynamically loaded descriptors,
+ for example within a protoc plugin where the full descriptors, including source info,
+ are passed to the code by protoc.
+
+
+
+
+ Retrieves the list of nested descriptors corresponding to the given field number, if any.
+ If the field is unknown or not a nested descriptor list, return null to terminate the search.
+ The default implementation returns null.
+
+
+
+
+ Provides additional information about the declaration of a descriptor,
+ such as source location and comments.
+
+
+
+
+ The descriptor this declaration relates to.
+
+
+
+
+ The start line of the declaration within the source file. This value is 1-based.
+
+
+
+
+ The start column of the declaration within the source file. This value is 1-based.
+
+
+
+
+ // The end line of the declaration within the source file. This value is 1-based.
+
+
+
+
+ The end column of the declaration within the source file. This value is 1-based, and
+ exclusive. (The final character of the declaration is on the column before this value.)
+
+
+
+
+ Comments appearing before the declaration. Never null, but may be empty. Multi-line comments
+ are represented as a newline-separated string. Leading whitespace and the comment marker ("//")
+ are removed from each line.
+
+
+
+
+ Comments appearing after the declaration. Never null, but may be empty. Multi-line comments
+ are represented as a newline-separated string. Leading whitespace and the comment marker ("//")
+ are removed from each line.
+
+
+
+
+ Comments appearing before the declaration, but separated from it by blank
+ lines. Each string represents a newline-separated paragraph of comments.
+ Leading whitespace and the comment marker ("//") are removed from each line.
+ The list is never null, but may be empty. Likewise each element is never null, but may be empty.
+
+
+
+
+ Contains lookup tables containing all the descriptors defined in a particular file.
+
+
+
+
+ Finds a symbol of the given name within the pool.
+
+ The type of symbol to look for
+ Fully-qualified name to look up
+ The symbol with the given name and type,
+ or null if the symbol doesn't exist or has the wrong type
+
+
+
+ Adds a package to the symbol tables. If a package by the same name
+ already exists, that is fine, but if some other kind of symbol
+ exists under the same name, an exception is thrown. If the package
+ has multiple components, this also adds the parent package(s).
+
+
+
+
+ Adds a symbol to the symbol table.
+
+ The symbol already existed
+ in the symbol table.
+
+
+
+ Verifies that the descriptor's name is valid (i.e. it contains
+ only letters, digits and underscores, and does not start with a digit).
+
+
+
+
+
+ Returns the field with the given number in the given descriptor,
+ or null if it can't be found.
+
+
+
+
+ Adds a field to the fieldsByNumber table.
+
+ A field with the same
+ containing type and number already exists.
+
+
+
+ Adds an enum value to the enumValuesByNumber table. If an enum value
+ with the same type and number already exists, this method does nothing.
+ (This is allowed; the first value defined with the number takes precedence.)
+
+
+
+
+ Looks up a descriptor by name, relative to some other descriptor.
+ The name may be fully-qualified (with a leading '.'), partially-qualified,
+ or unqualified. C++-like name lookup semantics are used to search for the
+ matching descriptor.
+
+
+ This isn't heavily optimized, but it's only used during cross linking anyway.
+ If it starts being used more widely, we should look at performance more carefully.
+
+
+
+
+ Internal class containing utility methods when working with descriptors.
+
+
+
+
+ Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert
+ arrays.
+
+
+
+
+ Converts the given array into a read-only list, applying the specified conversion to
+ each input element.
+
+
+
+
+ Thrown when building descriptors fails because the source DescriptorProtos
+ are not valid.
+
+
+
+
+ The full name of the descriptor where the error occurred.
+
+
+
+
+ A human-readable description of the error. (The Message property
+ is made up of the descriptor's name and this description.)
+
+
+
+
+ Descriptor for an enum type in a .proto file.
+
+
+
+
+ The brief name of the descriptor's target.
+
+
+
+
+ The CLR type for this enum. For generated code, this will be a CLR enum type.
+
+
+
+
+ If this is a nested type, get the outer descriptor, otherwise null.
+
+
+
+
+ An unmodifiable list of defined value descriptors for this enum.
+
+
+
+
+ Finds an enum value by number. If multiple enum values have the
+ same number, this returns the first defined value with that number.
+ If there is no value for the given number, this returns null.
+
+
+
+
+ Finds an enum value by name.
+
+ The unqualified name of the value (e.g. "FOO").
+ The value's descriptor, or null if not found.
+
+
+
+ The (possibly empty) set of custom options for this enum.
+
+
+
+
+ Gets a single value enum option for this descriptor
+
+
+
+
+ Gets a repeated value enum option for this descriptor
+
+
+
+
+ Descriptor for a single enum value within an enum in a .proto file.
+
+
+
+
+ Returns the name of the enum value described by this object.
+
+
+
+
+ Returns the number associated with this enum value.
+
+
+
+
+ Returns the enum descriptor that this value is part of.
+
+
+
+
+ The (possibly empty) set of custom options for this enum value.
+
+
+
+
+ Gets a single value enum value option for this descriptor
+
+
+
+
+ Gets a repeated value enum value option for this descriptor
+
+
+
+
+ A collection to simplify retrieving the descriptors of extensions in a descriptor for a message
+
+
+
+
+ Returns a readonly list of all the extensions defined in this type in
+ the order they were defined in the source .proto file
+
+
+
+
+ Returns a readonly list of all the extensions define in this type that extend
+ the provided descriptor type in the order they were defined in the source .proto file
+
+
+
+
+ Returns a readonly list of all the extensions define in this type that extend
+ the provided descriptor type in accending field order
+
+
+
+
+ Base class for field accessors.
+
+
+
+
+ Descriptor for a field or extension within a message in a .proto file.
+
+
+
+
+ Get the field's containing message type, or null if it is a field defined at the top level of a file as an extension.
+
+
+
+
+ Returns the oneof containing this field, or null if it is not part of a oneof.
+
+
+
+
+ The effective JSON name for this field. This is usually the lower-camel-cased form of the field name,
+ but can be overridden using the json_name option in the .proto file.
+
+
+
+
+ An extension identifier for this field, or null if this field isn't an extension.
+
+
+
+
+ The brief name of the descriptor's target.
+
+
+
+
+ Returns the accessor for this field.
+
+
+
+ While a describes the field, it does not provide
+ any way of obtaining or changing the value of the field within a specific message;
+ that is the responsibility of the accessor.
+
+
+ In descriptors for generated code, the value returned by this property will be non-null for all
+ regular fields. However, if a message containing a map field is introspected, the list of nested messages will include
+ an auto-generated nested key/value pair message for the field. This is not represented in any
+ generated type, and the value of the map field itself is represented by a dictionary in the
+ reflection API. There are never instances of those "hidden" messages, so no accessor is provided
+ and this property will return null.
+
+
+ In dynamically loaded descriptors, the value returned by this property will current be null;
+ if and when dynamic messages are supported, it will return a suitable accessor to work with
+ them.
+
+
+
+
+
+ Maps a field type as included in the .proto file to a FieldType.
+
+
+
+
+ Returns true if this field is a repeated field; false otherwise.
+
+
+
+
+ Returns true if this field is a required field; false otherwise.
+
+
+
+
+ Returns true if this field is a map field; false otherwise.
+
+
+
+
+ Returns true if this field is a packed, repeated field; false otherwise.
+
+
+
+
+ Returns true if this field extends another message type; false otherwise.
+
+
+
+
+ Returns the type of the field.
+
+
+
+
+ Returns the field number declared in the proto file.
+
+
+
+
+ Compares this descriptor with another one, ordering in "canonical" order
+ which simply means ascending order by field number.
+ must be a field of the same type, i.e. the of
+ both fields must be the same.
+
+
+
+
+ For enum fields, returns the field's type.
+
+
+
+
+ For embedded message and group fields, returns the field's type.
+
+
+
+
+ For extension fields, returns the extended type
+
+
+
+
+ The (possibly empty) set of custom options for this field.
+
+
+
+
+ Gets a single value field option for this descriptor
+
+
+
+
+ Gets a repeated value field option for this descriptor
+
+
+
+
+ Look up and cross-link all field types etc.
+
+
+
+
+ Enumeration of all the possible field types.
+
+
+
+
+ The double field type.
+
+
+
+
+ The float field type.
+
+
+
+
+ The int64 field type.
+
+
+
+
+ The uint64 field type.
+
+
+
+
+ The int32 field type.
+
+
+
+
+ The fixed64 field type.
+
+
+
+
+ The fixed32 field type.
+
+
+
+
+ The bool field type.
+
+
+
+
+ The string field type.
+
+
+
+
+ The field type used for groups.
+
+
+
+
+ The field type used for message fields.
+
+
+
+
+ The bytes field type.
+
+
+
+
+ The uint32 field type.
+
+
+
+
+ The sfixed32 field type.
+
+
+
+
+ The sfixed64 field type.
+
+
+
+
+ The sint32 field type.
+
+
+
+
+ The sint64 field type.
+
+
+
+
+ The field type used for enum fields.
+
+
+
+
+ The syntax of a .proto file
+
+
+
+
+ Proto2 syntax
+
+
+
+
+ Proto3 syntax
+
+
+
+
+ An unknown declared syntax
+
+
+
+
+ Describes a .proto file, including everything defined within.
+ IDescriptor is implemented such that the File property returns this descriptor,
+ and the FullName is the same as the Name.
+
+
+
+
+ Computes the full name of a descriptor within this file, with an optional parent message.
+
+
+
+
+ Extracts public dependencies from direct dependencies. This is a static method despite its
+ first parameter, as the value we're in the middle of constructing is only used for exceptions.
+
+
+
+
+ The descriptor in its protocol message representation.
+
+
+
+
+ The syntax of the file
+
+
+
+
+ The file name.
+
+
+
+
+ The package as declared in the .proto file. This may or may not
+ be equivalent to the .NET namespace of the generated classes.
+
+
+
+
+ Unmodifiable list of top-level message types declared in this file.
+
+
+
+
+ Unmodifiable list of top-level enum types declared in this file.
+
+
+
+
+ Unmodifiable list of top-level services declared in this file.
+
+
+
+
+ Unmodifiable list of top-level extensions declared in this file.
+ Note that some extensions may be incomplete (FieldDescriptor.Extension may be null)
+ if this descriptor was generated using a version of protoc that did not fully
+ support extensions in C#.
+
+
+
+
+ Unmodifiable list of this file's dependencies (imports).
+
+
+
+
+ Unmodifiable list of this file's public dependencies (public imports).
+
+
+
+
+ The original serialized binary form of this descriptor.
+
+
+
+
+ Implementation of IDescriptor.FullName - just returns the same as Name.
+
+
+
+
+ Implementation of IDescriptor.File - just returns this descriptor.
+
+
+
+
+ Pool containing symbol descriptors.
+
+
+
+
+ Finds a type (message, enum, service or extension) in the file by name. Does not find nested types.
+
+ The unqualified type name to look for.
+ The type of descriptor to look for
+ The type's descriptor, or null if not found.
+
+
+
+ Builds a FileDescriptor from its protocol buffer representation.
+
+ The original serialized descriptor data.
+ We have only limited proto2 support, so serializing FileDescriptorProto
+ would not necessarily give us this.
+ The protocol message form of the FileDescriptor.
+ FileDescriptors corresponding to all of the
+ file's dependencies, in the exact order listed in the .proto file. May be null,
+ in which case it is treated as an empty array.
+ Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false).
+ Details about generated code, for the purposes of reflection.
+ If is not
+ a valid descriptor. This can occur for a number of reasons, such as a field
+ having an undefined type or because two messages were defined with the same name.
+
+
+
+ Creates a descriptor for generated code.
+
+
+ This method is only designed to be used by the results of generating code with protoc,
+ which creates the appropriate dependencies etc. It has to be public because the generated
+ code is "external", but should not be called directly by end users.
+
+
+
+
+ Converts the given descriptor binary data into FileDescriptor objects.
+ Note: reflection using the returned FileDescriptors is not currently supported.
+
+ The binary file descriptor proto data. Must not be null, and any
+ dependencies must come before the descriptor which depends on them. (If A depends on B, and B
+ depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible
+ with the order in which protoc provides descriptors to plugins.
+ The file descriptors corresponding to .
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Returns the file descriptor for descriptor.proto.
+
+
+ This is used for protos which take a direct dependency on descriptor.proto, typically for
+ annotations. While descriptor.proto is a proto2 file, it is built into the Google.Protobuf
+ runtime for reflection purposes. The messages are internal to the runtime as they would require
+ proto2 semantics for full support, but the file descriptor is available via this property. The
+ C# codegen in protoc automatically uses this property when it detects a dependency on descriptor.proto.
+
+
+ The file descriptor for descriptor.proto.
+
+
+
+
+ The (possibly empty) set of custom options for this file.
+
+
+
+
+ Gets a single value file option for this descriptor
+
+
+
+
+ Gets a repeated value file option for this descriptor
+
+
+
+
+ Performs initialization for the given generic type argument.
+
+
+ This method is present for the sake of AOT compilers. It allows code (whether handwritten or generated)
+ to make calls into the reflection machinery of this library to express an intention to use that type
+ reflectively (e.g. for JSON parsing and formatting). The call itself does almost nothing, but AOT compilers
+ attempting to determine which generic type arguments need to be handled will spot the code path and act
+ accordingly.
+
+ The type to force initialization for.
+
+
+
+ Extra information provided by generated code when initializing a message or file descriptor.
+ These are constructed as required, and are not long-lived. Hand-written code should
+ never need to use this type.
+
+
+
+
+ Irrelevant for file descriptors; the CLR type for the message for message descriptors.
+
+
+
+
+ Irrelevant for file descriptors; the parser for message descriptors.
+
+
+
+
+ Irrelevant for file descriptors; the CLR property names (in message descriptor field order)
+ for fields in the message for message descriptors.
+
+
+
+
+ The extensions defined within this file/message descriptor
+
+
+
+
+ Irrelevant for file descriptors; the CLR property "base" names (in message descriptor oneof order)
+ for oneofs in the message for message descriptors. It is expected that for a oneof name of "Foo",
+ there will be a "FooCase" property and a "ClearFoo" method.
+
+
+
+
+ The reflection information for types within this file/message descriptor. Elements may be null
+ if there is no corresponding generated type, e.g. for map entry types.
+
+
+
+
+ The CLR types for enums within this file/message descriptor.
+
+
+
+
+ Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names.
+ Each array parameter may be null, to indicate a lack of values.
+ The parameter order is designed to make it feasible to format the generated code readably.
+
+
+
+
+ Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names.
+ Each array parameter may be null, to indicate a lack of values.
+ The parameter order is designed to make it feasible to format the generated code readably.
+
+
+
+
+ Creates a GeneratedClrTypeInfo for a file descriptor, with only types, enums, and extensions.
+
+
+
+
+ Creates a GeneratedClrTypeInfo for a file descriptor, with only types and enums.
+
+
+
+
+ Interface implemented by all descriptor types.
+
+
+
+
+ Returns the name of the entity (message, field etc) being described.
+
+
+
+
+ Returns the fully-qualified name of the entity being described.
+
+
+
+
+ Returns the descriptor for the .proto file that this entity is part of.
+
+
+
+
+ Allows fields to be reflectively accessed.
+
+
+
+
+ Returns the descriptor associated with this field.
+
+
+
+
+ Clears the field in the specified message. (For repeated fields,
+ this clears the list.)
+
+
+
+
+ Fetches the field value. For repeated values, this will be an
+ implementation. For map values, this will be an
+ implementation.
+
+
+
+
+ Indicates whether the field in the specified message is set. For proto3 fields, this throws an
+
+
+
+
+ Mutator for single "simple" fields only.
+
+
+ Repeated fields are mutated by fetching the value and manipulating it as a list.
+ Map fields are mutated by fetching the value and manipulating it as a dictionary.
+
+ The field is not a "simple" field.
+
+
+
+ Accessor for map fields.
+
+
+
+
+ Describes a message type.
+
+
+
+
+ The brief name of the descriptor's target.
+
+
+
+
+ The CLR type used to represent message instances from this descriptor.
+
+
+
+ The value returned by this property will be non-null for all regular fields. However,
+ if a message containing a map field is introspected, the list of nested messages will include
+ an auto-generated nested key/value pair message for the field. This is not represented in any
+ generated type, so this property will return null in such cases.
+
+
+ For wrapper types ( and the like), the type returned here
+ will be the generated message type, not the native type used by reflection for fields of those types. Code
+ using reflection should call to determine whether a message descriptor represents
+ a wrapper type, and handle the result appropriately.
+
+
+
+
+
+ A parser for this message type.
+
+
+
+ As is not generic, this cannot be statically
+ typed to the relevant type, but it should produce objects of a type compatible with .
+
+
+ The value returned by this property will be non-null for all regular fields. However,
+ if a message containing a map field is introspected, the list of nested messages will include
+ an auto-generated nested key/value pair message for the field. No message parser object is created for
+ such messages, so this property will return null in such cases.
+
+
+ For wrapper types ( and the like), the parser returned here
+ will be the generated message type, not the native type used by reflection for fields of those types. Code
+ using reflection should call to determine whether a message descriptor represents
+ a wrapper type, and handle the result appropriately.
+
+
+
+
+
+ Returns whether this message is one of the "well known types" which may have runtime/protoc support.
+
+
+
+
+ Returns whether this message is one of the "wrapper types" used for fields which represent primitive values
+ with the addition of presence.
+
+
+
+
+ If this is a nested type, get the outer descriptor, otherwise null.
+
+
+
+
+ A collection of fields, which can be retrieved by name or field number.
+
+
+
+
+ An unmodifiable list of extensions defined in this message's scope.
+ Note that some extensions may be incomplete (FieldDescriptor.Extension may be null)
+ if they are declared in a file generated using a version of protoc that did not fully
+ support extensions in C#.
+
+
+
+
+ An unmodifiable list of this message type's nested types.
+
+
+
+
+ An unmodifiable list of this message type's enum types.
+
+
+
+
+ An unmodifiable list of the "oneof" field collections in this message type.
+
+
+
+
+ Finds a field by field name.
+
+ The unqualified name of the field (e.g. "foo").
+ The field's descriptor, or null if not found.
+
+
+
+ Finds a field by field number.
+
+ The field number within this message type.
+ The field's descriptor, or null if not found.
+
+
+
+ Finds a nested descriptor by name. The is valid for fields, nested
+ message types, oneofs and enums.
+
+ The unqualified name of the descriptor, e.g. "Foo"
+ The descriptor, or null if not found.
+
+
+
+ The (possibly empty) set of custom options for this message.
+
+
+
+
+ Gets a single value message option for this descriptor
+
+
+
+
+ Gets a repeated value message option for this descriptor
+
+
+
+
+ Looks up and cross-links all fields and nested types.
+
+
+
+
+ A collection to simplify retrieving the field accessor for a particular field.
+
+
+
+
+ Returns the fields in the message as an immutable list, in the order in which they
+ are declared in the source .proto file.
+
+
+
+
+ Returns the fields in the message as an immutable list, in ascending field number
+ order. Field numbers need not be contiguous, so there is no direct mapping from the
+ index in the list to the field number; to retrieve a field by field number, it is better
+ to use the indexer.
+
+
+
+
+ Returns a read-only dictionary mapping the field names in this message as they're available
+ in the JSON representation to the field descriptors. For example, a field foo_bar
+ in the message would result two entries, one with a key fooBar and one with a key
+ foo_bar, both referring to the same field.
+
+
+
+
+ Retrieves the descriptor for the field with the given number.
+
+ Number of the field to retrieve the descriptor for
+ The accessor for the given field
+ The message descriptor does not contain a field
+ with the given number
+
+
+
+ Retrieves the descriptor for the field with the given name.
+
+ Name of the field to retrieve the descriptor for
+ The descriptor for the given field
+ The message descriptor does not contain a field
+ with the given name
+
+
+
+ Describes a single method in a service.
+
+
+
+
+ The service this method belongs to.
+
+
+
+
+ The method's input type.
+
+
+
+
+ The method's input type.
+
+
+
+
+ Indicates if client streams multiple requests.
+
+
+
+
+ Indicates if server streams multiple responses.
+
+
+
+
+ The (possibly empty) set of custom options for this method.
+
+
+
+
+ Gets a single value method option for this descriptor
+
+
+
+
+ Gets a repeated value method option for this descriptor
+
+
+
+
+ The brief name of the descriptor's target.
+
+
+
+
+ Reflection access for a oneof, allowing clear and "get case" actions.
+
+
+
+
+ Gets the descriptor for this oneof.
+
+
+ The descriptor of the oneof.
+
+
+
+
+ Clears the oneof in the specified message.
+
+
+
+
+ Indicates which field in the oneof is set for specified message
+
+
+
+
+ Describes a "oneof" field collection in a message type: a set of
+ fields of which at most one can be set in any particular message.
+
+
+
+
+ The brief name of the descriptor's target.
+
+
+
+
+ Gets the message type containing this oneof.
+
+
+ The message type containing this oneof.
+
+
+
+
+ Gets the fields within this oneof, in declaration order.
+
+
+ The fields within this oneof, in declaration order.
+
+
+
+
+ Gets an accessor for reflective access to the values associated with the oneof
+ in a particular message.
+
+
+
+ In descriptors for generated code, the value returned by this property will always be non-null.
+
+
+ In dynamically loaded descriptors, the value returned by this property will current be null;
+ if and when dynamic messages are supported, it will return a suitable accessor to work with
+ them.
+
+
+
+ The accessor used for reflective access.
+
+
+
+
+ The (possibly empty) set of custom options for this oneof.
+
+
+
+
+ Gets a single value oneof option for this descriptor
+
+
+
+
+ Gets a repeated value oneof option for this descriptor
+
+
+
+
+ Specifies the original name (in the .proto file) of a named element,
+ such as an enum value.
+
+
+
+
+ The name of the element in the .proto file.
+
+
+
+
+ If the name is preferred in the .proto file.
+
+
+
+
+ Constructs a new attribute instance for the given name.
+
+ The name of the element in the .proto file.
+
+
+
+ Represents a package in the symbol table. We use PackageDescriptors
+ just as placeholders so that someone cannot define, say, a message type
+ that has the same name as an existing package.
+
+
+
+
+ The methods in this class are somewhat evil, and should not be tampered with lightly.
+ Basically they allow the creation of relatively weakly typed delegates from MethodInfos
+ which are more strongly typed. They do this by creating an appropriate strongly typed
+ delegate from the MethodInfo, and then calling that within an anonymous method.
+ Mind-bending stuff (at least to your humble narrator) but the resulting delegates are
+ very fast compared with calling Invoke later on.
+
+
+
+
+ Empty Type[] used when calling GetProperty to force property instead of indexer fetching.
+
+
+
+
+ Creates a delegate which will cast the argument to the type that declares the method,
+ call the method on it, then convert the result to object.
+
+ The method to create a delegate for, which must be declared in an IMessage
+ implementation.
+
+
+
+ Creates a delegate which will cast the argument to the type that declares the method,
+ call the method on it, then convert the result to the specified type. The method is expected
+ to actually return an enum (because of where we're calling it - for oneof cases). Sometimes that
+ means we need some extra work to perform conversions.
+
+ The method to create a delegate for, which must be declared in an IMessage
+ implementation.
+
+
+
+ Creates a delegate which will execute the given method after casting the first argument to
+ the type that declares the method, and the second argument to the first parameter type of the method.
+
+ The method to create a delegate for, which must be declared in an IMessage
+ implementation.
+
+
+
+ Creates a delegate which will execute the given method after casting the first argument to
+ type that declares the method.
+
+ The method to create a delegate for, which must be declared in an IMessage
+ implementation.
+
+
+
+ Creates a delegate which will execute the given method after casting the first argument to
+ the type that declares the method, and the second argument to the first parameter type of the method.
+
+
+
+
+ Creates a reflection helper for the given type arguments. Currently these are created on demand
+ rather than cached; this will be "busy" when initially loading a message's descriptor, but after that
+ they can be garbage collected. We could cache them by type if that proves to be important, but creating
+ an object is pretty cheap.
+
+
+
+
+ Accessor for repeated fields.
+
+
+
+
+ Describes a service type.
+
+
+
+
+ The brief name of the descriptor's target.
+
+
+
+
+ An unmodifiable list of methods in this service.
+
+
+
+
+ Finds a method by name.
+
+ The unqualified name of the method (e.g. "Foo").
+ The method's decsriptor, or null if not found.
+
+
+
+ The (possibly empty) set of custom options for this service.
+
+
+
+
+ Gets a single value service option for this descriptor
+
+
+
+
+ Gets a repeated value service option for this descriptor
+
+
+
+
+ Accessor for single fields.
+
+
+
+
+ An immutable registry of types which can be looked up by their full name.
+
+
+
+
+ An empty type registry, containing no types.
+
+
+
+
+ Attempts to find a message descriptor by its full name.
+
+ The full name of the message, which is the dot-separated
+ combination of package, containing messages and message name
+ The message descriptor corresponding to or null
+ if there is no such message descriptor.
+
+
+
+ Creates a type registry from the specified set of file descriptors.
+
+
+ This is a convenience overload for
+ to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2).
+
+ The set of files to include in the registry. Must not contain null values.
+ A type registry for the given files.
+
+
+
+ Creates a type registry from the specified set of file descriptors.
+
+
+ All message types within all the specified files are added to the registry, and
+ the dependencies of the specified files are also added, recursively.
+
+ The set of files to include in the registry. Must not contain null values.
+ A type registry for the given files.
+
+
+
+ Creates a type registry from the file descriptor parents of the specified set of message descriptors.
+
+
+ This is a convenience overload for
+ to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2).
+
+ The set of message descriptors to use to identify file descriptors to include in the registry.
+ Must not contain null values.
+ A type registry for the given files.
+
+
+
+ Creates a type registry from the file descriptor parents of the specified set of message descriptors.
+
+
+ The specified message descriptors are only used to identify their file descriptors; the returned registry
+ contains all the types within the file descriptors which contain the specified message descriptors (and
+ the dependencies of those files), not just the specified messages.
+
+ The set of message descriptors to use to identify file descriptors to include in the registry.
+ Must not contain null values.
+ A type registry for the given files.
+
+
+
+ Builder class which isn't exposed, but acts as a convenient alternative to passing round two dictionaries in recursive calls.
+
+
+
+
+ Represents a single field in an UnknownFieldSet.
+
+ An UnknownField consists of four lists of values. The lists correspond
+ to the four "wire types" used in the protocol buffer binary format.
+ Normally, only one of the four lists will contain any values, since it
+ is impossible to define a valid message type that declares two different
+ types for the same field number. However, the code is designed to allow
+ for the case where the same unknown field number is encountered using
+ multiple different wire types.
+
+
+
+
+
+ Creates a new UnknownField.
+
+
+
+
+ Checks if two unknown field are equal.
+
+
+
+
+ Get the hash code of the unknown field.
+
+
+
+
+ Serializes the field, including the field number, and writes it to
+
+
+ The unknown field number.
+ The CodedOutputStream to write to.
+
+
+
+ Computes the number of bytes required to encode this field, including field
+ number.
+
+
+
+
+ Merge the values in into this field. For each list
+ of values, 's values are append to the ones in this
+ field.
+
+
+
+
+ Returns a new list containing all of the given specified values from
+ both the and lists.
+ If is null and is empty,
+ null is returned. Otherwise, either a new list is created (if
+ is null) or the elements of are added to .
+
+
+
+
+ Adds a varint value.
+
+
+
+
+ Adds a fixed32 value.
+
+
+
+
+ Adds a fixed64 value.
+
+
+
+
+ Adds a length-delimited value.
+
+
+
+
+ Adds to the , creating
+ a new list if is null. The list is returned - either
+ the original reference or the new list.
+
+
+
+
+ Used to keep track of fields which were seen when parsing a protocol message
+ but whose field numbers or types are unrecognized. This most frequently
+ occurs when new fields are added to a message type and then messages containing
+ those fields are read by old software that was built before the new types were
+ added.
+
+ Most users will never need to use this class directly.
+
+
+
+
+ Creates a new UnknownFieldSet.
+
+
+
+
+ Checks whether or not the given field number is present in the set.
+
+
+
+
+ Serializes the set and writes it to .
+
+
+
+
+ Gets the number of bytes required to encode this set.
+
+
+
+
+ Checks if two unknown field sets are equal.
+
+
+
+
+ Gets the unknown field set's hash code.
+
+
+
+
+ Adds a field to the set. If a field with the same number already exists, it
+ is replaced.
+
+
+
+
+ Parse a single field from and merge it
+ into this set.
+
+ The coded input stream containing the field
+ false if the tag is an "end group" tag, true otherwise
+
+
+
+ Create a new UnknownFieldSet if unknownFields is null.
+ Parse a single field from and merge it
+ into unknownFields. If is configured to discard unknown fields,
+ will be returned as-is and the field will be skipped.
+
+ The UnknownFieldSet which need to be merged
+ The coded input stream containing the field
+ The merged UnknownFieldSet
+
+
+
+ Merges the fields from into this set.
+ If a field number exists in both sets, the values in
+ will be appended to the values in this set.
+
+
+
+
+ Created a new UnknownFieldSet to if
+ needed and merges the fields from into the first set.
+ If a field number exists in both sets, the values in
+ will be appended to the values in this set.
+
+
+
+
+ Adds a field to the unknown field set. If a field with the same
+ number already exists, the two are merged.
+
+
+
+
+ Clone an unknown field set from .
+
+
+
+ Holder for reflection information generated from google/protobuf/any.proto
+
+
+ File descriptor for google/protobuf/any.proto
+
+
+
+ `Any` contains an arbitrary serialized protocol buffer message along with a
+ URL that describes the type of the serialized message.
+
+ Protobuf library provides support to pack/unpack Any values in the form
+ of utility functions or additional generated methods of the Any type.
+
+ Example 1: Pack and unpack a message in C++.
+
+ Foo foo = ...;
+ Any any;
+ any.PackFrom(foo);
+ ...
+ if (any.UnpackTo(&foo)) {
+ ...
+ }
+
+ Example 2: Pack and unpack a message in Java.
+
+ Foo foo = ...;
+ Any any = Any.pack(foo);
+ ...
+ if (any.is(Foo.class)) {
+ foo = any.unpack(Foo.class);
+ }
+
+ Example 3: Pack and unpack a message in Python.
+
+ foo = Foo(...)
+ any = Any()
+ any.Pack(foo)
+ ...
+ if any.Is(Foo.DESCRIPTOR):
+ any.Unpack(foo)
+ ...
+
+ Example 4: Pack and unpack a message in Go
+
+ foo := &pb.Foo{...}
+ any, err := ptypes.MarshalAny(foo)
+ ...
+ foo := &pb.Foo{}
+ if err := ptypes.UnmarshalAny(any, foo); err != nil {
+ ...
+ }
+
+ The pack methods provided by protobuf library will by default use
+ 'type.googleapis.com/full.type.name' as the type URL and the unpack
+ methods only use the fully qualified type name after the last '/'
+ in the type URL, for example "foo.bar.com/x/y.z" will yield type
+ name "y.z".
+
+ JSON
+ ====
+ The JSON representation of an `Any` value uses the regular
+ representation of the deserialized, embedded message, with an
+ additional field `@type` which contains the type URL. Example:
+
+ package google.profile;
+ message Person {
+ string first_name = 1;
+ string last_name = 2;
+ }
+
+ {
+ "@type": "type.googleapis.com/google.profile.Person",
+ "firstName": <string>,
+ "lastName": <string>
+ }
+
+ If the embedded message type is well-known and has a custom JSON
+ representation, that representation will be embedded adding a field
+ `value` which holds the custom JSON in addition to the `@type`
+ field. Example (for message [google.protobuf.Duration][]):
+
+ {
+ "@type": "type.googleapis.com/google.protobuf.Duration",
+ "value": "1.212s"
+ }
+
+
+
+ Field number for the "type_url" field.
+
+
+
+ A URL/resource name that uniquely identifies the type of the serialized
+ protocol buffer message. This string must contain at least
+ one "/" character. The last segment of the URL's path must represent
+ the fully qualified name of the type (as in
+ `path/google.protobuf.Duration`). The name should be in a canonical form
+ (e.g., leading "." is not accepted).
+
+ In practice, teams usually precompile into the binary all types that they
+ expect it to use in the context of Any. However, for URLs which use the
+ scheme `http`, `https`, or no scheme, one can optionally set up a type
+ server that maps type URLs to message definitions as follows:
+
+ * If no scheme is provided, `https` is assumed.
+ * An HTTP GET on the URL must yield a [google.protobuf.Type][]
+ value in binary format, or produce an error.
+ * Applications are allowed to cache lookup results based on the
+ URL, or have them precompiled into a binary to avoid any
+ lookup. Therefore, binary compatibility needs to be preserved
+ on changes to types. (Use versioned type names to manage
+ breaking changes.)
+
+ Note: this functionality is not currently available in the official
+ protobuf release, and it is not used for type URLs beginning with
+ type.googleapis.com.
+
+ Schemes other than `http`, `https` (or the empty scheme) might be
+ used with implementation specific semantics.
+
+
+
+ Field number for the "value" field.
+
+
+
+ Must be a valid serialized protocol buffer of the above specified type.
+
+
+
+
+ Retrieves the type name for a type URL, matching the
+ of the packed message type.
+
+
+
+ This is always just the last part of the URL, after the final slash. No validation of
+ anything before the trailing slash is performed. If the type URL does not include a slash,
+ an empty string is returned rather than an exception being thrown; this won't match any types,
+ and the calling code is probably in a better position to give a meaningful error.
+
+
+ There is no handling of fragments or queries at the moment.
+
+
+ The URL to extract the type name from
+ The type name
+
+
+
+ Returns a bool indictating whether this Any message is of the target message type
+
+ The descriptor of the message type
+ true if the type name matches the descriptor's full name or false otherwise
+
+
+
+ Unpacks the content of this Any message into the target message type,
+ which must match the type URL within this Any message.
+
+ The type of message to unpack the content into.
+ The unpacked message.
+ The target message type doesn't match the type URL in this message
+
+
+
+ Attempts to unpack the content of this Any message into the target message type,
+ if it matches the type URL within this Any message.
+
+ The type of message to attempt to unpack the content into.
+ true if the message was successfully unpacked; false if the type name didn't match
+
+
+
+ Packs the specified message into an Any message using a type URL prefix of "type.googleapis.com".
+
+ The message to pack.
+ An Any message with the content and type URL of .
+
+
+
+ Packs the specified message into an Any message using the specified type URL prefix.
+
+ The message to pack.
+ The prefix for the type URL.
+ An Any message with the content and type URL of .
+
+
+ Holder for reflection information generated from google/protobuf/api.proto
+
+
+ File descriptor for google/protobuf/api.proto
+
+
+
+ Api is a light-weight descriptor for an API Interface.
+
+ Interfaces are also described as "protocol buffer services" in some contexts,
+ such as by the "service" keyword in a .proto file, but they are different
+ from API Services, which represent a concrete implementation of an interface
+ as opposed to simply a description of methods and bindings. They are also
+ sometimes simply referred to as "APIs" in other contexts, such as the name of
+ this message itself. See https://cloud.google.com/apis/design/glossary for
+ detailed terminology.
+
+
+
+ Field number for the "name" field.
+
+
+
+ The fully qualified name of this interface, including package name
+ followed by the interface's simple name.
+
+
+
+ Field number for the "methods" field.
+
+
+
+ The methods of this interface, in unspecified order.
+
+
+
+ Field number for the "options" field.
+
+
+
+ Any metadata attached to the interface.
+
+
+
+ Field number for the "version" field.
+
+
+
+ A version string for this interface. If specified, must have the form
+ `major-version.minor-version`, as in `1.10`. If the minor version is
+ omitted, it defaults to zero. If the entire version field is empty, the
+ major version is derived from the package name, as outlined below. If the
+ field is not empty, the version in the package name will be verified to be
+ consistent with what is provided here.
+
+ The versioning schema uses [semantic
+ versioning](http://semver.org) where the major version number
+ indicates a breaking change and the minor version an additive,
+ non-breaking change. Both version numbers are signals to users
+ what to expect from different versions, and should be carefully
+ chosen based on the product plan.
+
+ The major version is also reflected in the package name of the
+ interface, which must end in `v<major-version>`, as in
+ `google.feature.v1`. For major versions 0 and 1, the suffix can
+ be omitted. Zero major versions must only be used for
+ experimental, non-GA interfaces.
+
+
+
+ Field number for the "source_context" field.
+
+
+
+ Source context for the protocol buffer service represented by this
+ message.
+
+
+
+ Field number for the "mixins" field.
+
+
+
+ Included interfaces. See [Mixin][].
+
+
+
+ Field number for the "syntax" field.
+
+
+
+ The source syntax of the service.
+
+
+
+
+ Method represents a method of an API interface.
+
+
+
+ Field number for the "name" field.
+
+
+
+ The simple name of this method.
+
+
+
+ Field number for the "request_type_url" field.
+
+
+
+ A URL of the input message type.
+
+
+
+ Field number for the "request_streaming" field.
+
+
+
+ If true, the request is streamed.
+
+
+
+ Field number for the "response_type_url" field.
+
+
+
+ The URL of the output message type.
+
+
+
+ Field number for the "response_streaming" field.
+
+
+
+ If true, the response is streamed.
+
+
+
+ Field number for the "options" field.
+
+
+
+ Any metadata attached to the method.
+
+
+
+ Field number for the "syntax" field.
+
+
+
+ The source syntax of this method.
+
+
+
+
+ Declares an API Interface to be included in this interface. The including
+ interface must redeclare all the methods from the included interface, but
+ documentation and options are inherited as follows:
+
+ - If after comment and whitespace stripping, the documentation
+ string of the redeclared method is empty, it will be inherited
+ from the original method.
+
+ - Each annotation belonging to the service config (http,
+ visibility) which is not set in the redeclared method will be
+ inherited.
+
+ - If an http annotation is inherited, the path pattern will be
+ modified as follows. Any version prefix will be replaced by the
+ version of the including interface plus the [root][] path if
+ specified.
+
+ Example of a simple mixin:
+
+ package google.acl.v1;
+ service AccessControl {
+ // Get the underlying ACL object.
+ rpc GetAcl(GetAclRequest) returns (Acl) {
+ option (google.api.http).get = "/v1/{resource=**}:getAcl";
+ }
+ }
+
+ package google.storage.v2;
+ service Storage {
+ rpc GetAcl(GetAclRequest) returns (Acl);
+
+ // Get a data record.
+ rpc GetData(GetDataRequest) returns (Data) {
+ option (google.api.http).get = "/v2/{resource=**}";
+ }
+ }
+
+ Example of a mixin configuration:
+
+ apis:
+ - name: google.storage.v2.Storage
+ mixins:
+ - name: google.acl.v1.AccessControl
+
+ The mixin construct implies that all methods in `AccessControl` are
+ also declared with same name and request/response types in
+ `Storage`. A documentation generator or annotation processor will
+ see the effective `Storage.GetAcl` method after inherting
+ documentation and annotations as follows:
+
+ service Storage {
+ // Get the underlying ACL object.
+ rpc GetAcl(GetAclRequest) returns (Acl) {
+ option (google.api.http).get = "/v2/{resource=**}:getAcl";
+ }
+ ...
+ }
+
+ Note how the version in the path pattern changed from `v1` to `v2`.
+
+ If the `root` field in the mixin is specified, it should be a
+ relative path under which inherited HTTP paths are placed. Example:
+
+ apis:
+ - name: google.storage.v2.Storage
+ mixins:
+ - name: google.acl.v1.AccessControl
+ root: acls
+
+ This implies the following inherited HTTP annotation:
+
+ service Storage {
+ // Get the underlying ACL object.
+ rpc GetAcl(GetAclRequest) returns (Acl) {
+ option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
+ }
+ ...
+ }
+
+
+
+ Field number for the "name" field.
+
+
+
+ The fully qualified name of the interface which is included.
+
+
+
+ Field number for the "root" field.
+
+
+
+ If non-empty specifies a path under which inherited HTTP paths
+ are rooted.
+
+
+
+ Holder for reflection information generated from google/protobuf/duration.proto
+
+
+ File descriptor for google/protobuf/duration.proto
+
+
+
+ A Duration represents a signed, fixed-length span of time represented
+ as a count of seconds and fractions of seconds at nanosecond
+ resolution. It is independent of any calendar and concepts like "day"
+ or "month". It is related to Timestamp in that the difference between
+ two Timestamp values is a Duration and it can be added or subtracted
+ from a Timestamp. Range is approximately +-10,000 years.
+
+ # Examples
+
+ Example 1: Compute Duration from two Timestamps in pseudo code.
+
+ Timestamp start = ...;
+ Timestamp end = ...;
+ Duration duration = ...;
+
+ duration.seconds = end.seconds - start.seconds;
+ duration.nanos = end.nanos - start.nanos;
+
+ if (duration.seconds < 0 && duration.nanos > 0) {
+ duration.seconds += 1;
+ duration.nanos -= 1000000000;
+ } else if (duration.seconds > 0 && duration.nanos < 0) {
+ duration.seconds -= 1;
+ duration.nanos += 1000000000;
+ }
+
+ Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
+
+ Timestamp start = ...;
+ Duration duration = ...;
+ Timestamp end = ...;
+
+ end.seconds = start.seconds + duration.seconds;
+ end.nanos = start.nanos + duration.nanos;
+
+ if (end.nanos < 0) {
+ end.seconds -= 1;
+ end.nanos += 1000000000;
+ } else if (end.nanos >= 1000000000) {
+ end.seconds += 1;
+ end.nanos -= 1000000000;
+ }
+
+ Example 3: Compute Duration from datetime.timedelta in Python.
+
+ td = datetime.timedelta(days=3, minutes=10)
+ duration = Duration()
+ duration.FromTimedelta(td)
+
+ # JSON Mapping
+
+ In JSON format, the Duration type is encoded as a string rather than an
+ object, where the string ends in the suffix "s" (indicating seconds) and
+ is preceded by the number of seconds, with nanoseconds expressed as
+ fractional seconds. For example, 3 seconds with 0 nanoseconds should be
+ encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
+ be expressed in JSON format as "3.000000001s", and 3 seconds and 1
+ microsecond should be expressed in JSON format as "3.000001s".
+
+
+
+ Field number for the "seconds" field.
+
+
+
+ Signed seconds of the span of time. Must be from -315,576,000,000
+ to +315,576,000,000 inclusive. Note: these bounds are computed from:
+ 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+
+
+
+ Field number for the "nanos" field.
+
+
+
+ Signed fractions of a second at nanosecond resolution of the span
+ of time. Durations less than one second are represented with a 0
+ `seconds` field and a positive or negative `nanos` field. For durations
+ of one second or more, a non-zero value for the `nanos` field must be
+ of the same sign as the `seconds` field. Must be from -999,999,999
+ to +999,999,999 inclusive.
+
+
+
+
+ The number of nanoseconds in a second.
+
+
+
+
+ The number of nanoseconds in a BCL tick (as used by and ).
+
+
+
+
+ The maximum permitted number of seconds.
+
+
+
+
+ The minimum permitted number of seconds.
+
+
+
+
+ Converts this to a .
+
+ If the duration is not a precise number of ticks, it is truncated towards 0.
+ The value of this duration, as a TimeSpan.
+ This value isn't a valid normalized duration, as
+ described in the documentation.
+
+
+
+ Converts the given to a .
+
+ The TimeSpan to convert.
+ The value of the given TimeSpan, as a Duration.
+
+
+
+ Returns the result of negating the duration. For example, the negation of 5 minutes is -5 minutes.
+
+ The duration to negate. Must not be null.
+ The negated value of this duration.
+
+
+
+ Adds the two specified values together.
+
+ The first value to add. Must not be null.
+ The second value to add. Must not be null.
+
+
+
+
+ Subtracts one from another.
+
+ The duration to subtract from. Must not be null.
+ The duration to subtract. Must not be null.
+ The difference between the two specified durations.
+
+
+
+ Creates a duration with the normalized values from the given number of seconds and
+ nanoseconds, conforming with the description in the proto file.
+
+
+
+
+ Converts a duration specified in seconds/nanoseconds to a string.
+
+
+ If the value is a normalized duration in the range described in duration.proto,
+ is ignored. Otherwise, if the parameter is true,
+ a JSON object with a warning is returned; if it is false, an is thrown.
+
+ Seconds portion of the duration.
+ Nanoseconds portion of the duration.
+ Determines the handling of non-normalized values
+ The represented duration is invalid, and is false.
+
+
+
+ Returns a string representation of this for diagnostic purposes.
+
+
+ Normally the returned value will be a JSON string value (including leading and trailing quotes) but
+ when the value is non-normalized or out of range, a JSON object representation will be returned
+ instead, including a warning. This is to avoid exceptions being thrown when trying to
+ diagnose problems - the regular JSON formatter will still throw an exception for non-normalized
+ values.
+
+ A string representation of this value.
+
+
+
+ Appends a number of nanoseconds to a StringBuilder. Either 0 digits are added (in which
+ case no "." is appended), or 3 6 or 9 digits. This is internal for use in Timestamp as well
+ as Duration.
+
+
+
+ Holder for reflection information generated from google/protobuf/empty.proto
+
+
+ File descriptor for google/protobuf/empty.proto
+
+
+
+ A generic empty message that you can re-use to avoid defining duplicated
+ empty messages in your APIs. A typical example is to use it as the request
+ or the response type of an API method. For instance:
+
+ service Foo {
+ rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+ }
+
+ The JSON representation for `Empty` is empty JSON object `{}`.
+
+
+
+ Holder for reflection information generated from google/protobuf/field_mask.proto
+
+
+ File descriptor for google/protobuf/field_mask.proto
+
+
+
+ `FieldMask` represents a set of symbolic field paths, for example:
+
+ paths: "f.a"
+ paths: "f.b.d"
+
+ Here `f` represents a field in some root message, `a` and `b`
+ fields in the message found in `f`, and `d` a field found in the
+ message in `f.b`.
+
+ Field masks are used to specify a subset of fields that should be
+ returned by a get operation or modified by an update operation.
+ Field masks also have a custom JSON encoding (see below).
+
+ # Field Masks in Projections
+
+ When used in the context of a projection, a response message or
+ sub-message is filtered by the API to only contain those fields as
+ specified in the mask. For example, if the mask in the previous
+ example is applied to a response message as follows:
+
+ f {
+ a : 22
+ b {
+ d : 1
+ x : 2
+ }
+ y : 13
+ }
+ z: 8
+
+ The result will not contain specific values for fields x,y and z
+ (their value will be set to the default, and omitted in proto text
+ output):
+
+ f {
+ a : 22
+ b {
+ d : 1
+ }
+ }
+
+ A repeated field is not allowed except at the last position of a
+ paths string.
+
+ If a FieldMask object is not present in a get operation, the
+ operation applies to all fields (as if a FieldMask of all fields
+ had been specified).
+
+ Note that a field mask does not necessarily apply to the
+ top-level response message. In case of a REST get operation, the
+ field mask applies directly to the response, but in case of a REST
+ list operation, the mask instead applies to each individual message
+ in the returned resource list. In case of a REST custom method,
+ other definitions may be used. Where the mask applies will be
+ clearly documented together with its declaration in the API. In
+ any case, the effect on the returned resource/resources is required
+ behavior for APIs.
+
+ # Field Masks in Update Operations
+
+ A field mask in update operations specifies which fields of the
+ targeted resource are going to be updated. The API is required
+ to only change the values of the fields as specified in the mask
+ and leave the others untouched. If a resource is passed in to
+ describe the updated values, the API ignores the values of all
+ fields not covered by the mask.
+
+ If a repeated field is specified for an update operation, new values will
+ be appended to the existing repeated field in the target resource. Note that
+ a repeated field is only allowed in the last position of a `paths` string.
+
+ If a sub-message is specified in the last position of the field mask for an
+ update operation, then new value will be merged into the existing sub-message
+ in the target resource.
+
+ For example, given the target message:
+
+ f {
+ b {
+ d: 1
+ x: 2
+ }
+ c: [1]
+ }
+
+ And an update message:
+
+ f {
+ b {
+ d: 10
+ }
+ c: [2]
+ }
+
+ then if the field mask is:
+
+ paths: ["f.b", "f.c"]
+
+ then the result will be:
+
+ f {
+ b {
+ d: 10
+ x: 2
+ }
+ c: [1, 2]
+ }
+
+ An implementation may provide options to override this default behavior for
+ repeated and message fields.
+
+ In order to reset a field's value to the default, the field must
+ be in the mask and set to the default value in the provided resource.
+ Hence, in order to reset all fields of a resource, provide a default
+ instance of the resource and set all fields in the mask, or do
+ not provide a mask as described below.
+
+ If a field mask is not present on update, the operation applies to
+ all fields (as if a field mask of all fields has been specified).
+ Note that in the presence of schema evolution, this may mean that
+ fields the client does not know and has therefore not filled into
+ the request will be reset to their default. If this is unwanted
+ behavior, a specific service may require a client to always specify
+ a field mask, producing an error if not.
+
+ As with get operations, the location of the resource which
+ describes the updated values in the request message depends on the
+ operation kind. In any case, the effect of the field mask is
+ required to be honored by the API.
+
+ ## Considerations for HTTP REST
+
+ The HTTP kind of an update operation which uses a field mask must
+ be set to PATCH instead of PUT in order to satisfy HTTP semantics
+ (PUT must only be used for full updates).
+
+ # JSON Encoding of Field Masks
+
+ In JSON, a field mask is encoded as a single string where paths are
+ separated by a comma. Fields name in each path are converted
+ to/from lower-camel naming conventions.
+
+ As an example, consider the following message declarations:
+
+ message Profile {
+ User user = 1;
+ Photo photo = 2;
+ }
+ message User {
+ string display_name = 1;
+ string address = 2;
+ }
+
+ In proto a field mask for `Profile` may look as such:
+
+ mask {
+ paths: "user.display_name"
+ paths: "photo"
+ }
+
+ In JSON, the same mask is represented as below:
+
+ {
+ mask: "user.displayName,photo"
+ }
+
+ # Field Masks and Oneof Fields
+
+ Field masks treat fields in oneofs just as regular fields. Consider the
+ following message:
+
+ message SampleMessage {
+ oneof test_oneof {
+ string name = 4;
+ SubMessage sub_message = 9;
+ }
+ }
+
+ The field mask can be:
+
+ mask {
+ paths: "name"
+ }
+
+ Or:
+
+ mask {
+ paths: "sub_message"
+ }
+
+ Note that oneof type names ("test_oneof" in this case) cannot be used in
+ paths.
+
+ ## Field Mask Verification
+
+ The implementation of any API method which has a FieldMask type field in the
+ request should verify the included field paths, and return an
+ `INVALID_ARGUMENT` error if any path is unmappable.
+
+
+
+ Field number for the "paths" field.
+
+
+
+ The set of field mask paths.
+
+
+
+
+ Converts a field mask specified by paths to a string.
+
+
+ If the value is a normalized duration in the range described in field_mask.proto,
+ is ignored. Otherwise, if the parameter is true,
+ a JSON object with a warning is returned; if it is false, an is thrown.
+
+ Paths in the field mask
+ Determines the handling of non-normalized values
+ The represented field mask is invalid, and is false.
+
+
+
+ Returns a string representation of this for diagnostic purposes.
+
+
+ Normally the returned value will be a JSON string value (including leading and trailing quotes) but
+ when the value is non-normalized or out of range, a JSON object representation will be returned
+ instead, including a warning. This is to avoid exceptions being thrown when trying to
+ diagnose problems - the regular JSON formatter will still throw an exception for non-normalized
+ values.
+
+ A string representation of this value.
+
+
+
+ Parses from a string to a FieldMask.
+
+
+
+
+ Parses from a string to a FieldMask and validates all field paths.
+
+ The type to validate the field paths against.
+
+
+
+ Constructs a FieldMask for a list of field paths in a certain type.
+
+ The type to validate the field paths against.
+
+
+
+ Constructs a FieldMask from the passed field numbers.
+
+ The type to validate the field paths against.
+
+
+
+ Constructs a FieldMask from the passed field numbers.
+
+ The type to validate the field paths against.
+
+
+
+ Checks whether the given path is valid for a field mask.
+
+ true if the path is valid; false otherwise
+
+
+
+ Checks whether paths in a given fields mask are valid.
+
+ The type to validate the field paths against.
+
+
+
+ Checks whether paths in a given fields mask are valid.
+
+
+
+
+ Checks whether a given field path is valid.
+
+ The type to validate the field paths against.
+
+
+
+ Checks whether paths in a given fields mask are valid.
+
+
+
+
+ Converts this FieldMask to its canonical form. In the canonical form of a
+ FieldMask, all field paths are sorted alphabetically and redundant field
+ paths are removed.
+
+
+
+
+ Creates a union of two or more FieldMasks.
+
+
+
+
+ Calculates the intersection of two FieldMasks.
+
+
+
+
+ Merges fields specified by this FieldMask from one message to another with the
+ specified merge options.
+
+
+
+
+ Merges fields specified by this FieldMask from one message to another.
+
+
+
+
+ Options to customize merging behavior.
+
+
+
+
+ Whether to replace message fields(i.e., discard existing content in
+ destination message fields) when merging.
+ Default behavior is to merge the source message field into the
+ destination message field.
+
+
+
+
+ Whether to replace repeated fields (i.e., discard existing content in
+ destination repeated fields) when merging.
+ Default behavior is to append elements from source repeated field to the
+ destination repeated field.
+
+
+
+
+ Whether to replace primitive (non-repeated and non-message) fields in
+ destination message fields with the source primitive fields (i.e., if the
+ field is set in the source, the value is copied to the
+ destination; if the field is unset in the source, the field is cleared
+ from the destination) when merging.
+
+ Default behavior is to always set the value of the source primitive
+ field to the destination primitive field, and if the source field is
+ unset, the default value of the source field is copied to the
+ destination.
+
+
+
+ Holder for reflection information generated from google/protobuf/source_context.proto
+
+
+ File descriptor for google/protobuf/source_context.proto
+
+
+
+ `SourceContext` represents information about the source of a
+ protobuf element, like the file in which it is defined.
+
+
+
+ Field number for the "file_name" field.
+
+
+
+ The path-qualified name of the .proto file that contained the associated
+ protobuf element. For example: `"google/protobuf/source_context.proto"`.
+
+
+
+ Holder for reflection information generated from google/protobuf/struct.proto
+
+
+ File descriptor for google/protobuf/struct.proto
+
+
+
+ `NullValue` is a singleton enumeration to represent the null value for the
+ `Value` type union.
+
+ The JSON representation for `NullValue` is JSON `null`.
+
+
+
+
+ Null value.
+
+
+
+
+ `Struct` represents a structured data value, consisting of fields
+ which map to dynamically typed values. In some languages, `Struct`
+ might be supported by a native representation. For example, in
+ scripting languages like JS a struct is represented as an
+ object. The details of that representation are described together
+ with the proto support for the language.
+
+ The JSON representation for `Struct` is JSON object.
+
+
+
+ Field number for the "fields" field.
+
+
+
+ Unordered map of dynamically typed values.
+
+
+
+
+ `Value` represents a dynamically typed value which can be either
+ null, a number, a string, a boolean, a recursive struct value, or a
+ list of values. A producer of value is expected to set one of that
+ variants, absence of any variant indicates an error.
+
+ The JSON representation for `Value` is JSON value.
+
+
+
+ Field number for the "null_value" field.
+
+
+
+ Represents a null value.
+
+
+
+ Field number for the "number_value" field.
+
+
+
+ Represents a double value.
+
+
+
+ Field number for the "string_value" field.
+
+
+
+ Represents a string value.
+
+
+
+ Field number for the "bool_value" field.
+
+
+
+ Represents a boolean value.
+
+
+
+ Field number for the "struct_value" field.
+
+
+
+ Represents a structured value.
+
+
+
+ Field number for the "list_value" field.
+
+
+
+ Represents a repeated `Value`.
+
+
+
+ Enum of possible cases for the "kind" oneof.
+
+
+
+ Convenience method to create a Value message with a string value.
+
+ Value to set for the StringValue property.
+ A newly-created Value message with the given value.
+
+
+
+ Convenience method to create a Value message with a number value.
+
+ Value to set for the NumberValue property.
+ A newly-created Value message with the given value.
+
+
+
+ Convenience method to create a Value message with a Boolean value.
+
+ Value to set for the BoolValue property.
+ A newly-created Value message with the given value.
+
+
+
+ Convenience method to create a Value message with a null initial value.
+
+ A newly-created Value message a null initial value.
+
+
+
+ Convenience method to create a Value message with an initial list of values.
+
+ The values provided are not cloned; the references are copied directly.
+ A newly-created Value message an initial list value.
+
+
+
+ Convenience method to create a Value message with an initial struct value
+
+ The value provided is not cloned; the reference is copied directly.
+ A newly-created Value message an initial struct value.
+
+
+
+ `ListValue` is a wrapper around a repeated field of values.
+
+ The JSON representation for `ListValue` is JSON array.
+
+
+
+ Field number for the "values" field.
+
+
+
+ Repeated field of dynamically typed values.
+
+
+
+
+ Extension methods on BCL time-related types, converting to protobuf types.
+
+
+
+
+ Converts the given to a .
+
+ The date and time to convert to a timestamp.
+ The value has a other than Utc.
+ The converted timestamp.
+
+
+
+ Converts the given to a
+
+ The offset is taken into consideration when converting the value (so the same instant in time
+ is represented) but is not a separate part of the resulting value. In other words, there is no
+ roundtrip operation to retrieve the original DateTimeOffset.
+ The date and time (with UTC offset) to convert to a timestamp.
+ The converted timestamp.
+
+
+
+ Converts the given to a .
+
+ The time span to convert.
+ The converted duration.
+
+
+ Holder for reflection information generated from google/protobuf/timestamp.proto
+
+
+ File descriptor for google/protobuf/timestamp.proto
+
+
+
+ A Timestamp represents a point in time independent of any time zone or local
+ calendar, encoded as a count of seconds and fractions of seconds at
+ nanosecond resolution. The count is relative to an epoch at UTC midnight on
+ January 1, 1970, in the proleptic Gregorian calendar which extends the
+ Gregorian calendar backwards to year one.
+
+ All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+ second table is needed for interpretation, using a [24-hour linear
+ smear](https://developers.google.com/time/smear).
+
+ The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
+ restricting to that range, we ensure that we can convert to and from [RFC
+ 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
+
+ # Examples
+
+ Example 1: Compute Timestamp from POSIX `time()`.
+
+ Timestamp timestamp;
+ timestamp.set_seconds(time(NULL));
+ timestamp.set_nanos(0);
+
+ Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+
+ Timestamp timestamp;
+ timestamp.set_seconds(tv.tv_sec);
+ timestamp.set_nanos(tv.tv_usec * 1000);
+
+ Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+
+ FILETIME ft;
+ GetSystemTimeAsFileTime(&ft);
+ UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+
+ // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+ // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+ Timestamp timestamp;
+ timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+ timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+
+ Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+
+ long millis = System.currentTimeMillis();
+
+ Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+ .setNanos((int) ((millis % 1000) * 1000000)).build();
+
+ Example 5: Compute Timestamp from current time in Python.
+
+ timestamp = Timestamp()
+ timestamp.GetCurrentTime()
+
+ # JSON Mapping
+
+ In JSON format, the Timestamp type is encoded as a string in the
+ [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
+ format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
+ where {year} is always expressed using four digits while {month}, {day},
+ {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
+ seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
+ are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
+ is required. A proto3 JSON serializer should always use UTC (as indicated by
+ "Z") when printing the Timestamp type and a proto3 JSON parser should be
+ able to accept both UTC and other timezones (as indicated by an offset).
+
+ For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
+ 01:30 UTC on January 15, 2017.
+
+ In JavaScript, one can convert a Date object to this format using the
+ standard
+ [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
+ method. In Python, a standard `datetime.datetime` object can be converted
+ to this format using
+ [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
+ the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
+ the Joda Time's [`ISODateTimeFormat.dateTime()`](
+ http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D
+ ) to obtain a formatter capable of generating timestamps in this format.
+
+
+
+ Field number for the "seconds" field.
+
+
+
+ Represents seconds of UTC time since Unix epoch
+ 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
+ 9999-12-31T23:59:59Z inclusive.
+
+
+
+ Field number for the "nanos" field.
+
+
+
+ Non-negative fractions of a second at nanosecond resolution. Negative
+ second values with fractions must still have non-negative nanos values
+ that count forward in time. Must be from 0 to 999,999,999
+ inclusive.
+
+
+
+
+ Returns the difference between one and another, as a .
+
+ The timestamp to subtract from. Must not be null.
+ The timestamp to subtract. Must not be null.
+ The difference between the two specified timestamps.
+
+
+
+ Adds a to a , to obtain another Timestamp.
+
+ The timestamp to add the duration to. Must not be null.
+ The duration to add. Must not be null.
+ The result of adding the duration to the timestamp.
+
+
+
+ Subtracts a from a , to obtain another Timestamp.
+
+ The timestamp to subtract the duration from. Must not be null.
+ The duration to subtract.
+ The result of subtracting the duration from the timestamp.
+
+
+
+ Converts this timestamp into a .
+
+
+ The resulting DateTime will always have a Kind of Utc.
+ If the timestamp is not a precise number of ticks, it will be truncated towards the start
+ of time. For example, a timestamp with a value of 99 will result in a
+ value precisely on a second.
+
+ This timestamp as a DateTime.
+ The timestamp contains invalid values; either it is
+ incorrectly normalized or is outside the valid range.
+
+
+
+ Converts this timestamp into a .
+
+
+ The resulting DateTimeOffset will always have an Offset of zero.
+ If the timestamp is not a precise number of ticks, it will be truncated towards the start
+ of time. For example, a timestamp with a value of 99 will result in a
+ value precisely on a second.
+
+ This timestamp as a DateTimeOffset.
+ The timestamp contains invalid values; either it is
+ incorrectly normalized or is outside the valid range.
+
+
+
+ Converts the specified to a .
+
+
+ The Kind of is not DateTimeKind.Utc.
+ The converted timestamp.
+
+
+
+ Converts the given to a
+
+ The offset is taken into consideration when converting the value (so the same instant in time
+ is represented) but is not a separate part of the resulting value. In other words, there is no
+ roundtrip operation to retrieve the original DateTimeOffset.
+ The date and time (with UTC offset) to convert to a timestamp.
+ The converted timestamp.
+
+
+
+ Converts a timestamp specified in seconds/nanoseconds to a string.
+
+
+ If the value is a normalized duration in the range described in timestamp.proto,
+ is ignored. Otherwise, if the parameter is true,
+ a JSON object with a warning is returned; if it is false, an is thrown.
+
+ Seconds portion of the duration.
+ Nanoseconds portion of the duration.
+ Determines the handling of non-normalized values
+ The represented duration is invalid, and is false.
+
+
+
+ Given another timestamp, returns 0 if the timestamps are equivalent, -1 if this timestamp precedes the other, and 1 otherwise
+
+
+ Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results.
+
+ Timestamp to compare
+ an integer indicating whether this timestamp precedes or follows the other
+
+
+
+ Compares two timestamps and returns whether the first is less than (chronologically precedes) the second
+
+
+ Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results.
+
+
+
+ true if a precedes b
+
+
+
+ Compares two timestamps and returns whether the first is greater than (chronologically follows) the second
+
+
+ Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results.
+
+
+
+ true if a follows b
+
+
+
+ Compares two timestamps and returns whether the first is less than (chronologically precedes) the second
+
+
+ Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results.
+
+
+
+ true if a precedes b
+
+
+
+ Compares two timestamps and returns whether the first is greater than (chronologically follows) the second
+
+
+ Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results.
+
+
+
+ true if a follows b
+
+
+
+ Returns whether two timestamps are equivalent
+
+
+ Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results.
+
+
+
+ true if the two timestamps refer to the same nanosecond
+
+
+
+ Returns whether two timestamps differ
+
+
+ Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results.
+
+
+
+ true if the two timestamps differ
+
+
+
+ Returns a string representation of this for diagnostic purposes.
+
+
+ Normally the returned value will be a JSON string value (including leading and trailing quotes) but
+ when the value is non-normalized or out of range, a JSON object representation will be returned
+ instead, including a warning. This is to avoid exceptions being thrown when trying to
+ diagnose problems - the regular JSON formatter will still throw an exception for non-normalized
+ values.
+
+ A string representation of this value.
+
+
+ Holder for reflection information generated from google/protobuf/type.proto
+
+
+ File descriptor for google/protobuf/type.proto
+
+
+
+ The syntax in which a protocol buffer element is defined.
+
+
+
+
+ Syntax `proto2`.
+
+
+
+
+ Syntax `proto3`.
+
+
+
+
+ A protocol buffer message type.
+
+
+
+ Field number for the "name" field.
+
+
+
+ The fully qualified message name.
+
+
+
+ Field number for the "fields" field.
+
+
+
+ The list of fields.
+
+
+
+ Field number for the "oneofs" field.
+
+
+
+ The list of types appearing in `oneof` definitions in this type.
+
+
+
+ Field number for the "options" field.
+
+
+
+ The protocol buffer options.
+
+
+
+ Field number for the "source_context" field.
+
+
+
+ The source context.
+
+
+
+ Field number for the "syntax" field.
+
+
+
+ The source syntax.
+
+
+
+
+ A single field of a message type.
+
+
+
+ Field number for the "kind" field.
+
+
+
+ The field type.
+
+
+
+ Field number for the "cardinality" field.
+
+
+
+ The field cardinality.
+
+
+
+ Field number for the "number" field.
+
+
+
+ The field number.
+
+
+
+ Field number for the "name" field.
+
+
+
+ The field name.
+
+
+
+ Field number for the "type_url" field.
+
+
+
+ The field type URL, without the scheme, for message or enumeration
+ types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
+
+
+
+ Field number for the "oneof_index" field.
+
+
+
+ The index of the field type in `Type.oneofs`, for message or enumeration
+ types. The first type has index 1; zero means the type is not in the list.
+
+
+
+ Field number for the "packed" field.
+
+
+
+ Whether to use alternative packed wire representation.
+
+
+
+ Field number for the "options" field.
+
+
+
+ The protocol buffer options.
+
+
+
+ Field number for the "json_name" field.
+
+
+
+ The field JSON name.
+
+
+
+ Field number for the "default_value" field.
+
+
+
+ The string value of the default value of this field. Proto2 syntax only.
+
+
+
+ Container for nested types declared in the Field message type.
+
+
+
+ Basic field types.
+
+
+
+
+ Field type unknown.
+
+
+
+
+ Field type double.
+
+
+
+
+ Field type float.
+
+
+
+
+ Field type int64.
+
+
+
+
+ Field type uint64.
+
+
+
+
+ Field type int32.
+
+
+
+
+ Field type fixed64.
+
+
+
+
+ Field type fixed32.
+
+
+
+
+ Field type bool.
+
+
+
+
+ Field type string.
+
+
+
+
+ Field type group. Proto2 syntax only, and deprecated.
+
+
+
+
+ Field type message.
+
+
+
+
+ Field type bytes.
+
+
+
+
+ Field type uint32.
+
+
+
+
+ Field type enum.
+
+
+
+
+ Field type sfixed32.
+
+
+
+
+ Field type sfixed64.
+
+
+
+
+ Field type sint32.
+
+
+
+
+ Field type sint64.
+
+
+
+
+ Whether a field is optional, required, or repeated.
+
+
+
+
+ For fields with unknown cardinality.
+
+
+
+
+ For optional fields.
+
+
+
+
+ For required fields. Proto2 syntax only.
+
+
+
+
+ For repeated fields.
+
+
+
+
+ Enum type definition.
+
+
+
+ Field number for the "name" field.
+
+
+
+ Enum type name.
+
+
+
+ Field number for the "enumvalue" field.
+
+
+
+ Enum value definitions.
+
+
+
+ Field number for the "options" field.
+
+
+
+ Protocol buffer options.
+
+
+
+ Field number for the "source_context" field.
+
+
+
+ The source context.
+
+
+
+ Field number for the "syntax" field.
+
+
+
+ The source syntax.
+
+
+
+
+ Enum value definition.
+
+
+
+ Field number for the "name" field.
+
+
+
+ Enum value name.
+
+
+
+ Field number for the "number" field.
+
+
+
+ Enum value number.
+
+
+
+ Field number for the "options" field.
+
+
+
+ Protocol buffer options.
+
+
+
+
+ A protocol buffer option, which can be attached to a message, field,
+ enumeration, etc.
+
+
+
+ Field number for the "name" field.
+
+
+
+ The option's name. For protobuf built-in options (options defined in
+ descriptor.proto), this is the short name. For example, `"map_entry"`.
+ For custom options, it should be the fully-qualified name. For example,
+ `"google.api.http"`.
+
+
+
+ Field number for the "value" field.
+
+
+
+ The option's value packed in an Any message. If the value is a primitive,
+ the corresponding wrapper type defined in google/protobuf/wrappers.proto
+ should be used. If the value is an enum, it should be stored as an int32
+ value using the google.protobuf.Int32Value type.
+
+
+
+ Holder for reflection information generated from google/protobuf/wrappers.proto
+
+
+ File descriptor for google/protobuf/wrappers.proto
+
+
+
+ Field number for the single "value" field in all wrapper types.
+
+
+
+
+ Wrapper message for `double`.
+
+ The JSON representation for `DoubleValue` is JSON number.
+
+
+
+ Field number for the "value" field.
+
+
+
+ The double value.
+
+
+
+
+ Wrapper message for `float`.
+
+ The JSON representation for `FloatValue` is JSON number.
+
+
+
+ Field number for the "value" field.
+
+
+
+ The float value.
+
+
+
+
+ Wrapper message for `int64`.
+
+ The JSON representation for `Int64Value` is JSON string.
+
+
+
+ Field number for the "value" field.
+
+
+
+ The int64 value.
+
+
+
+
+ Wrapper message for `uint64`.
+
+ The JSON representation for `UInt64Value` is JSON string.
+
+
+
+ Field number for the "value" field.
+
+
+
+ The uint64 value.
+
+
+
+
+ Wrapper message for `int32`.
+
+ The JSON representation for `Int32Value` is JSON number.
+
+
+
+ Field number for the "value" field.
+
+
+
+ The int32 value.
+
+
+
+
+ Wrapper message for `uint32`.
+
+ The JSON representation for `UInt32Value` is JSON number.
+
+
+
+ Field number for the "value" field.
+
+
+
+ The uint32 value.
+
+
+
+
+ Wrapper message for `bool`.
+
+ The JSON representation for `BoolValue` is JSON `true` and `false`.
+
+
+
+ Field number for the "value" field.
+
+
+
+ The bool value.
+
+
+
+
+ Wrapper message for `string`.
+
+ The JSON representation for `StringValue` is JSON string.
+
+
+
+ Field number for the "value" field.
+
+
+
+ The string value.
+
+
+
+
+ Wrapper message for `bytes`.
+
+ The JSON representation for `BytesValue` is JSON string.
+
+
+
+ Field number for the "value" field.
+
+
+
+ The bytes value.
+
+
+
+
+ This class is used internally by the Protocol Buffer Library and generated
+ message implementations. It is public only for the sake of those generated
+ messages. Others should not use this class directly.
+
+ This class contains constants and helper functions useful for dealing with
+ the Protocol Buffer wire format.
+
+
+
+
+
+ Wire types within protobuf encoding.
+
+
+
+
+ Variable-length integer.
+
+
+
+
+ A fixed-length 64-bit value.
+
+
+
+
+ A length-delimited value, i.e. a length followed by that many bytes of data.
+
+
+
+
+ A "start group" value
+
+
+
+
+ An "end group" value
+
+
+
+
+ A fixed-length 32-bit value.
+
+
+
+
+ Given a tag value, determines the wire type (lower 3 bits).
+
+
+
+
+ Given a tag value, determines the field number (the upper 29 bits).
+
+
+
+
+ Makes a tag value given a field number and wire type.
+
+
+
+
diff --git a/app/bin/Release/Guna.UI2.dll b/app/bin/Release/Guna.UI2.dll
new file mode 100644
index 0000000..2f2e1ea
Binary files /dev/null and b/app/bin/Release/Guna.UI2.dll differ
diff --git a/app/bin/Release/K4os.Compression.LZ4.Streams.dll b/app/bin/Release/K4os.Compression.LZ4.Streams.dll
new file mode 100644
index 0000000..4c68abb
Binary files /dev/null and b/app/bin/Release/K4os.Compression.LZ4.Streams.dll differ
diff --git a/app/bin/Release/K4os.Compression.LZ4.Streams.xml b/app/bin/Release/K4os.Compression.LZ4.Streams.xml
new file mode 100644
index 0000000..4e02583
--- /dev/null
+++ b/app/bin/Release/K4os.Compression.LZ4.Streams.xml
@@ -0,0 +1,296 @@
+
+
+
+ K4os.Compression.LZ4.Streams
+
+
+
+
+ LZ4 Frame descriptor.
+
+
+
+ Content length. Not always known.
+
+
+ Indicates if content checksum is provided.
+
+
+ Indicates if blocks are chained (dependent) or not (independent).
+
+
+ Indicates if block checksums are provided.
+
+
+ Dictionary id. May be null.
+
+
+ Block size.
+
+
+
+ Decoder settings.
+
+
+
+ Extra memory for decompression.
+
+
+
+ LZ4 Decompression stream handling.
+
+
+
+ Creates new instance .
+ Inner stream.
+ A function which will create appropriate decoder depending
+ on frame descriptor.
+ If true inner stream will not be closed after disposing.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Length of stream. Please note, this will only work if original LZ4 stream has
+ ContentLength field set in descriptor. Otherwise returned value will be -1.
+
+
+
+
+ Position within the stream. Position can be read, but cannot be set as LZ4 stream does
+ not have Seek capability.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LZ4 encoder settings.
+
+
+
+
+ Content length. It is not enforced, it can be set to any value, but it will be
+ written to the stream so it can be used while decoding. If you don't know the length
+ just leave default value.
+
+
+
+
+ Indicates if blocks should be chained (dependent) or not (independent). Dependent blocks
+ (with chaining) provide better compression ratio but are a little but slower and take
+ more memory.
+
+
+
+
+ Block size. You can use any block size, but default values for LZ4 are 64k, 256k, 1m,
+ and 4m. 64k is good enough for dependent blocks, but for independent blocks bigger is
+ better.
+
+
+
+ Indicates is content checksum is provided. Not implemented yet.
+
+
+ Indicates if block checksum is provided. Not implemented yet.
+
+
+ Dictionary id. Not implemented yet.
+
+
+ Compression level.
+
+
+ Extra memory (for the process, more is usually better).
+
+
+
+ LZ4 compression stream.
+
+
+
+ Creates new instance of .
+ Inner stream.
+ LZ4 Descriptor.
+ Function which will take descriptor and return
+ appropriate encoder.
+ Indicates if stream should be left
+ open after disposing.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Length of the stream and number of bytes written so far.
+
+
+ Read-only position in the stream. Trying to set it will throw
+ .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LZ4 frame descriptor.
+
+
+
+ Content length (if available).
+
+
+ Indicates if content checksum if present.
+
+
+ Indicates if blocks are chained.
+
+
+ Indicates if block checksums are present.
+
+
+ Dictionary id (or null).
+
+
+ Block size.
+
+
+ Creates new instance of .
+ Content length.
+ Content checksum flag.
+ Chaining flag.
+ Block checksum flag.
+ Dictionary id.
+ Block size.
+
+
+
+ Utility class with factory methods to create LZ4 compression and decompression streams.
+
+
+
+ Created compression stream on top of inner stream.
+ Inner stream.
+ Compression settings.
+ Leave inner stream open after disposing.
+ Compression stream.
+
+
+ Created compression stream on top of inner stream.
+ Inner stream.
+ Compression level.
+ Extra memory used for compression.
+ Leave inner stream open after disposing.
+ Compression stream.
+
+
+ Creates decompression stream on top of inner stream.
+ Inner stream.
+ Decompression settings.
+ Leave inner stream open after disposing.
+ Decompression stream.
+
+
+ Creates decompression stream on top of inner stream.
+ Inner stream.
+ Extra memory used for decompression.
+ Leave inner stream open after disposing.
+ Decompression stream.
+
+
+
diff --git a/app/bin/Release/K4os.Compression.LZ4.dll b/app/bin/Release/K4os.Compression.LZ4.dll
new file mode 100644
index 0000000..ea7a325
Binary files /dev/null and b/app/bin/Release/K4os.Compression.LZ4.dll differ
diff --git a/app/bin/Release/K4os.Compression.LZ4.xml b/app/bin/Release/K4os.Compression.LZ4.xml
new file mode 100644
index 0000000..9af6341
--- /dev/null
+++ b/app/bin/Release/K4os.Compression.LZ4.xml
@@ -0,0 +1,794 @@
+
+
+
+ K4os.Compression.LZ4
+
+
+
+
+ Action performed by encoder using FlushAndEncode method.
+
+
+
+ Nothing has happened, most likely loading 0 bytes.
+
+
+ Some bytes has been loaded into encoder.
+
+
+ Compression was not possible so bytes has been copied.
+
+
+ Compression succeeded.
+
+
+
+ Interface of LZ4 decoder used by LZ4 streams.
+
+
+
+ Block size.
+
+
+ Bytes already decoded and available to be read.
+ Always smaller than
+
+
+
+ Decodes previously compressed block and caches decompressed block in decoder.
+ Returns number of bytes decoded. These bytes can be read with .
+
+ Points to compressed block.
+ Length of compressed block.
+ Size of the block. Value 0 indicates default block size.
+ Number of decoded bytes.
+
+
+
+ Inject already decompressed block and caches it in decoder.
+ Used with uncompressed-yet-chained blocks and pre-made dictionaries.
+ These bytes can be read with .
+
+ Points to uncompressed block.
+ Length of uncompressed block.
+ Number of decoded bytes.
+
+
+
+ Reads previously decoded bytes. Please note, should be
+ negative number, pointing to bytes before current head.
+
+ Buffer to write to.
+ Offset in source buffer relatively to current head.
+ Please note, it should be negative value.
+ Number of bytes to read.
+
+
+
+ Interface of LZ4 encoder used by LZ4 streams.
+
+
+
+ Block size.
+
+
+ Number of bytes read for compression.
+ Always smaller than
+
+
+ Adds bytes to internal buffer. Increases
+ Source buffer.
+ Source buffer length.
+ Number of bytes topped up. If this function returns 0 it means that buffer
+ is full ( equals ) and
+ should be called to flush it.
+
+
+
+ Encodes bytes in internal buffer (see: , ).
+ If is true then if encoded buffer is bigger than
+ source buffer source bytes are copied instead. In such case returned length is negative.
+
+ Target buffer.
+ Target buffer length.
+ Indicates if copying is allowed.
+ Length of encoded buffer. Negative if bytes are just copied.
+
+
+
+ LZ4 decoder used with independent blocks mode. Plase note, that it will fail
+ if input data has been compressed with chained blocks
+ ( and )
+
+
+
+
+
+
+
+
+
+ Creates new instance of block decoder.
+ Block size. Must be equal or greater to one used for compression.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Independent block encoder. Produces larger files but uses less memory and
+ gives better performance.
+
+
+
+ Creates new instance of
+ Compression level.
+ Block size.
+
+
+
+
+
+
+
+
+ LZ4 decoder handling dependent blocks.
+
+
+ Creates new instance of .
+ Block size.
+ Number of extra blocks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Static class with factory methods to create LZ4 decoders.
+
+
+
+ Creates appropriate decoder for given parameters.
+ Dependent blocks.
+ Block size.
+ Number of extra blocks.
+ LZ4 decoder.
+
+
+
+ Static class with factory method to create LZ4 encoders.
+
+
+
+ Creates appropriate decoder for given parameters.
+ Dependent blocks.
+ Compression level.
+ Block size.
+ Number of extra blocks.
+ LZ4 encoder.
+
+
+
+ Base class for LZ4 encoders. Provides basic functionality shared by
+ , ,
+ and encoders. Do not used directly.
+
+
+
+ Creates new instance of encoder.
+ Needs to be true if using dependent blocks.
+ Block size.
+ Number of extra blocks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Encodes single block using appropriate algorithm.
+ Source buffer.
+ Source buffer length.
+ Target buffer.
+ Target buffer length.
+ Number of bytes actually written to target buffer.
+
+
+ Copies current dictionary.
+ Target buffer.
+ Dictionary length.
+ Dictionary length.
+
+
+
+
+
+
+ Functionality of encoders added on top of fixed interface.
+
+
+
+ Tops encoder up with some data.
+ Encoder.
+ Buffer pointer, will be shifted after operation by the number of
+ bytes actually loaded.
+ Length of buffer.
+ true if buffer was topped up, false if no bytes were loaded.
+
+
+ Tops encoder up with some data.
+ Encoder.
+ Buffer.
+ Buffer offset.
+ Length of buffer.
+ Number of bytes actually loaded.
+
+
+ Tops encoder up with some data.
+ Encoder.
+ Buffer.
+ Buffer offset, will be increased after operation by the number
+ of bytes actually loaded.
+ Length of buffer.
+ true if buffer was topped up, false if no bytes were loaded.
+
+
+ Encodes all bytes currently stored in encoder into target buffer.
+ Encoder.
+ Target buffer.
+ Offset in target buffer.
+ Length of target buffer.
+ if true copying bytes is allowed.
+ Number of bytes encoder. If bytes were copied than this value is negative.
+
+
+ Encodes all bytes currently stored in encoder into target buffer.
+ Encoder.
+ Target buffer.
+ Offset in target buffer. Will be updated after operation.
+ Length of target buffer.
+ if true copying bytes is allowed.
+ Result of this action. Bytes can be Copied (),
+ Encoded () or nothing could have
+ happened ().
+
+
+ Encodes all bytes currently stored in encoder into target buffer.
+ Encoder.
+ Target buffer. Will be updated after operation.
+ Length of buffer.
+ if true copying bytes is allowed.
+ Result of this action. Bytes can be Copied (),
+ Encoded () or nothing could have
+ happened ().
+
+
+ Tops encoder and encodes content.
+ Encoder.
+ Source buffer (used to top up from).
+ Source buffer length.
+ Target buffer (used to encode into)
+ Target buffer length.
+ Forces encoding even if encoder is not full.
+ Allows to copy bytes if compression was not possible.
+ Number of bytes loaded (topped up)
+ Number if bytes encoded or copied.
+ Value is 0 if no encoding was done.
+ Action performed.
+
+
+ Tops encoder and encodes content.
+ Encoder.
+ Source buffer (used to top up from).
+ Offset within source buffer.
+ Source buffer length.
+ Target buffer (used to encode into)
+ Offset within target buffer.
+ Target buffer length.
+ Forces encoding even if encoder is not full.
+ Allows to copy bytes if compression was not possible.
+ Number of bytes loaded (topped up)
+ Number if bytes encoded or copied.
+ Value is 0 if no encoding was done.
+ Action performed.
+
+
+ Encoded remaining bytes in encoder.
+ Encoder.
+ Target buffer.
+ Target buffer length.
+ Allows to copy bytes if compression was not possible.
+ Number if bytes encoded or copied.
+ Value is 0 if no encoding was done.
+ Action performed.
+
+
+ Encoded remaining bytes in encoder.
+ Encoder.
+ Target buffer.
+ Offset within target buffer.
+ Target buffer length.
+ Allows to copy bytes if compression was not possible.
+ Number if bytes encoded or copied.
+ Value is 0 if no encoding was done.
+ Action performed.
+
+
+ Drains decoder by reading all bytes which are ready.
+ Decoder.
+ Target buffer.
+ Offset within target buffer.
+ Offset in decoder relatively to decoder's head.
+ Please note, it should be negative value.
+ Number of bytes.
+
+
+ Decodes data and immediately drains it into target buffer.
+ Decoder.
+ Source buffer (with compressed data, to be decoded).
+ Source buffer length.
+ Target buffer (to drained into).
+ Target buffer length.
+ Number of bytes actually decoded.
+ true decoder was drained, false otherwise.
+
+
+ Decodes data and immediately drains it into target buffer.
+ Decoder.
+ Source buffer (with compressed data, to be decoded).
+ Offset within source buffer.
+ Source buffer length.
+ Target buffer (to drained into).
+ Offset within target buffer.
+ Target buffer length.
+ Number of bytes actually decoded.
+ true decoder was drained, false otherwise.
+
+
+
+ LZ4 encoder using dependent blocks with fast compression.
+
+
+
+ Creates new instance of
+ Block size.
+ Number of extra blocks.
+
+
+
+
+
+
+
+
+
+
+
+
+ LZ4 encoder using dependent blocks with high compression.
+
+
+
+ Creates new instance of
+ Compression level.
+ Block size.
+ Number of extra blocks.
+
+
+
+
+
+
+
+
+
+
+
+ Utility class with memory related functions.
+
+
+ 1 KiB
+
+
+ 2 KiB
+
+
+ 4 KiB
+
+
+ 8 KiB
+
+
+ 16 KiB
+
+
+ 32 KiB
+
+
+ 64 KiB
+
+
+ 128 KiB
+
+
+ 256 KiB
+
+
+ 512 KiB
+
+
+ 1 MiB
+
+
+ 4 MiB
+
+
+ Empty byte array.
+
+
+ Rounds integer value up to nearest multiple of step.
+ A value.
+ A step.
+ Value rounded up.
+
+
+
+ Copies memory block for to .
+ Even though it is called "copy" it actually behaves like "move" which
+ might be potential problem, although it shouldn't as I cannot think about
+ any situation when "copy" invalid behaviour (forward copy of overlapping blocks)
+ can be a desired.
+
+ The target block address.
+ The source block address.
+ Length in bytes.
+
+
+
+ Copies memory block for to .
+ It handle "move" semantic properly handling overlapping blocks properly.
+
+ The target block address.
+ The source block address.
+ Length in bytes.
+
+
+
+ Copies memory block for to
+ up to (around) .
+ It does not handle overlapping blocks and may copy up to 8 bytes more than expected.
+
+ The target block address.
+ The source block address.
+ The limit (in target block).
+
+
+ Fill block of memory with zeroes.
+ Address.
+ Length.
+
+
+ Fills memory block with repeating pattern of a single byte.
+ Address.
+ A pattern.
+ Length.
+
+
+
+ Copies memory block for to .
+ This is proper implementation of memcpy (with all then weird behaviour for
+ overlapping blocks). It is slower than "Copy" but may be required if "Copy"
+ causes problems.
+
+ The target block address.
+ The source block address.
+ Length in bytes.
+
+
+
+ Copies memory block backwards from to .
+ This is needed to implement memmove It is slower than "Move" but is needed for .NET 4.5,
+ which does not implement Buffer.MemoryCopy.
+
+ The target block address.
+ The source block address.
+ Length in bytes.
+
+
+
+ Moves memory block for to .
+ It handles overlapping block properly.
+
+ The target block address.
+ The source block address.
+ Length in bytes.
+
+
+ Copies exactly 8 bytes from source to target.
+ Target address.
+ Source address.
+
+
+ Copies exactly 16 bytes from source to target.
+ Target address.
+ Source address.
+
+
+ Copies exactly 18 bytes from source to target.
+ Target address.
+ Source address.
+
+
+ Allocated block of memory. It is NOT initialized with zeroes.
+ Size in bytes.
+ Pointer to allocated block.
+
+
+ Allocated block of memory and fills it with zeroes.
+ Size in bytes.
+ Pointer to allocated block.
+
+
+
+ Free memory allocated previously with or
+
+
+
+
+ Reads exactly 1 byte from given address.
+ Address.
+ Byte at given address.
+
+
+ Reads exactly 2 bytes from given address.
+ Address.
+ 2 bytes at given address.
+
+
+ Reads exactly 4 bytes from given address.
+ Address.
+ 4 bytes at given address.
+
+
+ Reads exactly 8 bytes from given address.
+ Address.
+ 8 bytes at given address.
+
+
+ Writes exactly 1 byte to given address.
+ Address.
+ Value.
+
+
+ Writes exactly 2 bytes to given address.
+ Address.
+ Value.
+
+
+ Writes exactly 4 bytes to given address.
+ Address.
+ Value.
+
+
+ Writes exactly 8 bytes to given address.
+ Address.
+ Value.
+
+
+
+ Skeleton for class with unmanaged resources.
+ Implements but also handles proper release in
+ case was not called.
+
+
+
+ Determines if object was already disposed.
+
+
+ Throws exception is object has been disposed already. Convenience method.
+ Thrown if object is already disposed.
+
+
+ Method releasing unmanaged resources.
+
+
+ Method releasing managed resources.
+
+
+
+ Disposed resources.
+
+ true if dispose was explicitly called,
+ false if called from GC.
+
+
+
+
+
+ Destructor.
+
+
+
+ Static class exposing LZ4 block compression methods.
+
+
+
+ Maximum size after compression.
+ Length of input buffer.
+ Maximum length after compression.
+
+
+ Compresses data from one buffer into another.
+ Input buffer.
+ Length of input buffer.
+ Output buffer.
+ Output buffer length.
+ Compression level.
+ Number of bytes written, or negative value if output buffer is too small.
+
+
+ Compresses data from one buffer into another.
+ Input buffer.
+ Output buffer.
+ Compression level.
+ Number of bytes written, or negative value if output buffer is too small.
+
+
+ Compresses data from one buffer into another.
+ Input buffer.
+ Input buffer offset.
+ Input buffer length.
+ Output buffer.
+ Output buffer offset.
+ Output buffer length.
+ Compression level.
+ Number of bytes written, or negative value if output buffer is too small.
+
+
+ Decompresses data from given buffer.
+ Input buffer.
+ Input buffer length.
+ Output buffer.
+ Output buffer length.
+ Number of bytes written, or negative value if output buffer is too small.
+
+
+ Decompresses data from given buffer.
+ Input buffer.
+ Output buffer.
+ Number of bytes written, or negative value if output buffer is too small.
+
+
+ Decompresses data from given buffer.
+ Input buffer.
+ Input buffer offset.
+ Input buffer length.
+ Output buffer.
+ Output buffer offset.
+ Output buffer length.
+ Number of bytes written, or negative value if output buffer is too small.
+
+
+ Compression level.
+
+
+ Fast compression.
+
+
+ High compression, level 3.
+
+
+ High compression, level 4.
+
+
+ High compression, level 5.
+
+
+ High compression, level 6.
+
+
+ High compression, level 7.
+
+
+ High compression, level 8.
+
+
+ High compression, level 9.
+
+
+ Optimal compression, level 10.
+
+
+ Optimal compression, level 11.
+
+
+ Maximum compression, level 12.
+
+
+
+ Pickling support with LZ4 compression.
+
+
+
+ Compresses input buffer into self-contained package.
+ Input buffer.
+ Compression level.
+ Output buffer.
+
+
+ Compresses input buffer into self-contained package.
+ Input buffer.
+ Input buffer offset.
+ Input buffer length.
+ Compression level.
+ Output buffer.
+
+
+ Compresses input buffer into self-contained package.
+ Input buffer.
+ Compression level.
+ Output buffer.
+
+
+ Compresses input buffer into self-contained package.
+ Input buffer.
+ Length of input data.
+ Compression level.
+ Output buffer.
+
+
+ Decompresses previously pickled buffer (see: .
+ Input buffer.
+ Output buffer.
+
+
+ Decompresses previously pickled buffer (see: .
+ Input buffer.
+ Input buffer offset.
+ Input buffer length.
+ Output buffer.
+
+
+ Decompresses previously pickled buffer (see: .
+ Input buffer.
+ Output buffer.
+
+
+ Decompresses previously pickled buffer (see: .
+ Input buffer.
+ Input buffer length.
+ Output buffer.
+
+
+
diff --git a/app/bin/Release/K4os.Hash.xxHash.dll b/app/bin/Release/K4os.Hash.xxHash.dll
new file mode 100644
index 0000000..b4cb8d9
Binary files /dev/null and b/app/bin/Release/K4os.Hash.xxHash.dll differ
diff --git a/app/bin/Release/K4os.Hash.xxHash.xml b/app/bin/Release/K4os.Hash.xxHash.xml
new file mode 100644
index 0000000..2b84147
--- /dev/null
+++ b/app/bin/Release/K4os.Hash.xxHash.xml
@@ -0,0 +1,163 @@
+
+
+
+ K4os.Hash.xxHash
+
+
+
+
+ Adapter implementing
+
+
+
+
+ Creates new .
+
+ Hash size (in bytes)
+ Reset function.
+ Update function.
+ Digest function.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Base class for both and . Do not use directly.
+
+
+
+ Protected constructor to prevent instantiation.
+
+
+
+ xxHash 32-bit.
+
+
+
+ Hash of empty buffer.
+
+
+ Hash of provided buffer.
+ Buffer.
+ Length of buffer.
+ Digest.
+
+
+ Hash of provided buffer.
+ Buffer.
+ Digest.
+
+
+ Hash of provided buffer.
+ Buffer.
+ Starting offset.
+ Length of buffer.
+ Digest.
+
+
+ Creates xxHash instance.
+
+
+ Resets hash calculation.
+
+
+ Updates the has using given buffer.
+ Buffer.
+ Length of buffer.
+
+
+ Updates the has using given buffer.
+ Buffer.
+
+
+ Updates the has using given buffer.
+ Buffer.
+ Starting offset.
+ Length of buffer.
+
+
+ Hash so far.
+ Hash so far.
+
+
+ Hash so far, as byte array.
+ Hash so far.
+
+
+ Converts this class to
+
+
+
+
+ xxHash 64-bit.
+
+
+
+ Hash of empty buffer.
+
+
+ Hash of provided buffer.
+ Buffer.
+ Length of buffer.
+ Digest.
+
+
+ Hash of provided buffer.
+ Buffer.
+ Digest.
+
+
+ Hash of provided buffer.
+ Buffer.
+ Starting offset.
+ Length of buffer.
+ Digest.
+
+
+ Creates xxHash instance.
+
+
+ Resets hash calculation.
+
+
+ Updates the has using given buffer.
+ Buffer.
+ Length of buffer.
+
+
+ Updates the has using given buffer.
+ Buffer.
+
+
+ Updates the has using given buffer.
+ Buffer.
+ Starting offset.
+ Length of buffer.
+
+
+ Hash so far.
+ Hash so far.
+
+
+ Hash so far, as byte array.
+ Hash so far.
+
+
+ Converts this class to
+
+
+
+
diff --git a/app/bin/Release/MySql.Data.dll b/app/bin/Release/MySql.Data.dll
new file mode 100644
index 0000000..9d52ef1
Binary files /dev/null and b/app/bin/Release/MySql.Data.dll differ
diff --git a/app/bin/Release/MySql.Data.xml b/app/bin/Release/MySql.Data.xml
new file mode 100644
index 0000000..338ae6d
--- /dev/null
+++ b/app/bin/Release/MySql.Data.xml
@@ -0,0 +1,17955 @@
+
+
+
+ MySql.Data
+
+
+
+
+ The implementation of the caching_sha2_password authentication plugin.
+
+
+
+
+ Generates a byte array set with the password of the user in the expected format based on the
+ SSL settings of the current connection.
+
+ A byte array that contains the password of the user in the expected format.
+
+
+
+ Defines the stage of the authentication.
+
+
+
+
+ Allows connections to a user account set with the mysql_clear_password authentication plugin.
+
+
+
+
+ Defines the default behavior for an authentication plugin.
+
+
+
+
+ Gets or sets the authentication data returned by the server.
+
+
+
+
+ This is a factory method that is used only internally. It creates an auth plugin based on the method type
+
+
+
+
+
+
+
+
+ Gets the connection option settings.
+
+
+
+
+ Gets the server version associated with this authentication plugin.
+
+
+
+
+ Gets the encoding assigned to the native driver.
+
+
+
+
+ Sets the authentication data required to encode, encrypt, or convert the password of the user.
+
+ A byte array containing the authentication data provided by the server.
+ This method may be overriden based on the requirements by the implementing authentication plugin.
+
+
+
+ Defines the behavior when checking for constraints.
+
+ This method is intended to be overriden.
+
+
+
+ Throws a that encapsulates the original exception.
+
+ The exception to encapsulate.
+
+
+
+ Defines the behavior when authentication is successful.
+
+ This method is intended to be overriden.
+
+
+
+ Defines the behavior when more data is required from the server.
+
+ The data returned by the server.
+ The data to return to the server.
+ This method is intended to be overriden.
+
+
+
+ Gets the plugin name based on the authentication plugin type defined during the creation of this object.
+
+
+
+
+ Gets the user name associated to the connection settings.
+
+ The user name associated to the connection settings.
+
+
+
+ Gets the encoded, encrypted, or converted password based on the authentication plugin type defined during the creation of this object.
+ This method is intended to be overriden.
+
+ An object containing the encoded, encrypted, or converted password.
+
+
+
+ Provides functionality to read, decode and convert PEM files to objects supported in .NET.
+
+
+
+
+ Converts the binary data of a PEM file to an object.
+
+ A binary representation of the public key provided by the server.
+ An object containing the data found in the public key.
+
+
+
+ Allows connections to a user account set with the authentication_ldap_sasl authentication plugin.
+
+
+
+
+ Determines if the character is a non-ASCII space.
+
+
+ This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.1.2
+
+ true if the character is a non-ASCII space; otherwise, false.
+ The character.
+
+
+
+ Determines if the character is commonly mapped to nothing.
+
+
+ This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-B.1
+
+ true if the character is commonly mapped to nothing; otherwise, false.
+ The character.
+
+
+
+ Determines if the character is prohibited.
+
+
+ This list was obtained from http://tools.ietf.org/html/rfc3454#appendix-C.3
+
+ true if the character is prohibited; otherwise, false.
+ The string.
+ The character index.
+
+
+
+ Prepares the user name or password string.
+
+ The string to prepare.
+ The prepared string.
+
+
+
+ Allows connections to a user account set with the mysql_native_password authentication plugin.
+
+
+
+
+ Returns a byte array containing the proper encryption of the
+ given password/seed according to the new 4.1.1 authentication scheme.
+
+
+
+
+
+
+
+ Base class to handle SCRAM authentication methods
+
+
+
+
+ Defines the state of the authentication process.
+
+
+
+
+ Gets the name of the method.
+
+
+
+
+ Parses the server's challenge token and returns the next challenge response.
+
+ The next challenge response.
+
+
+
+ Builds up the client-first message.
+
+ An array of bytes containig the client-first message.
+
+
+
+ Processes the server response from the client-first message and
+ builds up the client-final message.
+
+ Response from the server.
+ An array of bytes containing the client-final message.
+
+
+
+ Validates the server response.
+
+ Server-final message
+
+
+
+ Creates the HMAC SHA1 context.
+
+ The HMAC context.
+ The secret key.
+
+
+
+ Apply the HMAC keyed algorithm.
+
+ The results of the HMAC keyed algorithm.
+ The key.
+ The string.
+
+
+
+ Applies the cryptographic hash function.
+
+ The results of the hash.
+ The string.
+
+
+
+ Applies the exclusive-or operation to combine two octet strings.
+
+ The alpha component.
+ The blue component.
+
+
+
+ The SCRAM-SHA-1 SASL mechanism.
+
+
+ A salted challenge/response SASL mechanism that uses the HMAC SHA-1 algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new SCRAM-SHA-1 SASL context.
+
+ The user name.
+ The password.
+ The host.
+
+
+
+ Gets the name of the method.
+
+
+
+
+ The SCRAM-SHA-256 SASL mechanism.
+
+
+ A salted challenge/response SASL mechanism that uses the HMAC SHA-256 algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new SCRAM-SHA-256 SASL context.
+
+ The user name.
+ The password.
+ The host.
+
+
+
+ Gets the name of the method.
+
+
+
+
+ The implementation of the sha256_password authentication plugin.
+
+
+
+
+ The byte array representation of the public key provided by the server.
+
+
+
+
+ Applies XOR to the byte arrays provided as input.
+
+ A byte array that contains the results of the XOR operation.
+
+
+
+
+
+
+
+
+ Defines the type of the security buffer.
+
+
+
+
+ Defines a security handle.
+
+
+
+
+ Describes a buffer allocated by a transport to pass to a security package.
+
+
+
+
+ Specifies the size, in bytes, of the buffer.
+
+
+
+
+ Bit flags that indicate the type of the buffer.
+
+
+
+
+ Pointer to a buffer.
+
+
+
+
+ Hold a numeric value used in defining other data types.
+
+
+
+
+ Least significant digits.
+
+
+
+
+ Most significant digits.
+
+
+
+
+ Holds a pointer used to define a security handle.
+
+
+
+
+ Least significant digits.
+
+
+
+
+ Most significant digits.
+
+
+
+
+ Indicates the sizes of important structures used in the message support functions.
+
+
+
+
+ Specifies the maximum size of the security token used in the authentication changes.
+
+
+
+
+ Specifies the maximum size of the signature created by the MakeSignature function.
+ This member must be zero if integrity services are not requested or available.
+
+
+
+
+ Specifies the preferred integral size of the messages.
+
+
+
+
+ Size of the security trailer to be appended to messages.
+ This member should be zero if the relevant services are not requested or available.
+
+
+
+
+ Allows importing large amounts of data into a database with bulk loading.
+
+
+
+
+ Gets or sets the connection.
+
+ The connection.
+
+
+
+ Gets or sets the field terminator.
+
+ The field terminator.
+
+
+
+ Gets or sets the line terminator.
+
+ The line terminator.
+
+
+
+ Gets or sets the name of the table.
+
+ The name of the table.
+
+
+
+ Gets or sets the character set.
+
+ The character set.
+
+
+
+ Gets or sets the name of the file.
+
+ The name of the file.
+
+
+
+ Gets or sets the timeout.
+
+ The timeout.
+
+
+
+ Gets or sets a value indicating whether the file name that is to be loaded
+ is local to the client or not. The default value is false.
+
+ true if local; otherwise, false.
+
+
+
+ Gets or sets the number of lines to skip.
+
+ The number of lines to skip.
+
+
+
+ Gets or sets the line prefix.
+
+ The line prefix.
+
+
+
+ Gets or sets the field quotation character.
+
+ The field quotation character.
+
+
+
+ Gets or sets a value indicating whether [field quotation optional].
+
+
+ true if [field quotation optional]; otherwise, false.
+
+
+
+
+ Gets or sets the escape character.
+
+ The escape character.
+
+
+
+ Gets or sets the conflict option.
+
+ The conflict option.
+
+
+
+ Gets or sets the priority.
+
+ The priority.
+
+
+
+ Gets the columns.
+
+ The columns.
+
+
+
+ Gets the expressions.
+
+ The expressions.
+
+
+
+ Executes the load operation.
+
+ The number of rows inserted.
+
+
+
+ Asynchronous version of the load operation.
+
+ The number of rows inserted.
+
+
+
+ Executes the load operation asynchronously while the cancellation isn't requested.
+
+ The cancellation token.
+ The number of rows inserted.
+
+
+
+ Represents the priority set for bulk loading operations.
+
+
+
+
+ This is the default and indicates normal priority
+
+
+
+
+ Low priority will cause the load operation to wait until all readers of the table
+ have finished. This only affects storage engines that use only table-level locking
+ such as MyISAM, Memory, and Merge.
+
+
+
+
+ Concurrent priority is only relevant for MyISAM tables and signals that if the table
+ has no free blocks in the middle that other readers can retrieve data from the table
+ while the load operation is happening.
+
+
+
+
+ Represents the behavior when conflicts arise during bulk loading operations.
+
+
+
+
+ This is the default and indicates normal operation. In the event of a LOCAL load, this
+ is the same as ignore. When the data file is on the server, then a key conflict will
+ cause an error to be thrown and the rest of the data file ignored.
+
+
+
+
+ Replace column values when a key conflict occurs.
+
+
+
+
+ Ignore any rows where the primary key conflicts.
+
+
+
+
+ Summary description for CharSetMap.
+
+
+
+
+ Returns the text encoding for a given MySQL character set name
+
+ Version of the connection requesting the encoding
+ Name of the character set to get the encoding for
+ Encoding object for the given character set name
+
+
+
+ Initializes the mapping.
+
+
+
+
+ Represents a character set object.
+
+
+
+ Represents a SQL statement to execute against a MySQL database. This class cannot be inherited.
+ MySqlCommand features the following methods for executing commands at a MySQL database:
+
+
+ Item
+ Description
+
+ -
+
+ ExecuteReader
+
+ Executes commands that return rows.
+
+ -
+
+ ExecuteNonQuery
+
+ Executes commands such as SQL INSERT, DELETE, and UPDATE statements.
+
+ -
+
+ ExecuteScalar
+
+ Retrieves a single value (for example, an aggregate value) from a database.
+
+
+
+ You can reset the CommandText property and reuse the MySqlCommand
+ object. However, you must close the MySqlDataReader
+ before you can execute a new or previous command.
+
+ If a MySqlException is
+ generated by the method executing a MySqlCommand, the MySqlConnection
+ remains open. It is the responsibility of the programmer to close the connection.
+
+
+ Using the '@' symbol for paramters is now the preferred approach although the old pattern of using
+ '?' is still supported. Please be aware though that using '@' can cause conflicts when user variables
+ are also used. To help with this situation please see the documentation on the 'allow user variables'
+ connection string option. The 'old syntax' connection string option has now been deprecated.
+
+
+ The following example creates a MySqlCommand and
+ a MySqlConnection. The MySqlConnection is opened and set as the Connection
+ for the MySqlCommand. The example then calls ExecuteNonQuery,
+ and closes the connection. To accomplish this, the ExecuteNonQuery is
+ passed a connection string and a query string that is a SQL INSERT
+ statement.
+
+ Public Sub InsertRow(myConnectionString As String)
+ " If the connection string is null, use a default.
+ If myConnectionString = "" Then
+ myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"
+ End If
+ Dim myConnection As New MySqlConnection(myConnectionString)
+ Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"
+ Dim myCommand As New MySqlCommand(myInsertQuery)
+ myCommand.Connection = myConnection
+ myConnection.Open()
+ myCommand.ExecuteNonQuery()
+ myCommand.Connection.Close()
+ End Sub
+
+
+ public void InsertRow(string myConnectionString)
+ {
+ // If the connection string is null, use a default.
+ if(myConnectionString == "")
+ {
+ myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass";
+ }
+ MySqlConnection myConnection = new MySqlConnection(myConnectionString);
+ string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)";
+ MySqlCommand myCommand = new MySqlCommand(myInsertQuery);
+ myCommand.Connection = myConnection;
+ myConnection.Open();
+ myCommand.ExecuteNonQuery();
+ myCommand.Connection.Close();
+ }
+
+
+
+
+
+
+ Initializes a new instance of the MySqlCommand class.
+
+
+ The following example creates a MySqlCommand and sets some of its properties.
+
+
+ This example shows how to use one of the overloaded
+ versions of the MySqlCommand constructor. For other examples that might be available,
+ see the individual overload topics.
+
+
+
+ Public Sub CreateMySqlCommand()
+ Dim myConnection As New MySqlConnection _
+ ("Persist Security Info=False;database=test;server=myServer")
+ myConnection.Open()
+ Dim myTrans As MySqlTransaction = myConnection.BeginTransaction()
+ Dim mySelectQuery As String = "SELECT * FROM MyTable"
+ Dim myCommand As New MySqlCommand(mySelectQuery, myConnection, myTrans)
+ myCommand.CommandTimeout = 20
+ End Sub
+
+
+ public void CreateMySqlCommand()
+ {
+ MySqlConnection myConnection = new MySqlConnection("Persist Security Info=False;
+ database=test;server=myServer");
+ myConnection.Open();
+ MySqlTransaction myTrans = myConnection.BeginTransaction();
+ string mySelectQuery = "SELECT * FROM myTable";
+ MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection,myTrans);
+ myCommand.CommandTimeout = 20;
+ }
+
+
+ public:
+ void CreateMySqlCommand()
+ {
+ MySqlConnection* myConnection = new MySqlConnection(S"Persist Security Info=False;
+ database=test;server=myServer");
+ myConnection->Open();
+ MySqlTransaction* myTrans = myConnection->BeginTransaction();
+ String* mySelectQuery = S"SELECT * FROM myTable";
+ MySqlCommand* myCommand = new MySqlCommand(mySelectQuery, myConnection, myTrans);
+ myCommand->CommandTimeout = 20;
+ };
+
+
+
+ Initializes a new instance of the MySqlCommand class.
+
+ The base constructor initializes all fields to their default values. The
+ following table shows initial property values for an instance of .
+
+
+ Properties
+ Initial Value
+
+ -
+
+
+
+ empty string ("")
+
+ -
+
+
+
+ 0
+
+ -
+
+
+
+ CommandType.Text
+
+ -
+
+
+
+ Null
+
+
+
+ You can change the value for any of these properties through a separate call to
+ the property.
+
+
+ The following example creates a and
+ sets some of its properties.
+
+
+ Public Sub CreateMySqlCommand()
+ Dim myCommand As New MySqlCommand()
+ myCommand.CommandType = CommandType.Text
+ End Sub
+
+
+ public void CreateMySqlCommand()
+ {
+ MySqlCommand myCommand = new MySqlCommand();
+ myCommand.CommandType = CommandType.Text;
+ }
+
+
+
+
+
+ Initializes a new instance of the class with the text of the query.
+ The text of the query.
+ When an instance of is created,
+ the following read/write properties are set to initial values.
+
+
+
+ Properties
+ Initial Value
+
+ -
+
+
+
+
+ cmdText
+
+
+ -
+
+
+
+ 0
+
+ -
+
+
+
+ CommandType.Text
+
+ -
+
+
+
+ Null
+
+
+
+ You can change the value for any of these properties through a separate call to
+ the property.
+
+
+ The following example creates a and
+ sets some of its properties.
+
+
+ Public Sub CreateMySqlCommand()
+ Dim sql as String = "SELECT * FROM mytable"
+ Dim myCommand As New MySqlCommand(sql)
+ myCommand.CommandType = CommandType.Text
+ End Sub
+
+
+ public void CreateMySqlCommand()
+ {
+ string sql = "SELECT * FROM mytable";
+ MySqlCommand myCommand = new MySqlCommand(sql);
+ myCommand.CommandType = CommandType.Text;
+ }
+
+
+
+
+
+ Initializes a new instance of the class
+ with the text of the query and a .
+ The text of the query.
+ A that represents the
+ connection to an instance of SQL Server.
+
+ When an instance of is created,
+ the following read/write properties are set to initial values.
+
+
+
+ Properties
+ Initial Value
+
+ -
+
+
+
+
+ cmdText
+
+
+ -
+
+
+
+ 0
+
+ -
+
+
+
+ CommandType.Text
+
+ -
+
+
+
+
+ connection
+
+
+
+
+ You can change the value for any of these properties through a separate call to
+ the property.
+
+
+ The following example creates a and
+ sets some of its properties.
+
+
+ Public Sub CreateMySqlCommand()
+ Dim conn as new MySqlConnection("server=myServer")
+ Dim sql as String = "SELECT * FROM mytable"
+ Dim myCommand As New MySqlCommand(sql, conn)
+ myCommand.CommandType = CommandType.Text
+ End Sub
+
+
+ public void CreateMySqlCommand()
+ {
+ MySqlConnection conn = new MySqlConnection("server=myserver")
+ string sql = "SELECT * FROM mytable";
+ MySqlCommand myCommand = new MySqlCommand(sql, conn);
+ myCommand.CommandType = CommandType.Text;
+ }
+
+
+
+
+
+ Initializes a new instance of the class
+ with the text of the query, a , and the
+ .
+ The text of the query.
+ A that represents the
+ connection to an instance of SQL Server.
+
+ The in which the executes.
+
+ When an instance of is created,
+ the following read/write properties are set to initial values.
+
+
+
+ Properties
+ Initial Value
+
+ -
+
+
+
+
+ cmdText
+
+
+ -
+
+
+
+ 0
+
+ -
+
+
+
+ CommandType.Text
+
+ -
+
+
+
+
+ connection
+
+
+
+
+ You can change the value for any of these properties through a separate call to
+ the property.
+
+
+ The following example creates a and
+ sets some of its properties.
+
+
+ Public Sub CreateMySqlCommand()
+ Dim conn as new MySqlConnection("server=myServer")
+ conn.Open();
+ Dim txn as MySqlTransaction = conn.BeginTransaction()
+ Dim sql as String = "SELECT * FROM mytable"
+ Dim myCommand As New MySqlCommand(sql, conn, txn)
+ myCommand.CommandType = CommandType.Text
+ End Sub
+
+
+ public void CreateMySqlCommand()
+ {
+ MySqlConnection conn = new MySqlConnection("server=myserver")
+ conn.Open();
+ MySqlTransaction txn = conn.BeginTransaction();
+ string sql = "SELECT * FROM mytable";
+ MySqlCommand myCommand = new MySqlCommand(sql, conn, txn);
+ myCommand.CommandType = CommandType.Text;
+ }
+
+
+
+
+
+ Gets the last inserted id.
+
+
+
+
+
+ Gets or sets the SQL statement to execute at the data source.
+
+ The SQL statement or stored procedure to execute. The default is an empty string.
+
+
+ When the property is set to StoredProcedure,
+ the CommandText property should be set to the name of the stored procedure.
+ The user may be required to use escape character syntax if the stored procedure name
+ contains any special characters. The command executes this stored procedure when
+ you call one of the Execute methods. Starting with Connector/NET 5.0, having both a stored function
+ and stored procedure with the same name in the same database is not supported. It is
+ suggested that you provide unqiue names for your stored routines.
+
+
+ The following example creates a and sets some of its properties.
+
+ Public Sub CreateMySqlCommand()
+ Dim myCommand As New MySqlCommand()
+ myCommand.CommandText = "SELECT * FROM Mytable ORDER BY id"
+ myCommand.CommandType = CommandType.Text
+ End Sub
+
+
+ public void CreateMySqlCommand()
+ {
+ MySqlCommand myCommand = new MySqlCommand();
+ myCommand.CommandText = "SELECT * FROM mytable ORDER BY id";
+ myCommand.CommandType = CommandType.Text;
+ }
+
+
+
+
+
+ Gets or sets the wait time before terminating the attempt to execute a command
+ and generating an error.
+
+ The time (in seconds) to wait for the command to execute. The default is 30
+ seconds.
+
+ CommandTimeout is dependent on the ability of MySQL to cancel an executing query.
+ Because of this, CommandTimeout is only supported when connected to MySQL
+ version 5.0.0 or higher.
+
+
+
+
+ Gets or sets a value indicating how the property is to be interpreted.
+
+ One of the values. The default is Text.
+
+
+ When you set the CommandType property to StoredProcedure, you
+ should set the property to the name of the stored
+ procedure. The command executes this stored procedure when you call one of the
+ Execute methods.
+
+
+ The following example creates a and sets some of its properties.
+
+ Public Sub CreateMySqlCommand()
+ Dim myCommand As New MySqlCommand()
+ myCommand.CommandType = CommandType.Text
+ End Sub
+
+
+ public void CreateMySqlCommand()
+ {
+ MySqlCommand myCommand = new MySqlCommand();
+ myCommand.CommandType = CommandType.Text;
+ }
+
+
+
+
+
+ Gets a boolean value that indicates whether the Prepared method has been called.
+
+
+
+
+
+ Gets or sets the used by this instance of the
+ .
+
+ The connection to a data source. The default value is a null reference
+ (Nothing in Visual Basic).
+
+
+ If you set Connection while a transaction is in progress and the
+ property is not null, an
+ is generated. If the Transaction property is not null and the transaction
+ has already been committed or rolled back, Transaction is set to
+ null.
+
+
+ The following example creates a and sets some of its properties.
+
+ Public Sub CreateMySqlCommand()
+ Dim mySelectQuery As String = "SELECT * FROM mytable ORDER BY id"
+ Dim myConnectString As String = "Persist Security Info=False;database=test;server=myServer"
+ Dim myCommand As New MySqlCommand(mySelectQuery)
+ myCommand.Connection = New MySqlConnection(myConnectString)
+ myCommand.CommandType = CommandType.Text
+ End Sub
+
+
+ public void CreateMySqlCommand()
+ {
+ string mySelectQuery = "SELECT * FROM mytable ORDER BY id";
+ string myConnectString = "Persist Security Info=False;database=test;server=myServer";
+ MySqlCommand myCommand = new MySqlCommand(mySelectQuery);
+ myCommand.Connection = new MySqlConnection(myConnectString);
+ myCommand.CommandType = CommandType.Text;
+ }
+
+
+
+
+
+ Get the
+
+ The parameters of the SQL statement or stored procedure. The default is
+ an empty collection.
+
+ Connector/NET does not support unnamed parameters. Every parameter added to the collection must
+ have an associated name.
+
+ The following example creates a and displays its parameters.
+ To accomplish this, the method is passed a , a query string
+ that is a SQL SELECT statement, and an array of objects.
+
+ Public Sub CreateMySqlCommand(myConnection As MySqlConnection, _
+ mySelectQuery As String, myParamArray() As MySqlParameter)
+ Dim myCommand As New MySqlCommand(mySelectQuery, myConnection)
+ myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=@age"
+ myCommand.UpdatedRowSource = UpdateRowSource.Both
+ myCommand.Parameters.Add(myParamArray)
+ Dim j As Integer
+ For j = 0 To myCommand.Parameters.Count - 1
+ myCommand.Parameters.Add(myParamArray(j))
+ Next j
+ Dim myMessage As String = ""
+ Dim i As Integer
+ For i = 0 To myCommand.Parameters.Count - 1
+ myMessage += myCommand.Parameters(i).ToString() & ControlChars.Cr
+ Next i
+ Console.WriteLine(myMessage)
+ End Sub
+
+
+ public void CreateMySqlCommand(MySqlConnection myConnection, string mySelectQuery,
+ MySqlParameter[] myParamArray)
+ {
+ MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection);
+ myCommand.CommandText = "SELECT id, name FROM mytable WHERE age=@age";
+ myCommand.Parameters.Add(myParamArray);
+ for (int j=0; j<myParamArray.Length; j++)
+ {
+ myCommand.Parameters.Add(myParamArray[j]) ;
+ }
+ string myMessage = "";
+ for (int i = 0; i < myCommand.Parameters.Count; i++)
+ {
+ myMessage += myCommand.Parameters[i].ToString() + "\n";
+ }
+ MessageBox.Show(myMessage);
+ }
+
+
+
+
+
+ Gets or sets the within which the executes.
+
+ The . The default value is a null reference (Nothing in Visual Basic).
+
+ You cannot set the Transaction property if it is already set to a
+ specific value, and the command is in the process of executing. If you set the
+ transaction property to a object that is not connected
+ to the same as the object,
+ an exception will be thrown the next time you attempt to execute a statement.
+
+
+
+
+ Gets or sets a boolean value that indicates whether caching is enabled.
+
+
+
+
+ Gets or sets the seconds for how long a TableDirect result should be cached.
+
+
+
+
+ Gets or sets how command results are applied to the DataRow when used by the
+ Update method of the DbDataAdapter.
+
+
+
+
+ Gets or sets a value indicating whether the command object should be visible in a Windows Form Designer control.
+
+
+
+
+ Attempts to cancel the execution of a currently active command
+
+
+ Cancelling a currently active query only works with MySQL versions 5.0.0 and higher.
+
+
+
+
+ Creates a new instance of a object.
+
+
+ This method is a strongly-typed version of .
+
+ A object.
+
+
+
+
+ Check the connection to make sure
+ - it is open
+ - it is not currently being used by a reader
+ - and we have the right version of MySQL for the requested command type
+
+
+
+
+ Executes a SQL statement against the connection and returns the number of rows affected.
+ Number of rows affected
+ You can use ExecuteNonQuery to perform any type of database operation,
+ however any resultsets returned will not be available. Any output parameters
+ used in calling a stored procedure will be populated with data and can be
+ retrieved after execution is complete.
+ For UPDATE, INSERT, and DELETE statements, the return value is the number
+ of rows affected by the command. For all other types of statements, the return
+ value is -1.
+
+ The following example creates a MySqlCommand and then
+ executes it using ExecuteNonQuery. The example is passed a string that is a
+ SQL statement (such as UPDATE, INSERT, or DELETE) and a string to use to
+ connect to the data source.
+
+ Public Sub CreateMySqlCommand(myExecuteQuery As String, myConnection As MySqlConnection)
+ Dim myCommand As New MySqlCommand(myExecuteQuery, myConnection)
+ myCommand.Connection.Open()
+ myCommand.ExecuteNonQuery()
+ myConnection.Close()
+ End Sub
+
+
+ public void CreateMySqlCommand(string myExecuteQuery, MySqlConnection myConnection)
+ {
+ MySqlCommand myCommand = new MySqlCommand(myExecuteQuery, myConnection);
+ myCommand.Connection.Open();
+ myCommand.ExecuteNonQuery();
+ myConnection.Close();
+ }
+
+
+
+
+
+ Reset reader to null, to avoid "There is already an open data reader"
+ on the next ExecuteReader(). Used in error handling scenarios.
+
+
+
+
+ Reset SQL_SELECT_LIMIT that could have been modified by CommandBehavior.
+
+
+
+
+ Sends the to the Connection
+ and builds a .
+
+ A object.
+
+
+ When the property is set to StoredProcedure,
+ the property should be set to the name of the stored
+ procedure. The command executes this stored procedure when you call
+ ExecuteReader.
+
+
+ While the is in use, the associated
+ is busy serving the MySqlDataReader.
+ While in this state, no other operations can be performed on the
+ MySqlConnection other than closing it. This is the case until the
+ method of the MySqlDataReader is called.
+
+
+ The following example creates a , then executes it by
+ passing a string that is a SQL SELECT statement, and a string to use to connect to the
+ data source.
+
+ Public Sub CreateMySqlDataReader(mySelectQuery As String, myConnection As MySqlConnection)
+ Dim myCommand As New MySqlCommand(mySelectQuery, myConnection)
+ myConnection.Open()
+ Dim myReader As MySqlDataReader
+ myReader = myCommand.ExecuteReader()
+ Try
+ While myReader.Read()
+ Console.WriteLine(myReader.GetString(0))
+ End While
+ Finally
+ myReader.Close
+ myConnection.Close
+ End Try
+ End Sub
+
+
+ public void CreateMySqlDataReader(string mySelectQuery, MySqlConnection myConnection)
+ {
+ MySqlCommand myCommand = new MySqlCommand(mySelectQuery, myConnection);
+ myConnection.Open();
+ MMySqlDataReader myReader;
+ myReader = myCommand.ExecuteReader();
+ try
+ {
+ while(myReader.Read())
+ {
+ Console.WriteLine(myReader.GetString(0));
+ }
+ }
+ finally
+ {
+ myReader.Close();
+ myConnection.Close();
+ }
+ }
+
+
+
+
+
+ Sends the to the Connection,
+ and builds a using one of the values.
+
+ One of the values.
+
+
+ When the property is set to StoredProcedure,
+ the property should be set to the name of the stored
+ procedure. The command executes this stored procedure when you call
+ ExecuteReader.
+
+
+ The supports a special mode that enables large binary
+ values to be read efficiently. For more information, see the SequentialAccess
+ setting for .
+
+
+ While the is in use, the associated
+ is busy serving the MySqlDataReader.
+ While in this state, no other operations can be performed on the
+ MySqlConnection other than closing it. This is the case until the
+ method of the MySqlDataReader is called.
+ If the MySqlDataReader is created with CommandBehavior set to
+ CloseConnection, closing the MySqlDataReader closes the connection
+ automatically.
+
+
+ When calling ExecuteReader with the SingleRow behavior, you should be aware that using a limit
+ clause in your SQL will cause all rows (up to the limit given) to be retrieved by the client. The
+ method will still return false after the first row but pulling all rows of data
+ into the client will have a performance impact. If the limit clause is not necessary, it should
+ be avoided.
+
+
+ A object.
+
+
+
+
+ Executes the query, and returns the first column of the first row in the
+ result set returned by the query. Extra columns or rows are ignored.
+
+ The first column of the first row in the result set, or a null reference if the
+ result set is empty
+
+
+ Use the ExecuteScalar method to retrieve a single value (for example,
+ an aggregate value) from a database. This requires less code than using the
+ method, and then performing the operations necessary
+ to generate the single value using the data returned by a
+
+
+ The following example creates a and then
+ executes it using ExecuteScalar. The example is passed a string that is a
+ SQL statement that returns an aggregate result, and a string to use to
+ connect to the data source.
+
+
+ Public Sub CreateMySqlCommand(myScalarQuery As String, myConnection As MySqlConnection)
+ Dim myCommand As New MySqlCommand(myScalarQuery, myConnection)
+ myCommand.Connection.Open()
+ myCommand.ExecuteScalar()
+ myConnection.Close()
+ End Sub
+
+
+ public void CreateMySqlCommand(string myScalarQuery, MySqlConnection myConnection)
+ {
+ MySqlCommand myCommand = new MySqlCommand(myScalarQuery, myConnection);
+ myCommand.Connection.Open();
+ myCommand.ExecuteScalar();
+ myConnection.Close();
+ }
+
+
+ public:
+ void CreateMySqlCommand(String* myScalarQuery, MySqlConnection* myConnection)
+ {
+ MySqlCommand* myCommand = new MySqlCommand(myScalarQuery, myConnection);
+ myCommand->Connection->Open();
+ myCommand->ExecuteScalar();
+ myConnection->Close();
+ }
+
+
+
+
+
+
+
+
+
+ Creates a prepared version of the command on an instance of MySQL Server.
+
+
+ Prepared statements are only supported on MySQL version 4.1 and higher. Calling
+ prepare while connected to earlier versions of MySQL will succeed but will execute
+ the statement in the same way as unprepared.
+
+
+ The following example demonstrates the use of the Prepare method.
+
+ public sub PrepareExample()
+ Dim cmd as New MySqlCommand("INSERT INTO mytable VALUES (@val)", myConnection)
+ cmd.Parameters.Add( "@val", 10 )
+ cmd.Prepare()
+ cmd.ExecuteNonQuery()
+
+ cmd.Parameters(0).Value = 20
+ cmd.ExecuteNonQuery()
+ end sub
+
+
+ private void PrepareExample()
+ {
+ MySqlCommand cmd = new MySqlCommand("INSERT INTO mytable VALUES (@val)", myConnection);
+ cmd.Parameters.Add( "@val", 10 );
+ cmd.Prepare();
+ cmd.ExecuteNonQuery();
+
+ cmd.Parameters[0].Value = 20;
+ cmd.ExecuteNonQuery();
+ }
+
+
+
+
+
+ Initiates the asynchronous execution of the SQL statement or stored procedure
+ that is described by this , and retrieves one or more
+ result sets from the server.
+
+ An that can be used to poll, wait for results,
+ or both; this value is also needed when invoking EndExecuteReader,
+ which returns a instance that can be used to retrieve
+ the returned rows.
+
+
+
+ Initiates the asynchronous execution of the SQL statement or stored procedure
+ that is described by this using one of the
+ CommandBehavior values.
+
+ One of the values, indicating
+ options for statement execution and data retrieval.
+ An that can be used to poll, wait for results,
+ or both; this value is also needed when invoking EndExecuteReader,
+ which returns a instance that can be used to retrieve
+ the returned rows.
+
+
+
+ Finishes asynchronous execution of a SQL statement, returning the requested
+ .
+
+ The returned by the call to
+ .
+ A MySqlDataReader object that can be used to retrieve the requested rows.
+
+
+
+ Initiates the asynchronous execution of the SQL statement or stored procedure
+ that is described by this .
+
+
+ An delegate that is invoked when the command's
+ execution has completed. Pass a null reference (Nothing in Visual Basic)
+ to indicate that no callback is required.
+ A user-defined state object that is passed to the
+ callback procedure. Retrieve this object from within the callback procedure
+ using the property.
+ An that can be used to poll or wait for results,
+ or both; this value is also needed when invoking ,
+ which returns the number of affected rows.
+
+
+
+ Initiates the asynchronous execution of the SQL statement or stored procedure
+ that is described by this .
+
+ An that can be used to poll or wait for results,
+ or both; this value is also needed when invoking ,
+ which returns the number of affected rows.
+
+
+
+ Finishes asynchronous execution of a SQL statement.
+
+ The returned by the call
+ to .
+
+
+
+
+ Verifies if a query is valid even if it has not spaces or is a stored procedure call
+
+ Query to validate
+ If it is necessary to add call statement
+
+
+
+ Creates a clone of this object. CommandText, Connection, and Transaction properties
+ are included as well as the entire parameter list.
+
+ The cloned object.
+
+
+
+ Summary description for API.
+
+
+
+
+ Summary description for CompressedStream.
+
+
+
+
+ Represents an open connection to a MySQL Server database. This class cannot be inherited.
+
+
+ A MySqlConnection object represents a session to a MySQL Server
+ data source. When you create an instance of MySqlConnection, all
+ properties are set to their initial values. For a list of these values, see the
+ MySqlConnection constructor.
+
+
+
+ If the MySqlConnection goes out of scope, it is not closed. Therefore,
+ you must explicitly close the connection by calling
+ or .
+
+
+ The following example creates a and
+ a MySqlConnection. The MySqlConnection is opened and set as the
+ for the MySqlCommand. The example then calls
+ , and closes the connection. To accomplish this, the ExecuteNonQuery is
+ passed a connection string and a query string that is a SQL INSERT
+ statement.
+
+
+ Public Sub InsertRow(myConnectionString As String)
+ ' If the connection string is null, use a default.
+ If myConnectionString = "" Then
+ myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass"
+ End If
+ Dim myConnection As New MySqlConnection(myConnectionString)
+ Dim myInsertQuery As String = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)"
+ Dim myCommand As New MySqlCommand(myInsertQuery)
+ myCommand.Connection = myConnection
+ myConnection.Open()
+ myCommand.ExecuteNonQuery()
+ myCommand.Connection.Close()
+ End Sub
+
+
+
+
+ public void InsertRow(string myConnectionString)
+ {
+ // If the connection string is null, use a default.
+ if(myConnectionString == "")
+ {
+ myConnectionString = "Database=Test;Data Source=localhost;User Id=username;Password=pass";
+ }
+ MySqlConnection myConnection = new MySqlConnection(myConnectionString);
+ string myInsertQuery = "INSERT INTO Orders (id, customerId, amount) Values(1001, 23, 30.66)";
+ MySqlCommand myCommand = new MySqlCommand(myInsertQuery);
+ myCommand.Connection = myConnection;
+ myConnection.Open();
+ myCommand.ExecuteNonQuery();
+ myCommand.Connection.Close();
+ }
+
+
+
+
+
+
+ The client used to handle SSH connections.
+
+
+
+ Occurs when MySQL returns warnings as a result of executing a command or query.
+
+
+
+
+ Initializes a new instance of the class.
+
+ When a new instance of is created, the read/write
+ properties are set to the following initial values unless they are specifically
+ set using their associated keywords in the property.
+
+
+
+ Properties
+ Initial Value
+
+ -
+
+
+
+ empty string ("")
+
+ -
+
+
+
+ 15
+
+ -
+
+
+
+ empty string ("")
+
+ -
+
+
+
+ empty string ("")
+
+ -
+
+
+
+ empty string ("")
+
+
+
+ You can change the value for these properties only by using the ConnectionString property.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+
+ Initializes a new instance of the class when given a string containing the connection string.
+
+ When a new instance of is created, the read/write
+ properties are set to the following initial values unless they are specifically
+ set using their associated keywords in the property.
+
+
+
+ Properties
+ Initial Value
+
+ -
+
+
+
+ empty string ("")
+
+ -
+
+
+
+ 15
+
+ -
+
+
+
+ empty string ("")
+
+ -
+
+
+
+ empty string ("")
+
+ -
+
+
+
+ empty string ("")
+
+
+
+ You can change the value for these properties only by using the ConnectionString property.
+
+
+ The connection properties used to open the MySQL database.
+
+
+
+
+ Determines whether the connection is a clone of other connection.
+
+
+
+
+ Returns the id of the server thread this connection is executing on
+
+
+
+
+ Gets the name of the MySQL server to which to connect.
+
+
+
+
+ Gets the time to wait while trying to establish a connection before terminating the attempt and generating an error.
+ The value set is less than 0.
+ A value of 0 indicates no limit, and should be avoided in a
+ because an attempt to connect
+ will wait indefinitely.
+
+ The following example creates a MySqlConnection
+ and sets some of its properties in the connection string.
+
+ Public Sub CreateSqlConnection()
+ Dim myConnection As New MySqlConnection()
+ myConnection.ConnectionString = "Persist Security Info=False;Username=user;Password=pass;database=test1;server=localhost;Connect Timeout=30"
+ myConnection.Open()
+ End Sub
+
+
+ public void CreateSqlConnection()
+ {
+ MySqlConnection myConnection = new MySqlConnection();
+ myConnection.ConnectionString = "Persist Security Info=False;Username=user;Password=pass;database=test1;server=localhost;Connect Timeout=30";
+ myConnection.Open();
+ }
+
+
+
+
+ Gets the name of the current database or the database to be used after a connection is opened.The name of the current database or the name of the database to be used after a connection is opened. The default value is an empty string.
+
+ The Database property does not update dynamically.
+ If you change the current database using a SQL statement, then this property
+ may reflect the wrong value. If you change the current database using the
+ method, this property is updated to reflect the new database.
+
+
+ The following example creates a and displays
+ some of its read-only properties.
+
+
+ Public Sub CreateMySqlConnection()
+ Dim myConnString As String = _
+ "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass"
+ Dim myConnection As New MySqlConnection( myConnString )
+ myConnection.Open()
+ MessageBox.Show( "Server Version: " + myConnection.ServerVersion _
+ + ControlChars.NewLine + "Database: " + myConnection.Database )
+ myConnection.ChangeDatabase( "test2" )
+ MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion _
+ + ControlChars.NewLine + "Database: " + myConnection.Database )
+ myConnection.Close()
+ End Sub
+
+
+
+ public void CreateMySqlConnection()
+ {
+ string myConnString =
+ "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass";
+ MySqlConnection myConnection = new MySqlConnection( myConnString );
+ myConnection.Open();
+ MessageBox.Show( "Server Version: " + myConnection.ServerVersion
+ + "\nDatabase: " + myConnection.Database );
+ myConnection.ChangeDatabase( "test2" );
+ MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion
+ + "\nDatabase: " + myConnection.Database );
+ myConnection.Close();
+ }
+
+
+
+
+
+ Indicates if this connection should use compression when communicating with the server.
+
+
+
+ Gets the current state of the connection.
+ A bitwise combination of the values. The default is Closed.
+
+ The allowed state changes are:
+
+ -
+ From Closed to Open, using the Open method of the connection object.
+
+ -
+ From Open to Closed, using either the Close method or the Dispose method of the connection object.
+
+
+
+ The following example creates a , opens it,
+ displays some of its properties, then closes the connection.
+
+
+ Public Sub CreateMySqlConnection(myConnString As String)
+ Dim myConnection As New MySqlConnection(myConnString)
+ myConnection.Open()
+ MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _
+ + ControlChars.Cr + "State: " + myConnection.State.ToString())
+ myConnection.Close()
+ End Sub
+
+
+ public void CreateMySqlConnection(string myConnString)
+ {
+ MySqlConnection myConnection = new MySqlConnection(myConnString);
+ myConnection.Open();
+ MessageBox.Show("ServerVersion: " + myConnection.ServerVersion +
+ "\nState: " + myConnection.State.ToString());
+ myConnection.Close();
+ }
+
+
+
+
+ Gets a string containing the version of the MySQL server to which the client is connected.The version of the instance of MySQL.The connection is closed.
+ The following example creates a , opens it,
+ displays some of its properties, then closes the connection.
+
+
+ Public Sub CreateMySqlConnection(myConnString As String)
+ Dim myConnection As New MySqlConnection(myConnString)
+ myConnection.Open()
+ MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _
+ + ControlChars.Cr + "State: " + myConnection.State.ToString())
+ myConnection.Close()
+ End Sub
+
+
+ public void CreateMySqlConnection(string myConnString)
+ {
+ MySqlConnection myConnection = new MySqlConnection(myConnString);
+ myConnection.Open();
+ MessageBox.Show("ServerVersion: " + myConnection.ServerVersion +
+ "\nState: " + myConnection.State.ToString());
+ myConnection.Close();
+ }
+
+
+
+
+
+ Gets or sets the string used to connect to a MySQL Server database.
+
+
+ The ConnectionString returned may not be exactly like what was originally
+ set but will be indentical in terms of keyword/value pairs. Security information
+ will not be included unless the Persist Security Info value is set to true.
+
+
+ You can use the ConnectionString property to connect to a database.
+ The following example illustrates a typical connection string.
+
+ "Persist Security Info=False;database=MyDB;server=MySqlServer;user id=myUser;Password=myPass"
+
+ The ConnectionString property can be set only when the connection is
+ closed. Many of the connection string values have corresponding read-only
+ properties. When the connection string is set, all of these properties are
+ updated, except when an error is detected. In this case, none of the properties
+ are updated. properties return only those settings contained in the
+ ConnectionString.
+
+
+ To connect to a local machine, specify "localhost" for the server. If you do not
+ specify a server, localhost is assumed.
+
+
+ Resetting the ConnectionString on a closed connection resets all
+ connection string values (and related properties) including the password. For
+ example, if you set a connection string that includes "Database= MyDb", and
+ then reset the connection string to "Data Source=myserver;User Id=myUser;Password=myPass",
+ the property is no longer set to MyDb.
+
+
+ The connection string is parsed immediately after being set. If errors in
+ syntax are found when parsing, a runtime exception, such as ,
+ is generated. Other errors can be found only when an attempt is made to open the
+ connection.
+
+
+ The basic format of a connection string consists of a series of keyword/value
+ pairs separated by semicolons. The equal sign (=) connects each keyword and its
+ value. To include values that contain a semicolon, single-quote character, or
+ double-quote character, the value must be enclosed in double quotes. If the
+ value contains both a semicolon and a double-quote character, the value can be
+ enclosed in single quotes. The single quote is also useful if the value begins
+ with a double-quote character. Conversely, the double quote can be used if the
+ value begins with a single quote. If the value contains both single-quote and
+ double-quote characters, the quote character used to enclose the value must be
+ doubled each time it occurs within the value.
+
+
+ To include preceding or trailing spaces in the string value, the value must
+ be enclosed in either single quotes or double quotes. Any leading or trailing
+ spaces around integer, Boolean, or enumerated values are ignored, even if
+ enclosed in quotes. However, spaces within a string literal keyword or value are
+ preserved. Using .NET Framework version 1.1, single or double quotes may be used
+ within a connection string without using delimiters (for example, Data Source=
+ my'Server or Data Source= my"Server), unless a quote character is the first or
+ last character in the value.
+
+
+ To include an equal sign (=) in a keyword or value, it must be preceded by
+ another equal sign. For example, in the hypothetical connection string
+
+ "key==word=value"
+
+ the keyword is "key=word" and the value is "value".
+
+ If a specific keyword in a keyword= value pair occurs multiple times in a
+ connection string, the last occurrence listed is used in the value set.
+
+ Keywords are not case sensitive.
+
+ The following table lists the valid names for keyword values within the
+ ConnectionString.
+
+
+
+
+
+ Name |
+ Default |
+ Description |
+
+
+
+ Connect Timeout -or- Connection Timeout
+ |
+ 15 |
+
+ The length of time (in seconds) to wait for a connection to the server before
+ terminating the attempt and generating an error.
+ |
+
+
+
+ Host -or- Server -or- Data Source -or-
+ DataSource -or- Address -or- Addr -or-
+ Network Address
+ |
+ localhost |
+
+
+ The name or network address of the instance of MySQL to which to connect. Multiple hosts can be
+ specified separated by &. This can be useful where multiple MySQL servers are configured for replication
+ and you are not concerned about the precise server you are connecting to. No attempt is made by the provider to
+ synchronize writes to the database so care should be taken when using this option.
+
+
+ In Unix environment with Mono, this can be a fully qualified path to MySQL socket filename. With this configuration, the Unix socket will be used instead of TCP/IP socket.
+ Currently only a single socket name can be given so accessing MySQL in a replicated environment using Unix sockets is not currently supported.
+
+ |
+
+
+ Port |
+ 3306 |
+
+ The port MySQL is using to listen for connections. This value is ignored if the connection protocol
+ is anything but socket.
+ |
+
+
+ Protocol |
+ socket |
+
+ Specifies the type of connection to make to the server.Values can be:
+ socket or tcp for a socket connection
+ pipe for a named pipe connection
+ unix for a Unix socket connection
+ memory to use MySQL shared memory
+ |
+
+
+
+ CharSet -or Character Set
+ |
+ |
+
+ Specifies the character set that should be used to encode all queries sent to the server.
+ Resultsets are still returned in the character set of the data returned.
+ |
+
+
+ Logging |
+ false |
+ When true, various pieces of information is output to any configured TraceListeners. |
+
+
+ Allow Batch |
+ true |
+
+ When true, multiple SQL statements can be sent with one command execution.
+ -Note-
+ Starting with MySQL 4.1.1, batch statements should be separated by the server-defined seperator character.
+ Commands sent to earlier versions of MySQL should be seperated with ';'.
+ |
+
+
+ Encrypt |
+ false |
+
+ When true, SSL/TLS encryption is used for all data sent between the
+ client and server if the server has a certificate installed. Recognized values
+ are true, false, yes, and no.
+ |
+
+
+
+ Initial Catalog -or- Database
+ |
+ mysql |
+ The name of the database to use intially |
+
+
+
+ Password -or- pwd
+ |
+ |
+ The password for the MySQL account being used. |
+
+
+ Persist Security Info |
+ false |
+
+ When set to false or no (strongly recommended), security-sensitive
+ information, such as the password, is not returned as part of the connection if
+ the connection is open or has ever been in an open state. Resetting the
+ connection string resets all connection string values including the password.
+ Recognized values are true, false, yes, and no.
+ |
+
+
+
+ User Id -or- Username -or- Uid -or- User name
+ |
+ |
+ The MySQL login account being used. |
+
+
+ Shared Memory Name |
+ MYSQL |
+ The name of the shared memory object to use for communication if the connection protocol is set to memory. |
+
+
+ Allow Zero Datetime |
+ false |
+
+ True to have MySqlDataReader.GetValue() return a MySqlDateTime for date or datetime columns that have illegal values.
+ False will cause a DateTime object to be returned for legal values and an exception will be thrown for illegal values.
+ |
+
+
+ Convert Zero Datetime |
+ false |
+
+ True to have MySqlDataReader.GetValue() and MySqlDataReader.GetDateTime()
+ return DateTime.MinValue for date or datetime columns that have illegal values.
+ |
+
+
+
+ Pipe Name -or- Pipe
+ |
+ mysql |
+
+ When set to the name of a named pipe, the MySqlConnection will attempt to connect to MySQL
+ on that named pipe.
This settings only applies to the Windows platform.
+ |
+
+
+
+ Use Performance Monitor -or- UsePerformanceMonitor
+ |
+ false |
+
+ Posts performance data that can be tracked using perfmon
+ |
+
+
+
+ Procedure Cache Size
+ |
+ 25 |
+
+ How many stored procedure definitions can be held in the cache
+ |
+
+
+
+ Ignore Prepare
+ |
+ false |
+
+ [This option has been deprecated since version 8.0.23.] Instructs the provider to ignore any attempts to prepare commands. This option
+ was added to allow a user to disable prepared statements in an entire application
+ without modifying the code. A user might want to do this if errors or bugs are
+ encountered with MySQL prepared statements.
+ |
+
+
+ Use Procedure Bodies |
+ true |
+
+ Instructs the provider to attempt to call the procedure without first resolving the metadata. This
+ is useful in situations where the calling user does not have access to the mysql.proc table. To
+ use this mode, the parameters for the procedure must be added to the command in the same order
+ as they appear in the procedure definition and their types must be explicitly set.
+ |
+
+
+ Auto Enlist |
+ true |
+
+ Indicates whether the connection should automatically enlist in the current transaction,
+ if there is one.
+ |
+
+
+ Respect Binary Flags |
+ true |
+
+ Indicates whether the connection should respect all binary flags sent to the client
+ as part of column metadata. False will cause the connector to behave like
+ Connector/NET 5.0 and earlier.
+ |
+
+
+ BlobAsUTF8IncludePattern |
+ null |
+
+ Pattern that should be used to indicate which blob columns should be treated as UTF-8.
+ |
+
+
+ BlobAsUTF8ExcludePattern |
+ null |
+
+ Pattern that should be used to indicate which blob columns should not be treated as UTF-8.
+ |
+
+
+ Default Command Timeout |
+ 30 |
+
+ The default timeout that new MySqlCommand objects will use unless changed.
+ |
+
+
+ Allow User Variables |
+ false |
+
+ Should the provider expect user variables in the SQL.
+ |
+
+
+ Interactive -or- Interactive Session |
+ false |
+
+ Should this session be considered interactive?
+ |
+
+
+ Functions Return String |
+ false |
+
+ Set this option to true to force the return value of SQL functions to be string.
+ |
+
+
+ Use Affected Rows |
+ false |
+
+ Set this option to true to cause the affected rows reported to reflect only the
+ rows that are actually changed. By default, the number of rows that are matched
+ is returned.
+ |
+
+
+
+
+ The following table lists the valid names for connection pooling values within
+ the ConnectionString. For more information about connection pooling, see
+ Connection Pooling for the MySql Data Provider.
+
+
+
+
+ Name |
+ Default |
+ Description |
+
+
+ Connection Lifetime |
+ 0 |
+
+ When a connection is returned to the pool, its creation time is compared with
+ the current time, and the connection is destroyed if that time span (in seconds)
+ exceeds the value specified by Connection Lifetime. This is useful in
+ clustered configurations to force load balancing between a running server and a
+ server just brought online.
+
+ A value of zero (0) causes pooled connections to have the maximum connection
+ timeout.
+
+ |
+
+
+ Max Pool Size |
+ 100 |
+ The maximum number of connections allowed in the pool. |
+
+
+ Min Pool Size |
+ 0 |
+ The minimum number of connections allowed in the pool. |
+
+
+ Pooling |
+ true |
+
+ When true, the MySqlConnection object is drawn from the appropriate
+ pool, or if necessary, is created and added to the appropriate pool. Recognized
+ values are true, false, yes, and no.
+ |
+
+
+ Connection Reset |
+ false |
+
+ Specifies whether the database connection should be reset when being
+ drawn from the pool. Leaving this as false will yeild much faster
+ connection opens but the user should understand the side effects
+ of doing this such as temporary tables and user variables from the previous
+ session not being cleared out.
+ |
+
+
+ Cache Server Properties |
+ false |
+
+ Specifies whether the server variables are cached between pooled connections.
+ On systems where the variables change infrequently and there are lots of
+ connection attempts, this can speed up things dramatically.
+ |
+
+
+
+
+ When setting keyword or connection pooling values that require a Boolean
+ value, you can use 'yes' instead of 'true', and 'no' instead of 'false'.
+
+
+ Note The MySql Data Provider uses the native socket protocol to
+ communicate with MySQL. Therefore, it does not support the use of an ODBC data source name (DSN) when
+ connecting to MySQL because it does not add an ODBC layer.
+
+
+ CAUTION In this release, the application should use caution when constructing a
+ connection string based on user input (for example when retrieving user ID and password information from a
+ dialog box, and appending it to the connection string). The application should
+ ensure that a user cannot embed extra connection string parameters in these
+ values (for example, entering a password as "validpassword;database=somedb" in
+ an attempt to attach to a different database).
+
+
+ The following example creates a and sets some of its properties
+
+ Public Sub CreateConnection()
+ Dim myConnection As New MySqlConnection()
+ myConnection.ConnectionString = "Persist Security Info=False;database=myDB;server=myHost;Connect Timeout=30;user id=myUser; pwd=myPass"
+ myConnection.Open()
+ End Sub 'CreateConnection
+
+
+ public void CreateConnection()
+ {
+ MySqlConnection myConnection = new MySqlConnection();
+ myConnection.ConnectionString = "Persist Security Info=False;database=myDB;server=myHost;Connect Timeout=30;user id=myUser; pwd=myPass";
+ myConnection.Open();
+ }
+
+
+ The following example creates a in Unix environment with Mono installed. MySQL socket filename used in this example is "/var/lib/mysql/mysql.sock". The actual filename depends on your MySQL configuration.
+
+ Public Sub CreateConnection()
+ Dim myConnection As New MySqlConnection()
+ myConnection.ConnectionString = "database=myDB;server=/var/lib/mysql/mysql.sock;user id=myUser; pwd=myPass"
+ myConnection.Open()
+ End Sub 'CreateConnection
+
+
+ public void CreateConnection()
+ {
+ MySqlConnection myConnection = new MySqlConnection();
+ myConnection.ConnectionString = "database=myDB;server=/var/lib/mysql/mysql.sock;user id=myUser; pwd=myPass";
+ myConnection.Open();
+ }
+
+
+
+
+
+ Gets a boolean value that indicates whether the password associated to the connection is expired.
+
+
+
+ Begins a database transaction.An object representing the new transaction.Parallel transactions are not supported.
+ This command is equivalent to the MySQL BEGIN TRANSACTION command.
+
+ You must explicitly commit or roll back the transaction using the or
+ method.
+
+ If you do not specify an isolation level, the default isolation level is used. To specify an isolation
+ level with the method, use the overload that takes the iso parameter. Also
+ note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher.
+ On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status.
+
+
+
+ The following example creates a and a
+ . It also demonstrates how to use the BeginTransaction, a
+ , and methods.
+
+ Public Sub RunTransaction(myConnString As String)
+ Dim myConnection As New MySqlConnection(myConnString)
+ myConnection.Open()
+
+ Dim myCommand As MySqlCommand = myConnection.CreateCommand()
+ Dim myTrans As MySqlTransaction
+
+ ' Start a local transaction
+ myTrans = myConnection.BeginTransaction()
+ ' Must assign both transaction object and connection
+ ' to Command object for a pending local transaction
+ myCommand.Connection = myConnection
+ myCommand.Transaction = myTrans
+
+ Try
+ myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')"
+ myCommand.ExecuteNonQuery()
+ myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')"
+ myCommand.ExecuteNonQuery()
+ myTrans.Commit()
+ Console.WriteLine("Both records are written to database.")
+ Catch e As Exception
+ Try
+ myTrans.Rollback()
+ Catch ex As MySqlException
+ If Not myTrans.Connection Is Nothing Then
+ Console.WriteLine("An exception of type " + ex.GetType().ToString() + _
+ " was encountered while attempting to roll back the transaction.")
+ End If
+ End Try
+
+ Console.WriteLine("An exception of type " + e.GetType().ToString() + _
+ "was encountered while inserting the data.")
+ Console.WriteLine("Neither record was written to database.")
+ Finally
+ myConnection.Close()
+ End Try
+ End Sub
+
+
+ public void RunTransaction(string myConnString)
+ {
+ MySqlConnection myConnection = new MySqlConnection(myConnString);
+ myConnection.Open();
+
+ MySqlCommand myCommand = myConnection.CreateCommand();
+ MySqlTransaction myTrans;
+
+ // Start a local transaction
+ myTrans = myConnection.BeginTransaction();
+ // Must assign both transaction object and connection
+ // to Command object for a pending local transaction
+ myCommand.Connection = myConnection;
+ myCommand.Transaction = myTrans;
+
+ try
+ {
+ myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')";
+ myCommand.ExecuteNonQuery();
+ myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')";
+ myCommand.ExecuteNonQuery();
+ myTrans.Commit();
+ Console.WriteLine("Both records are written to database.");
+ }
+ catch(Exception e)
+ {
+ try
+ {
+ myTrans.Rollback();
+ }
+ catch (SqlException ex)
+ {
+ if (myTrans.Connection != null)
+ {
+ Console.WriteLine("An exception of type " + ex.GetType() +
+ " was encountered while attempting to roll back the transaction.");
+ }
+ }
+
+ Console.WriteLine("An exception of type " + e.GetType() +
+ " was encountered while inserting the data.");
+ Console.WriteLine("Neither record was written to database.");
+ }
+ finally
+ {
+ myConnection.Close();
+ }
+ }
+
+
+
+
+ Begins a database transaction with the specified isolation level.The isolation level under which the transaction should run. The scope of the transaction. An object representing the new transaction.Parallel exceptions are not supported.
+ This command is equivalent to the MySQL BEGIN TRANSACTION command.
+
+ You must explicitly commit or roll back the transaction using the or
+ method.
+
+ If you do not specify an isolation level, the default isolation level is used. To specify an isolation
+ level with the method, use the overload that takes the iso parameter.
+ Also note that any attempt to begin a transaction while a transaction is in progress will throw an exception on MySQL 4.1 and higher.
+ On MySQL 4.0, an exception will not be thrown because servers 4.0 and earlier did not report their transacation status.
+
+
+
+ The following example creates a and a
+ . It also demonstrates how to use the BeginTransaction, a
+ , and methods.
+
+ Public Sub RunTransaction(myConnString As String)
+ Dim myConnection As New MySqlConnection(myConnString)
+ myConnection.Open()
+
+ Dim myCommand As MySqlCommand = myConnection.CreateCommand()
+ Dim myTrans As MySqlTransaction
+
+ ' Start a local transaction
+ myTrans = myConnection.BeginTransaction()
+ ' Must assign both transaction object and connection
+ ' to Command object for a pending local transaction
+ myCommand.Connection = myConnection
+ myCommand.Transaction = myTrans
+
+ Try
+ myCommand.CommandText = "Insert into Test (id, desc) VALUES (100, 'Description')"
+ myCommand.ExecuteNonQuery()
+ myCommand.CommandText = "Insert into Test (id, desc) VALUES (101, 'Description')"
+ myCommand.ExecuteNonQuery()
+ myTrans.Commit()
+ Console.WriteLine("Both records are written to database.")
+ Catch e As Exception
+ Try
+ myTrans.Rollback()
+ Catch ex As MySqlException
+ If Not myTrans.Connection Is Nothing Then
+ Console.WriteLine("An exception of type " + ex.GetType().ToString() + _
+ " was encountered while attempting to roll back the transaction.")
+ End If
+ End Try
+
+ Console.WriteLine("An exception of type " + e.GetType().ToString() + _
+ "was encountered while inserting the data.")
+ Console.WriteLine("Neither record was written to database.")
+ Finally
+ myConnection.Close()
+ End Try
+ End Sub
+
+
+ public void RunTransaction(string myConnString)
+ {
+ MySqlConnection myConnection = new MySqlConnection(myConnString);
+ myConnection.Open();
+
+ MySqlCommand myCommand = myConnection.CreateCommand();
+ MySqlTransaction myTrans;
+
+ // Start a local transaction
+ myTrans = myConnection.BeginTransaction();
+ // Must assign both transaction object and connection
+ // to Command object for a pending local transaction
+ myCommand.Connection = myConnection;
+ myCommand.Transaction = myTrans;
+
+ try
+ {
+ myCommand.CommandText = "insert into Test (id, desc) VALUES (100, 'Description')";
+ myCommand.ExecuteNonQuery();
+ myCommand.CommandText = "insert into Test (id, desc) VALUES (101, 'Description')";
+ myCommand.ExecuteNonQuery();
+ myTrans.Commit();
+ Console.WriteLine("Both records are written to database.");
+ }
+ catch(Exception e)
+ {
+ try
+ {
+ myTrans.Rollback();
+ }
+ catch (SqlException ex)
+ {
+ if (myTrans.Connection != null)
+ {
+ Console.WriteLine("An exception of type " + ex.GetType() +
+ " was encountered while attempting to roll back the transaction.");
+ }
+ }
+
+ Console.WriteLine("An exception of type " + e.GetType() +
+ " was encountered while inserting the data.");
+ Console.WriteLine("Neither record was written to database.");
+ }
+ finally
+ {
+ myConnection.Close();
+ }
+ }
+
+
+
+
+ Changes the current database for an open MySqlConnection.The name of the database to use.
+
+ The value supplied in the database parameter must be a valid database
+ name. The database parameter cannot contain a null value, an empty
+ string, or a string with only blank characters.
+
+
+
+ When you are using connection pooling against MySQL, and you close
+ the connection, it is returned to the connection pool. The next time the
+ connection is retrieved from the pool, the reset connection request
+ executes before the user performs any operations.
+
+ The database name is not valid.The connection is not open.Cannot change the database.
+ The following example creates a and displays
+ some of its read-only properties.
+
+
+ Public Sub CreateMySqlConnection()
+ Dim myConnString As String = _
+ "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass"
+ Dim myConnection As New MySqlConnection( myConnString )
+ myConnection.Open()
+ MessageBox.Show( "Server Version: " + myConnection.ServerVersion _
+ + ControlChars.NewLine + "Database: " + myConnection.Database )
+ myConnection.ChangeDatabase( "test2" )
+ MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion _
+ + ControlChars.NewLine + "Database: " + myConnection.Database )
+ myConnection.Close()
+ End Sub
+
+
+
+ public void CreateMySqlConnection()
+ {
+ string myConnString =
+ "Persist Security Info=False;database=test;server=localhost;user id=joeuser;pwd=pass";
+ MySqlConnection myConnection = new MySqlConnection( myConnString );
+ myConnection.Open();
+ MessageBox.Show( "Server Version: " + myConnection.ServerVersion
+ + "\nDatabase: " + myConnection.Database );
+ myConnection.ChangeDatabase( "test2" );
+ MessageBox.Show( "ServerVersion: " + myConnection.ServerVersion
+ + "\nDatabase: " + myConnection.Database );
+ myConnection.Close();
+ }
+
+
+
+
+
+ Pings the server.
+
+ true if the ping was successful; otherwise, false.
+
+
+ Opens a database connection with the property settings specified by the ConnectionString.Cannot open a connection without specifying a data source or server.A connection-level error occurred while opening the connection.
+
+ The draws an open connection from the connection pool if one is available.
+ Otherwise, it establishes a new connection to an instance of MySQL.
+
+
+ The following example creates a , opens it,
+ displays some of its properties, then closes the connection.
+
+
+ Public Sub CreateMySqlConnection(myConnString As String)
+ Dim myConnection As New MySqlConnection(myConnString)
+ myConnection.Open()
+ MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _
+ + ControlChars.Cr + "State: " + myConnection.State.ToString())
+ myConnection.Close()
+ End Sub
+
+
+ public void CreateMySqlConnection(string myConnString)
+ {
+ MySqlConnection myConnection = new MySqlConnection(myConnString);
+ myConnection.Open();
+ MessageBox.Show("ServerVersion: " + myConnection.ServerVersion +
+ "\nState: " + myConnection.State.ToString());
+ myConnection.Close();
+ }
+
+
+
+
+
+ Creates and returns a object associated with the .
+
+ A object.
+
+
+
+ Closes the connection to the database. This is the preferred method of closing any open connection.
+
+ The Close method rolls back any pending transactions. It then releases
+ the connection to the connection pool, or closes the connection if connection
+ pooling is disabled.
+
+
+ An application can call Close more than one time. No exception is
+ generated.
+
+
+ The following example creates a , opens it,
+ displays some of its properties, then closes the connection.
+
+
+ Public Sub CreateMySqlConnection(myConnString As String)
+ Dim myConnection As New MySqlConnection(myConnString)
+ myConnection.Open()
+ MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _
+ + ControlChars.Cr + "State: " + myConnection.State.ToString())
+ myConnection.Close()
+ End Sub
+
+
+ public void CreateMySqlConnection(string myConnString)
+ {
+ MySqlConnection myConnection = new MySqlConnection(myConnString);
+ myConnection.Open();
+ MessageBox.Show("ServerVersion: " + myConnection.ServerVersion +
+ "\nState: " + myConnection.State.ToString());
+ myConnection.Close();
+ }
+
+
+
+
+
+ Cancels the query after the specified time interval.
+
+ The length of time (in seconds) to wait for the cancelation of the command execution.
+
+
+
+ Sets query timeout. If timeout has been set prior and not
+ yet cleared ClearCommandTimeout(), it has no effect.
+
+ timeout in seconds
+ true if
+
+
+
+ Clears query timeout, allowing next SetCommandTimeout() to succeed.
+
+
+
+
+ Gets a schema collection based on the provided restriction values.
+
+ The name of the collection.
+ The values to restrict.
+ A schema collection object.
+
+
+ Empties the connection pool associated with the specified connection.
+ The associated with the pool to be cleared.
+
+
+ ClearPool clears the connection pool that is associated with the connection.
+ If additional connections associated with connection are in use at the time of the call,
+ they are marked appropriately and are discarded (instead of being returned to the pool)
+ when Close is called on them.
+
+
+
+
+ Clears all connection pools.
+
+ ClearAllPools essentially performs a on all current connection
+ pools.
+
+
+
+
+
+ Initiates the asynchronous execution of a transaction.
+
+ An object representing the new transaction.
+
+
+
+ Asynchronous version of BeginTransaction.
+
+ The cancellation token.
+ An object representing the new transaction.
+
+
+
+ Asynchronous version of BeginTransaction.
+
+ The isolation level under which the transaction should run.
+ An object representing the new transaction.
+
+
+
+ Asynchronous version of BeginTransaction.
+
+ The isolation level under which the transaction should run.
+ The cancellation token.
+ An object representing the new transaction.
+
+
+
+ Asynchronous version of the ChangeDataBase method.
+
+ The name of the database to use.
+
+
+
+
+ Asynchronous version of the ChangeDataBase method.
+
+ The name of the database to use.
+ The cancellation token.
+
+
+
+
+ Asynchronous version of the Close method.
+
+
+
+
+ Asynchronous version of the Close method.
+
+ The cancellation token.
+
+
+
+ Asynchronous version of the ClearPool method.
+
+ The connection associated with the pool to be cleared.
+
+
+
+ Asynchronous version of the ClearPool method.
+
+ The connection associated with the pool to be cleared.
+ The cancellation token.
+
+
+
+ Asynchronous version of the ClearAllPools method.
+
+
+
+
+ Asynchronous version of the ClearAllPools method.
+
+ The cancellation token.
+
+
+
+ Asynchronous version of the GetSchemaCollection method.
+
+ The name of the collection.
+ The values to restrict.
+ A collection of schema objects.
+
+
+
+ Asynchronous version of the GetSchemaCollection method.
+
+ The name of the collection.
+ The values to restrict.
+ The cancellation token.
+ A collection of schema objects.
+
+
+
+ Returns schema information for the data source of this .
+
+ A that contains schema information.
+
+
+
+ Returns schema information for the data source of this
+ using the specified string for the schema name.
+
+ Specifies the name of the schema to return.
+ A that contains schema information.
+
+
+
+ Returns schema information for the data source of this
+ using the specified string for the schema name and the specified string array
+ for the restriction values.
+
+ Specifies the name of the schema to return.
+ Specifies a set of restriction values for the requested schema.
+ A that contains schema information.
+
+
+
+ Enlists in the specified transaction.
+
+
+ A reference to an existing in which to enlist.
+
+
+
+
+ Creates a new MySqlConnection object with the exact same ConnectionString value
+
+ A cloned MySqlConnection object
+
+
+
+ Represents the method that will handle the event of a
+ .
+
+
+
+
+ Provides data for the InfoMessage event. This class cannot be inherited.
+
+
+
+
+ Gets or sets an array of objects set with the errors found.
+
+
+
+
+ IDisposable wrapper around SetCommandTimeout and ClearCommandTimeout functionality.
+
+
+
+
+ Summary description for Crypt.
+
+
+
+
+ Simple XOR scramble
+
+ Source array
+ Index inside source array
+ Destination array
+ Index inside destination array
+ Password used to xor the bits
+ Number of bytes to scramble
+
+
+
+ Returns a byte array containing the proper encryption of the
+ given password/seed according to the new 4.1.1 authentication scheme.
+
+
+
+
+
+
+
+ Encrypts a password using the MySql encryption scheme
+
+ The password to encrypt
+ The encryption seed the server gave us
+ Indicates if we should use the old or new encryption scheme
+
+
+
+
+ Hashes a password using the algorithm from Monty's code.
+ The first element in the return is the result of the "old" hash.
+ The second element is the rest of the "new" hash.
+
+ Password to be hashed
+ Two element array containing the hashed values
+
+
+
+ Provides a means of reading a forward-only stream of rows from a MySQL database. This class cannot be inherited.
+
+
+ To create a MySQLDataReader, you must call the
+ method of the object, rather than directly using a constructor.
+
+
+ While the MySqlDataReader is in use, the associated
+ is busy serving the MySqlDataReader, and no other operations can be performed
+ on the MySqlConnection other than closing it. This is the case until the
+ method of the MySqlDataReader is called.
+
+
+ and
+ are the only properties that you can call after the MySqlDataReader is
+ closed. Though the RecordsAffected property may be accessed at any time
+ while the MySqlDataReader exists, always call Close before returning
+ the value of RecordsAffected to ensure an accurate return value.
+
+
+ For optimal performance, MySqlDataReader avoids creating
+ unnecessary objects or making unnecessary copies of data. As a result, multiple calls
+ to methods such as return a reference to the
+ same object. Use caution if you are modifying the underlying value of the objects
+ returned by methods such as GetValue.
+
+
+ The following example creates a ,
+ a , and a MySqlDataReader. The example reads through
+ the data, writing it out to the console. Finally, the example closes the MySqlDataReader, then the
+ MySqlConnection.
+
+ Public Sub ReadMyData(myConnString As String)
+ Dim mySelectQuery As String = "SELECT OrderID, CustomerID FROM Orders"
+ Dim myConnection As New MySqlConnection(myConnString)
+ Dim myCommand As New MySqlCommand(mySelectQuery, myConnection)
+ myConnection.Open()
+ Dim myReader As MySqlDataReader
+ myReader = myCommand.ExecuteReader()
+ ' Always call Read before accessing data.
+ While myReader.Read()
+ Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1)))
+ End While
+ ' always call Close when done reading.
+ myReader.Close()
+ ' Close the connection when done with it.
+ myConnection.Close()
+ End Sub 'ReadMyData
+
+
+ public void ReadMyData(string myConnString) {
+ string mySelectQuery = "SELECT OrderID, CustomerID FROM Orders";
+ MySqlConnection myConnection = new MySqlConnection(myConnString);
+ MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection);
+ myConnection.Open();
+ MySqlDataReader myReader;
+ myReader = myCommand.ExecuteReader();
+ // Always call Read before accessing data.
+ while (myReader.Read()) {
+ Console.WriteLine(myReader.GetInt32(0) + ", " + myReader.GetString(1));
+ }
+ // always call Close when done reading.
+ myReader.Close();
+ // Close the connection when done with it.
+ myConnection.Close();
+ }
+
+
+
+
+
+ Gets the number of columns in the current row.
+
+
+
+
+ Gets a value indicating whether the MySqlDataReader contains one or more rows.
+
+
+
+
+ Gets a value indicating whether the data reader is closed.
+
+
+
+
+ Gets the number of rows changed, inserted, or deleted by execution of the SQL statement.
+
+
+
+
+ Overloaded. Gets the value of a column in its native format.
+ In C#, this property is the indexer for the MySqlDataReader class.
+
+
+
+
+ Gets the value of a column in its native format.
+ [C#] In C#, this property is the indexer for the MySqlDataReader class.
+
+
+
+
+ Gets a value indicating the depth of nesting for the current row. This method is not
+ supported currently and always returns 0.
+
+
+
+
+ Closes the MySqlDataReader object.
+
+
+
+
+ Gets the value of the specified column as a Boolean.
+
+
+
+
+
+
+ Gets the value of the specified column as a Boolean.
+
+
+
+
+
+
+ Gets the value of the specified column as a byte.
+
+
+
+
+
+
+ Gets the value of the specified column as a byte.
+
+
+
+
+
+
+ Gets the value of the specified column as a sbyte.
+
+
+
+
+
+
+ Gets the value of the specified column as a sbyte.
+
+
+
+
+
+
+ Reads a stream of bytes from the specified column offset into the buffer an array starting at the given buffer offset.
+
+ The zero-based column ordinal.
+ The index within the field from which to begin the read operation.
+ The buffer into which to read the stream of bytes.
+ The index for buffer to begin the read operation.
+ The maximum length to copy into the buffer.
+ The actual number of bytes read.
+
+
+
+
+ Gets the value of the specified column as a single character.
+
+
+
+
+
+
+ Gets the value of the specified column as a single character.
+
+
+
+
+
+
+ Reads a stream of characters from the specified column offset into the buffer as an array starting at the given buffer offset.
+
+
+
+
+
+
+
+
+
+
+ Gets the name of the source data type.
+
+
+
+
+
+
+ Gets the value of the specified column as a object.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a DateTime object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal or column name.The value of the specified column.
+
+
+
+ Gets the value of the specified column as a object.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a DateTime object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal or column name.The value of the specified column.
+
+
+
+ Gets the value of the specified column as a object.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a DateTime object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+
+
+ MySql allows date columns to contain the value '0000-00-00' and datetime
+ columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain
+ or represent these values. To read a datetime value from a column that might
+ contain zero values, use .
+
+
+ The behavior of reading a zero datetime column using this method is defined by the
+ ZeroDateTimeBehavior connection string option. For more information on this option,
+ please refer to .
+
+
+ The column name.The value of the specified column.
+
+
+
+ Gets the value of the specified column as a object.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a DateTime object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+
+
+ MySql allows date columns to contain the value '0000-00-00' and datetime
+ columns to contain the value '0000-00-00 00:00:00'. The DateTime structure cannot contain
+ or represent these values. To read a datetime value from a column that might
+ contain zero values, use .
+
+
+ The behavior of reading a zero datetime column using this method is defined by the
+ ZeroDateTimeBehavior connection string option. For more information on this option,
+ please refer to .
+
+
+ The zero-based column ordinal.The value of the specified column.
+
+
+
+ Gets the value of the specified column as a .
+
+ The name of the colum.
+ The value of the specified column as a .
+
+
+
+ Gets the value of the specified column as a .
+
+ The index of the colum.
+ The value of the specified column as a .
+
+
+
+ Gets the value of the specified column as a object.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a Decimal object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The column nameThe value of the specified column.
+
+
+
+ Gets the value of the specified column as a object.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a Decimal object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinalThe value of the specified column.
+
+
+ Gets the value of the specified column as a double-precision floating point number.
+
+ No conversions are performed; therefore, the data retrieved must already be a Double object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The column nameThe value of the specified column.
+
+
+ Gets the value of the specified column as a double-precision floating point number.
+
+ No conversions are performed; therefore, the data retrieved must already be a Double object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal.The value of the specified column.
+
+
+
+ Gets the Type that is the data type of the object.
+
+
+
+
+
+
+ Gets the value of the specified column as a single-precision floating point number.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a Float object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The column nameThe value of the specified column.
+
+
+
+ Gets the value of the specified column as a single-precision floating point number.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a Float object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal.The value of the specified column.
+
+
+
+ Gets the value of the specified column as a globally-unique identifier(GUID).
+
+ The name of the column.
+
+
+
+
+
+
+ Gets the value of the specified column as a 16-bit signed integer.
+
+ No conversions are performed; threfore, the data retrieved must already be a 16 bit integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The column nameThe value of the specified column.
+
+
+ Gets the value of the specified column as a 16-bit signed integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 16 bit integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal.The value of the specified column.
+
+
+ Gets the value of the specified column as a 32-bit signed integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 32 bit integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The column name.The value of the specified column.
+
+
+ Gets the value of the specified column as a 32-bit signed integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 32 bit integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal.The value of the specified column.
+
+
+ Gets the value of the specified column as a 64-bit signed integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 64 bit integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The column name.The value of the specified column.
+
+
+ Gets the value of the specified column as a 64-bit signed integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 64 bit integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal.The value of the specified column.
+
+
+
+ Gets the name of the specified column.
+
+
+
+
+
+
+ Gets the column ordinal, given the name of the column.
+
+
+
+
+
+
+ Gets the value of the specified column as a object.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a String object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The column name.The value of the specified column.
+
+
+
+ Gets the value of the specified column as a object.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a String object.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal.The value of the specified column.
+
+
+
+ Gets the value of the specified column as a object.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a Time value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal or column name.The value of the specified column.
+
+
+
+ Gets the value of the specified column as a object.
+
+
+ No conversions are performed; therefore, the data retrieved must already be a Time value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal or column name.The value of the specified column.
+
+
+
+ Gets the value of the specified column in its native format.
+
+
+
+
+
+
+ Gets all attribute columns in the collection for the current row.
+
+
+
+
+
+ Gets the value of the specified column as a 16-bit unsigned integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 16 bit unsigned integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal or column name.The value of the specified column.
+
+
+ Gets the value of the specified column as a 16-bit unsigned integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 16 bit unsigned integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal or column name.The value of the specified column.
+
+
+ Gets the value of the specified column as a 32-bit unsigned integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 32 bit unsigned integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal or column name.The value of the specified column.
+
+
+ Gets the value of the specified column as a 32-bit unsigned integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 32 bit unsigned integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal or column name.The value of the specified column.
+
+
+ Gets the value of the specified column as a 64-bit unsigned integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 64 bit unsigned integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal or column name.The value of the specified column.
+
+
+ Gets the value of the specified column as a 64-bit unsigned integer.
+
+ No conversions are performed; therefore, the data retrieved must already be a 64 bit unsigned integer value.
+
+
+ Call IsDBNull to check for null values before calling this method.
+
+ The zero-based column ordinal or column name.The value of the specified column.
+
+
+
+ Gets a value indicating whether the column contains non-existent or missing values.
+
+
+
+
+
+
+ Advances the data reader to the next result, when reading the results of batch SQL statements.
+
+
+
+
+
+ Advances the MySqlDataReader to the next record.
+
+
+
+
+
+ Gets the value of the specified column as a .
+
+ The index of the colum.
+ The value of the specified column as a .
+
+
+
+ Gets the value of the specified column as a .
+
+ The name of the colum.
+ The value of the specified column as a .
+
+
+
+ Returns an that iterates through the .
+
+
+
+
+ Returns a DataTable that describes the column metadata of the MySqlDataReader.
+
+
+
+
+
+ Summary description for BaseDriver.
+
+
+
+
+ For pooled connections, time when the driver was
+ put into idle queue
+
+
+
+
+ Loads the properties from the connected server into a hashtable
+
+
+
+
+
+
+ Loads all the current character set names and ids for this server
+ into the charSets hashtable
+
+
+
+
+ The exception that is thrown when MySQL returns an error. This class cannot be inherited.
+
+
+
+ This class is created whenever the MySql Data Provider encounters an error generated from the server.
+
+
+ Any open connections are not automatically closed when an exception is thrown. If
+ the client application determines that the exception is fatal, it should close any open
+ objects or objects.
+
+
+ The following example generates a MySqlException due to a missing server,
+ and then displays the exception.
+
+
+ Public Sub ShowException()
+ Dim mySelectQuery As String = "SELECT column1 FROM table1"
+ Dim myConnection As New MySqlConnection ("Data Source=localhost;Database=Sample;")
+ Dim myCommand As New MySqlCommand(mySelectQuery, myConnection)
+
+ Try
+ myCommand.Connection.Open()
+ Catch e As MySqlException
+ MessageBox.Show( e.Message )
+ End Try
+ End Sub
+
+
+ public void ShowException()
+ {
+ string mySelectQuery = "SELECT column1 FROM table1";
+ MySqlConnection myConnection =
+ new MySqlConnection("Data Source=localhost;Database=Sample;");
+ MySqlCommand myCommand = new MySqlCommand(mySelectQuery,myConnection);
+
+ try
+ {
+ myCommand.Connection.Open();
+ }
+ catch (MySqlException e)
+ {
+ MessageBox.Show( e.Message );
+ }
+ }
+
+
+
+
+
+ Gets a number that identifies the type of error.
+
+
+
+
+ True if this exception was fatal and cause the closing of the connection, false otherwise.
+
+
+
+
+ Gets the SQL state.
+
+
+
+
+ Gets an integer that representes the MySQL error code.
+
+
+
+
+ Summary description for Field.
+
+
+
+
+ We are adding a custom installer class to our assembly so our installer
+ can make proper changes to the machine.config file.
+
+
+
+
+ We override Install so we can add our assembly to the proper
+ machine.config files.
+
+
+
+
+
+ We override Uninstall so we can remove out assembly from the
+ machine.config files.
+
+
+
+
+
+ Automatically generates single-table commands used to reconcile changes made to a DataSet with the associated MySQL database. This class cannot be inherited.
+
+
+ The does not automatically generate the SQL statements required to
+ reconcile changes made to a DataSet with the associated instance of MySQL.
+ However, you can create a MySqlCommandBuilder object to automatically generate SQL statements for
+ single-table updates if you set the SelectCommand property
+ of the MySqlDataAdapter. Then, any additional SQL statements that you do not set are generated by the
+ MySqlCommandBuilder.
+
+
+
+ The MySqlCommandBuilder registers itself as a listener for RowUpdating
+ events whenever you set the property. You can only associate one
+ MySqlDataAdapter or MySqlCommandBuilder object with each other at one time.
+
+
+
+ To generate INSERT, UPDATE, or DELETE statements, the MySqlCommandBuilder uses the
+ SelectCommand property to retrieve a required set of metadata automatically. If you change
+ the SelectCommand after the metadata has is retrieved (for example, after the first update), you
+ should call the method to update the metadata.
+
+
+
+ The SelectCommand must also return at least one primary key or unique
+ column. If none are present, an InvalidOperation exception is generated,
+ and the commands are not generated.
+
+
+
+ The MySqlCommandBuilder also uses the Connection,
+ CommandTimeout, and Transaction
+ properties referenced by the SelectCommand. The user should call
+ RefreshSchema if any of these properties are modified, or if the
+ SelectCommand itself is replaced. Otherwise the InsertCommand,
+ UpdateCommand, and
+ DeleteCommand properties retain
+ their previous values.
+
+
+
+ If you call Dispose, the MySqlCommandBuilder is disassociated
+ from the MySqlDataAdapter, and the generated commands are no longer used.
+
+
+
+ Caution must be used when using MySqlCOmmandBuilder on MySql 4.0 systems. With MySql 4.0,
+ database/schema information is not provided to the connector for a query. This means that
+ a query that pulls columns from two identically named tables in two or more different databases
+ will not cause an exception to be thrown but will not work correctly. Even more dangerous
+ is the situation where your select statement references database X but is executed in
+ database Y and both databases have tables with similar layouts. This situation can cause
+ unwanted changes or deletes.
+ This note does not apply to MySQL versions 4.1 and later.
+
+
+
+ The following example uses the , along
+ and , to
+ select rows from a data source. The example is passed an initialized
+ , a connection string, a
+ query string that is a SQL SELECT statement, and a string that is the
+ name of the database table. The example then creates a MySqlCommandBuilder.
+
+
+ Public Shared Function SelectRows(myConnection As String, mySelectQuery As String, myTableName As String) As DataSet
+ Dim myConn As New MySqlConnection(myConnection)
+ Dim myDataAdapter As New MySqlDataAdapter()
+ myDataAdapter.SelectCommand = New MySqlCommand(mySelectQuery, myConn)
+ Dim cb As SqlCommandBuilder = New MySqlCommandBuilder(myDataAdapter)
+
+ myConn.Open()
+
+ Dim ds As DataSet = New DataSet
+ myDataAdapter.Fill(ds, myTableName)
+
+ ' Code to modify data in DataSet here
+
+ ' Without the MySqlCommandBuilder this line would fail.
+ myDataAdapter.Update(ds, myTableName)
+
+ myConn.Close()
+ End Function 'SelectRows
+
+
+ public static DataSet SelectRows(string myConnection, string mySelectQuery, string myTableName)
+ {
+ MySqlConnection myConn = new MySqlConnection(myConnection);
+ MySqlDataAdapter myDataAdapter = new MySqlDataAdapter();
+ myDataAdapter.SelectCommand = new MySqlCommand(mySelectQuery, myConn);
+ MySqlCommandBuilder cb = new MySqlCommandBuilder(myDataAdapter);
+
+ myConn.Open();
+
+ DataSet ds = new DataSet();
+ myDataAdapter.Fill(ds, myTableName);
+
+ //code to modify data in DataSet here
+
+ //Without the MySqlCommandBuilder this line would fail
+ myDataAdapter.Update(ds, myTableName);
+
+ myConn.Close();
+
+ return ds;
+ }
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class
+ with the associated object.
+
+ The to use.
+
+
+ The registers itself as a listener for
+ events that are generated by the
+ specified in this property.
+
+
+ When you create a new instance MySqlCommandBuilder, any existing
+ MySqlCommandBuilder associated with this MySqlDataAdapter
+ is released.
+
+
+
+
+
+ Gets or sets a object for which SQL statements are automatically generated.
+
+ A object.
+
+
+ The registers itself as a listener for
+ events that are generated by the
+ specified in this property.
+
+
+ When you create a new instance MySqlCommandBuilder, any existing
+ MySqlCommandBuilder associated with this MySqlDataAdapter
+ is released.
+
+
+
+
+
+ Retrieves parameter information from the stored procedure specified
+ in the MySqlCommand and populates the Parameters collection of the
+ specified MySqlCommand object.
+ This method is not currently supported since stored procedures are
+ not available in MySql.
+
+ The MySqlCommand referencing the stored
+ procedure from which the parameter information is to be derived.
+ The derived parameters are added to the Parameters collection of the
+ MySqlCommand.
+ The command text is not
+ a valid stored procedure name.
+
+
+
+ Gets the delete command.
+
+
+
+
+
+ Gets the update command.
+
+
+
+
+
+ Gets the insert command.
+
+
+
+
+
+
+
+
+
+
+
+
+ Represents a set of data commands and a database connection that are used to fill a dataset and update a MySQL database. This class cannot be inherited.
+
+
+ The MySQLDataAdapter, serves as a bridge between a
+ and MySQL for retrieving and saving data. The MySQLDataAdapter provides this
+ bridge by mapping , which changes the data in the
+ DataSet to match the data in the data source, and ,
+ which changes the data in the data source to match the data in the DataSet,
+ using the appropriate SQL statements against the data source.
+
+
+ When the MySQLDataAdapter fills a DataSet, it will create the necessary
+ tables and columns for the returned data if they do not already exist. However, primary
+ key information will not be included in the implicitly created schema unless the
+ property is set to .
+ You may also have the MySQLDataAdapter create the schema of the DataSet,
+ including primary key information, before filling it with data using .
+
+
+ MySQLDataAdapter is used in conjunction with
+ and to increase performance when connecting to a MySQL database.
+
+
+ The MySQLDataAdapter also includes the ,
+ , ,
+ , and
+ properties to facilitate the loading and updating of data.
+
+
+ When an instance of MySQLDataAdapter is created, the read/write properties
+ are set to initial values. For a list of these values, see the MySQLDataAdapter
+ constructor.
+
+
+ Please be aware that the class allows only
+ Int16, Int32, and Int64 to have the AutoIncrement property set.
+ If you plan to use autoincremement columns with MySQL, you should consider
+ using signed integer columns.
+
+
+ The following example creates a and a .
+ The MySqlConnection is opened and set as the for the
+ MySqlCommand. The example then calls , and closes
+ the connection. To accomplish this, the ExecuteNonQuery is
+ passed a connection string and a query string that is a SQL INSERT
+ statement.
+
+ Public Function SelectRows(dataSet As DataSet, connection As String, query As String) As DataSet
+ Dim conn As New MySqlConnection(connection)
+ Dim adapter As New MySqlDataAdapter()
+ adapter.SelectCommand = new MySqlCommand(query, conn)
+ adapter.Fill(dataset)
+ Return dataset
+ End Function
+
+
+ public DataSet SelectRows(DataSet dataset,string connection,string query)
+ {
+ MySqlConnection conn = new MySqlConnection(connection);
+ MySqlDataAdapter adapter = new MySqlDataAdapter();
+ adapter.SelectCommand = new MySqlCommand(query, conn);
+ adapter.Fill(dataset);
+ return dataset;
+ }
+
+
+
+
+
+ Occurs during Update before a command is executed against the data source. The attempt to update is made, so the event fires.
+
+
+
+
+ Occurs during Update after a command is executed against the data source. The attempt to update is made, so the event fires.
+
+
+
+
+ Initializes a new instance of the MySqlDataAdapter class.
+
+
+ When an instance of is created,
+ the following read/write properties are set to the following initial
+ values.
+
+
+
+ Properties
+ Initial Value
+
+ -
+
+
+
+
+ MissingMappingAction.Passthrough
+
+
+ -
+
+
+
+
+ MissingSchemaAction.Add
+
+
+
+
+ You can change the value of any of these properties through a separate call
+ to the property.
+
+
+ The following example creates a and sets some of
+ its properties.
+
+ Public Sub CreateSqlDataAdapter()
+ Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _
+ "database=test")
+ Dim da As MySqlDataAdapter = New MySqlDataAdapter
+ da.MissingSchemaAction = MissingSchemaAction.AddWithKey
+
+ da.SelectCommand = New MySqlCommand("SELECT id, name FROM mytable", conn)
+ da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _
+ "VALUES (@id, @name)", conn)
+ da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _
+ "WHERE id=@oldId", conn)
+ da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn)
+
+ da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id")
+ da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name")
+
+ da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id")
+ da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name")
+ da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original
+
+ da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original
+ End Sub
+
+
+ public static void CreateSqlDataAdapter()
+ {
+ MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test");
+ MySqlDataAdapter da = new MySqlDataAdapter();
+ da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
+
+ da.SelectCommand = new MySqlCommand("SELECT id, name FROM mytable", conn);
+ da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " +
+ "VALUES (@id, @name)", conn);
+ da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " +
+ "WHERE id=@oldId", conn);
+ da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn);
+
+ da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id");
+ da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name");
+
+ da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id");
+ da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name");
+ da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original;
+
+ da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original;
+ }
+
+
+
+
+
+ Initializes a new instance of the class with
+ the specified as the
+ property.
+
+ that is a SQL SELECT statement or stored procedure and is set
+ as the property of the .
+
+
+ When an instance of is created,
+ the following read/write properties are set to the following initial
+ values.
+
+
+
+ Properties
+ Initial Value
+
+ -
+
+
+
+
+ MissingMappingAction.Passthrough
+
+
+ -
+
+
+
+
+ MissingSchemaAction.Add
+
+
+
+
+ You can change the value of any of these properties through a separate call
+ to the property.
+
+
+ When SelectCommand (or any of the other command properties) is assigned
+ to a previously created , the MySqlCommand is not cloned.
+ The SelectCommand maintains a reference to the previously created MySqlCommand
+ object.
+
+
+ The following example creates a and sets some of
+ its properties.
+
+ Public Sub CreateSqlDataAdapter()
+ Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _
+ "database=test")
+ Dim cmd as new MySqlCommand("SELECT id, name FROM mytable", conn)
+ Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd)
+ da.MissingSchemaAction = MissingSchemaAction.AddWithKey
+
+ da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _
+ "VALUES (@id, @name)", conn)
+ da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _
+ "WHERE id=@oldId", conn)
+ da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn)
+
+ da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id")
+ da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name")
+
+ da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id")
+ da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name")
+ da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original
+
+ da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original
+ End Sub
+
+
+ public static void CreateSqlDataAdapter()
+ {
+ MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test");
+ MySqlCommand cmd = new MySqlCommand("SELECT id, name FROM mytable", conn);
+ MySqlDataAdapter da = new MySqlDataAdapter(cmd);
+ da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
+
+ da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " +
+ "VALUES (@id, @name)", conn);
+ da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " +
+ "WHERE id=@oldId", conn);
+ da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn);
+
+ da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id");
+ da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name");
+
+ da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id");
+ da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name");
+ da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original;
+
+ da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original;
+ }
+
+
+
+
+
+ Initializes a new instance of the class with
+ a and a object.
+
+ A String that is a SQL SELECT statement or stored procedure to be used by
+ the property of the .
+
+ A that represents the connection.
+
+
+ This implementation of the opens and closes a
+ if it is not already open. This can be useful in a an application that must call the
+ method for two or more MySqlDataAdapter objects.
+ If the MySqlConnection is already open, you must explicitly call
+ or to close it.
+
+
+ When an instance of is created,
+ the following read/write properties are set to the following initial
+ values.
+
+
+
+ Properties
+ Initial Value
+
+ -
+
+
+
+
+ MissingMappingAction.Passthrough
+
+
+ -
+
+
+
+
+ MissingSchemaAction.Add
+
+
+
+
+ You can change the value of any of these properties through a separate call
+ to the property.
+
+
+ The following example creates a and sets some of
+ its properties.
+
+ Public Sub CreateSqlDataAdapter()
+ Dim conn As MySqlConnection = New MySqlConnection("Data Source=localhost;" & _
+ "database=test")
+ Dim da As MySqlDataAdapter = New MySqlDataAdapter("SELECT id, name FROM mytable", conn)
+ da.MissingSchemaAction = MissingSchemaAction.AddWithKey
+
+ da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _
+ "VALUES (@id, @name)", conn)
+ da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _
+ "WHERE id=@oldId", conn)
+ da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn)
+
+ da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id")
+ da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name")
+
+ da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id")
+ da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name")
+ da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original
+
+ da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original
+ End Sub
+
+
+ public static void CreateSqlDataAdapter()
+ {
+ MySqlConnection conn = new MySqlConnection("Data Source=localhost;database=test");
+ MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM mytable", conn);
+ da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
+
+ da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " +
+ "VALUES (@id, @name)", conn);
+ da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " +
+ "WHERE id=@oldId", conn);
+ da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn);
+
+ da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id");
+ da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name");
+
+ da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id");
+ da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name");
+ da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original;
+
+ da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original;
+ }
+
+
+
+
+
+ Initializes a new instance of the class with
+ a and a connection string.
+
+ A that is a SQL SELECT statement or stored procedure to
+ be used by the property of the .
+ The connection string
+
+ When an instance of is created,
+ the following read/write properties are set to the following initial
+ values.
+
+
+
+ Properties
+ Initial Value
+
+ -
+
+
+
+
+ MissingMappingAction.Passthrough
+
+
+ -
+
+
+
+
+ MissingSchemaAction.Add
+
+
+
+
+ You can change the value of any of these properties through a separate call
+ to the property.
+
+
+ The following example creates a and sets some of
+ its properties.
+
+ Public Sub CreateSqlDataAdapter()
+ Dim da As MySqlDataAdapter = New MySqlDataAdapter("SELECT id, name FROM mytable", "Data Source=localhost;database=test")
+ Dim conn As MySqlConnection = da.SelectCommand.Connection
+ da.MissingSchemaAction = MissingSchemaAction.AddWithKey
+
+ da.InsertCommand = New MySqlCommand("INSERT INTO mytable (id, name) " & _
+ "VALUES (@id, @name)", conn)
+ da.UpdateCommand = New MySqlCommand("UPDATE mytable SET id=@id, name=@name " & _
+ "WHERE id=@oldId", conn)
+ da.DeleteCommand = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn)
+
+ da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id")
+ da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name")
+
+ da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id")
+ da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name")
+ da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original
+
+ da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original
+ End Sub
+
+
+ public static void CreateSqlDataAdapter()
+ {
+ MySqlDataAdapter da = new MySqlDataAdapter("SELECT id, name FROM mytable", "Data Source=localhost;database=test");
+ MySqlConnection conn = da.SelectCommand.Connection;
+ da.MissingSchemaAction = MissingSchemaAction.AddWithKey;
+
+ da.InsertCommand = new MySqlCommand("INSERT INTO mytable (id, name) " +
+ "VALUES (@id, @name)", conn);
+ da.UpdateCommand = new MySqlCommand("UPDATE mytable SET id=@id, name=@name " +
+ "WHERE id=@oldId", conn);
+ da.DeleteCommand = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn);
+
+ da.InsertCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id");
+ da.InsertCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name");
+
+ da.UpdateCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id");
+ da.UpdateCommand.Parameters.Add("@name", MySqlDbType.VarChar, 40, "name");
+ da.UpdateCommand.Parameters.Add("@oldId", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original;
+
+ da.DeleteCommand.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id").SourceVersion = DataRowVersion.Original;
+ }
+
+
+
+
+
+ Gets or sets a SQL statement or stored procedure used to delete records from the data set.
+
+ A used during to delete records in the
+ database that correspond to deleted rows in the .
+
+
+ During , if this property is not set and primary key information
+ is present in the , the DeleteCommand can be generated
+ automatically if you set the property and use the
+ . Then, any additional commands that you do not set are
+ generated by the MySqlCommandBuilder. This generation logic requires key column
+ information to be present in the DataSet.
+
+
+ When DeleteCommand is assigned to a previously created ,
+ the MySqlCommand is not cloned. The DeleteCommand maintains a reference
+ to the previously created MySqlCommand object.
+
+
+ The following example creates a and sets the
+ and DeleteCommand properties. It assumes you have already
+ created a object.
+
+ Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter
+
+ Dim da As MySqlDataAdapter = New MySqlDataAdapter()
+ Dim cmd As MySqlCommand
+ Dim parm As MySqlParameter
+
+ ' Create the SelectCommand.
+ cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn)
+
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15)
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15)
+
+ da.SelectCommand = cmd
+
+ ' Create the DeleteCommand.
+ cmd = New MySqlCommand("DELETE FROM mytable WHERE id=@id", conn)
+
+ parm = cmd.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id")
+ parm.SourceVersion = DataRowVersion.Original
+
+ da.DeleteCommand = cmd
+
+ Return da
+ End Function
+
+
+ public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn)
+ {
+ MySqlDataAdapter da = new MySqlDataAdapter();
+ MySqlCommand cmd;
+ MySqlParameter parm;
+
+ // Create the SelectCommand.
+ cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn);
+
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15);
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15);
+
+ da.SelectCommand = cmd;
+
+ // Create the DeleteCommand.
+ cmd = new MySqlCommand("DELETE FROM mytable WHERE id=@id", conn);
+
+ parm = cmd.Parameters.Add("@id", MySqlDbType.VarChar, 5, "id");
+ parm.SourceVersion = DataRowVersion.Original;
+
+ da.DeleteCommand = cmd;
+
+ return da;
+ }
+
+
+
+
+
+ Gets or sets a SQL statement or stored procedure used to insert records into the data set.
+
+ A used during to insert records into the
+ database that correspond to new rows in the .
+
+
+ During , if this property is not set and primary key information
+ is present in the , the InsertCommand can be generated
+ automatically if you set the property and use the
+ . Then, any additional commands that you do not set are
+ generated by the MySqlCommandBuilder. This generation logic requires key column
+ information to be present in the DataSet.
+
+
+ When InsertCommand is assigned to a previously created ,
+ the MySqlCommand is not cloned. The InsertCommand maintains a reference
+ to the previously created MySqlCommand object.
+
+
+ If execution of this command returns rows, these rows may be added to the DataSet
+ depending on how you set the property of the MySqlCommand object.
+
+
+ The following example creates a and sets the
+ and InsertCommand properties. It assumes you have already
+ created a object.
+
+ Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter
+
+ Dim da As MySqlDataAdapter = New MySqlDataAdapter()
+ Dim cmd As MySqlCommand
+ Dim parm As MySqlParameter
+
+ ' Create the SelectCommand.
+ cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn)
+
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15)
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15)
+
+ da.SelectCommand = cmd
+
+ ' Create the InsertCommand.
+ cmd = New MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id, @name)", conn)
+
+ cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" )
+ cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" )
+ da.InsertCommand = cmd
+
+ Return da
+ End Function
+
+
+ public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn)
+ {
+ MySqlDataAdapter da = new MySqlDataAdapter();
+ MySqlCommand cmd;
+ MySqlParameter parm;
+
+ // Create the SelectCommand.
+ cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn);
+
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15);
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15);
+
+ da.SelectCommand = cmd;
+
+ // Create the InsertCommand.
+ cmd = new MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id,@name)", conn);
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" );
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" );
+
+ da.InsertCommand = cmd;
+
+ return da;
+ }
+
+
+
+
+
+ Gets or sets a SQL statement or stored procedure used to select records in the data source.
+
+ A used during to select records from the
+ database for placement in the .
+
+
+ When SelectCommand is assigned to a previously created ,
+ the MySqlCommand is not cloned. The SelectCommand maintains a reference to the
+ previously created MySqlCommand object.
+
+
+ If the SelectCommand does not return any rows, no tables are added to the
+ , and no exception is raised.
+
+
+ The following example creates a and sets the
+ and InsertCommand properties. It assumes you have already
+ created a object.
+
+ Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter
+
+ Dim da As MySqlDataAdapter = New MySqlDataAdapter()
+ Dim cmd As MySqlCommand
+ Dim parm As MySqlParameter
+
+ ' Create the SelectCommand.
+ cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn)
+
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15)
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15)
+
+ da.SelectCommand = cmd
+
+ ' Create the InsertCommand.
+ cmd = New MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id, @name)", conn)
+
+ cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" )
+ cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" )
+ da.InsertCommand = cmd
+
+ Return da
+ End Function
+
+
+ public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn)
+ {
+ MySqlDataAdapter da = new MySqlDataAdapter();
+ MySqlCommand cmd;
+ MySqlParameter parm;
+
+ // Create the SelectCommand.
+ cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn);
+
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15);
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15);
+
+ da.SelectCommand = cmd;
+
+ // Create the InsertCommand.
+ cmd = new MySqlCommand("INSERT INTO mytable (id,name) VALUES (@id,@name)", conn);
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" );
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" );
+
+ da.InsertCommand = cmd;
+
+ return da;
+ }
+
+
+
+
+
+ Gets or sets a SQL statement or stored procedure used to updated records in the data source.
+
+ A used during to update records in the
+ database with data from the .
+
+
+ During , if this property is not set and primary key information
+ is present in the , the UpdateCommand can be generated
+ automatically if you set the property and use the
+ . Then, any additional commands that you do not set are
+ generated by the MySqlCommandBuilder. This generation logic requires key column
+ information to be present in the DataSet.
+
+
+ When UpdateCommand is assigned to a previously created ,
+ the MySqlCommand is not cloned. The UpdateCommand maintains a reference
+ to the previously created MySqlCommand object.
+
+
+ If execution of this command returns rows, these rows may be merged with the DataSet
+ depending on how you set the property of the MySqlCommand object.
+
+
+ The following example creates a and sets the
+ and UpdateCommand properties. It assumes you have already
+ created a object.
+
+ Public Shared Function CreateCustomerAdapter(conn As MySqlConnection) As MySqlDataAdapter
+
+ Dim da As MySqlDataAdapter = New MySqlDataAdapter()
+ Dim cmd As MySqlCommand
+ Dim parm As MySqlParameter
+
+ ' Create the SelectCommand.
+ cmd = New MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn)
+
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15)
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15)
+
+ da.SelectCommand = cmd
+
+ ' Create the UpdateCommand.
+ cmd = New MySqlCommand("UPDATE mytable SET id=@id, name=@name WHERE id=@oldId", conn)
+
+ cmd.Parameters.Add( "@id", MySqlDbType.VarChar, 15, "id" )
+ cmd.Parameters.Add( "@name", MySqlDbType.VarChar, 15, "name" )
+
+ parm = cmd.Parameters.Add("@oldId", MySqlDbType.VarChar, 15, "id")
+ parm.SourceVersion = DataRowVersion.Original
+
+ da.UpdateCommand = cmd
+
+ Return da
+ End Function
+
+
+ public static MySqlDataAdapter CreateCustomerAdapter(MySqlConnection conn)
+ {
+ MySqlDataAdapter da = new MySqlDataAdapter();
+ MySqlCommand cmd;
+ MySqlParameter parm;
+
+ // Create the SelectCommand.
+ cmd = new MySqlCommand("SELECT * FROM mytable WHERE id=@id AND name=@name", conn);
+
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15);
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15);
+
+ da.SelectCommand = cmd;
+
+ // Create the UpdateCommand.
+ cmd = new MySqlCommand("UPDATE mytable SET id=@id, name=@name WHERE id=@oldId", conn);
+ cmd.Parameters.Add("@id", MySqlDbType.VarChar, 15, "id" );
+ cmd.Parameters.Add("@name", MySqlDbType.VarChar, 15, "name" );
+
+ parm = cmd.Parameters.Add( "@oldId", MySqlDbType.VarChar, 15, "id" );
+ parm.SourceVersion = DataRowVersion.Original;
+
+ da.UpdateCommand = cmd;
+
+ return da;
+ }
+
+
+
+
+
+ Open connection if it was closed.
+ Necessary to workaround "connection must be open and valid" error
+ with batched updates.
+
+ Row state
+ list of opened connections
+ If connection is opened by this function, the list is updated
+
+ true if connection was opened
+
+
+
+ Overridden. See .
+
+
+
+
+
+
+
+
+
+ Overridden. See .
+
+
+
+
+
+
+
+
+
+ Overridden. Raises the RowUpdating event.
+
+ A MySqlRowUpdatingEventArgs that contains the event data.
+
+
+
+ Overridden. Raises the RowUpdated event.
+
+ A MySqlRowUpdatedEventArgs that contains the event data.
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill records with.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill records with.
+ The cancellation token.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The name of the to use for table mapping.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The name of the to use for table mapping.
+ The cancellation token.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ The name of the source table to use for table mapping.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ The name of the source table to use for table mapping.
+ The cancellation token.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ An instance of .
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ An instance of .
+ The cancellation token.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ The SQL SELECT statement used to retrieve rows from the data source.
+ One of the values.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ The SQL SELECT statement used to retrieve rows from the data source.
+ One of the values.
+ The cancellation token.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The start record.
+ The max number of affected records.
+ The s to fill with records.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The start record.
+ The max number of affected records.
+ The cancellation token.
+ The s to fill with records.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ The start record.
+ The max number of affected records.
+ The name of the source table to use for table mapping.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ The start record.
+ The max number of affected records.
+ The name of the source table to use for table mapping.
+ The cancellation token.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ The name of the source table to use for table mapping.
+ An instance of .
+ The start record.
+ The max number of affected records.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ The name of the source table to use for table mapping.
+ An instance of .
+ The start record.
+ The max number of affected records.
+ The cancellation token.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The s to fill with records.
+ The start record.
+ The max number of affected records.
+ The SQL SELECT statement used to retrieve rows from the data source.
+ One of the values.
+ The number of rows successfully added to or refreshed in the s.
+
+
+
+ Asynchronous version of the Fill method.
+
+ The s to fill with records.
+ The start record.
+ The max number of affected records.
+ The SQL SELECT statement used to retrieve rows from the data source.
+ One of the values.
+ The cancellation token.
+ The number of rows successfully added to or refreshed in the s.
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ The start record.
+ The max number of affected records.
+ The name of the source table to use for table mapping.
+ The SQL SELECT statement used to retrieve rows from the data source.
+ One of the values.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Asynchronous version of the Fill method.
+
+ The to fill with records.
+ The start record.
+ The max number of affected records.
+ The name of the source table to use for table mapping.
+ The SQL SELECT statement used to retrieve rows from the data source.
+ One of the values.
+ The cancellation token.
+ The number of rows successfully added to or refreshed in the .
+
+
+
+ Async version of FillSchema
+
+ DataSet to use
+ Schema Type
+ DataTable[]
+
+
+
+ Async version of FillSchema
+
+ DataSet to use
+ Schema Type
+ Source Table
+ DataTable[]
+
+
+
+ Async version of FillSchema
+
+ DataSet to use
+ Schema Type
+ Source Table
+ DataReader to use
+ DataTable[]
+
+
+
+ Async version of FillSchema
+
+ DataSet to use
+ Schema Type
+ DBCommand to use
+ Source Table
+ Command Behavior
+ DataTable[]
+
+
+
+ Async version of FillSchema
+
+ DataTable to use
+ Schema Type
+ DataTable
+
+
+
+ Async version of FillSchema
+
+ DataTable to use
+ Schema Type
+ DataReader to use
+ DataTable
+
+
+
+ Async version of FillSchema
+
+ DataTable to use
+ Schema Type
+ DBCommand to use
+ Command Behavior
+ DataTable
+
+
+
+ Async version of Update
+
+ DataRow[] to use
+ int
+
+
+
+ Async version of Update
+
+ DataSet to use
+ int
+
+
+
+ Async version of Update
+
+ DataTable to use
+ int
+
+
+
+ Async version of Update
+
+ DataRow[] to use
+ Data Table Mapping
+ int
+
+
+
+ Async version of Update
+
+ DataSet to use
+ Source Table
+
+
+
+
+ Represents the method that will handle the event of a .
+
+
+
+
+ Represents the method that will handle the event of a .
+
+
+
+
+ Provides data for the RowUpdating event. This class cannot be inherited.
+
+
+
+
+ Initializes a new instance of the MySqlRowUpdatingEventArgs class.
+
+ The to
+ .
+ The to execute during .
+ One of the values that specifies the type of query executed.
+ The sent through an .
+
+
+
+ Gets or sets the MySqlCommand to execute when performing the Update.
+
+
+
+
+ Provides data for the RowUpdated event. This class cannot be inherited.
+
+
+
+
+ Initializes a new instance of the MySqlRowUpdatedEventArgs class.
+
+ The sent through an .
+ The executed when is called.
+ One of the values that specifies the type of query executed.
+ The sent through an .
+
+
+
+ Gets or sets the MySqlCommand executed when Update is called.
+
+
+
+
+ Enables the provider to help ensure that a user has a security level adequate for accessing data.
+
+
+
+
+ Adds a new connection string with set of restricted keywords to the MySqlClientPermission object
+
+ Settings to be used for the connection
+ Keywords to define the restrictions
+ KeyRestrictionBehavior to be used
+
+
+
+ Returns MySqlClientPermission as an IPermission
+
+
+
+
+
+ Associates a security action with a custom security attribute.
+
+
+
+
+ Represents a section within a configuration file.
+
+
+
+
+ Gets the MySQL configuations associated to the current configuration.
+
+
+
+
+ Gets a collection of the exception interceptors available in the current configuration.
+
+
+
+
+ Gets a collection of the command interceptors available in the current configuration.
+
+
+
+
+ Gets a collection of the authentication plugins available in the current configuration.
+
+
+
+
+ Gets or sets the replication configurations.
+
+
+
+
+ Defines the configurations allowed for an authentication plugin.
+
+
+
+
+ Gets or sets the name of the authentication plugin.
+
+
+
+
+ Gets or sets the type of the authentication plugin.
+
+
+
+
+ Defines the configurations allowed for an interceptor.
+
+
+
+
+ Gets or sets the name of the interceptor.
+
+
+
+
+ Gets or sets the type of the interceptor.
+
+
+
+
+ Represents a generic configuration element.
+
+
+
+
+
+ Gets an enumerator that iterates through the returned list.
+
+ An enumerator that iterates through the returned list.
+
+
+
+ Helper class that makes it easier to work with the provider.
+
+
+
+
+ Asynchronous version of ExecuteDataRow.
+
+ The settings to be used for the connection.
+ The command to execute.
+ The parameters to use for the command.
+ The DataRow containing the first row of the resultset.
+
+
+
+ Asynchronous version of ExecuteDataRow.
+
+ The settings to be used for the connection.
+ The command to execute.
+ The cancellation token.
+ The parameters to use for the command.
+ The DataRow containing the first row of the resultset.
+
+
+
+ Executes a single SQL command and returns the first row of the resultset. A new MySqlConnection object
+ is created, opened, and closed during this method.
+
+ Settings to be used for the connection
+ Command to execute
+ Parameters to use for the command
+ DataRow containing the first row of the resultset
+
+
+
+ Executes a single SQL command and returns the resultset in a .
+ A new MySqlConnection object is created, opened, and closed during this method.
+
+ Settings to be used for the connection
+ Command to execute
+ containing the resultset
+
+
+
+ Executes a single SQL command and returns the resultset in a .
+ A new MySqlConnection object is created, opened, and closed during this method.
+
+ Settings to be used for the connection
+ Command to execute
+ Parameters to use for the command
+ containing the resultset
+
+
+
+ Executes a single SQL command and returns the resultset in a .
+ The state of the object remains unchanged after execution
+ of this method.
+
+ object to use
+ Command to execute
+ containing the resultset
+
+
+
+ Executes a single SQL command and returns the resultset in a .
+ The state of the object remains unchanged after execution
+ of this method.
+
+ object to use
+ Command to execute
+ Parameters to use for the command
+ containing the resultset
+
+
+
+ Updates the given table with data from the given
+
+ Settings to use for the update
+ Command text to use for the update
+ containing the new data to use in the update
+ Tablename in the dataset to update
+
+
+
+ Async version of ExecuteDataset
+
+ Settings to be used for the connection
+ Command to execute
+ containing the resultset
+
+
+
+ Async version of ExecuteDataset
+
+ Settings to be used for the connection
+ Command to execute
+ Parameters to use for the command
+ containing the resultset
+
+
+
+ Async version of ExecuteDataset
+
+ object to use
+ Command to execute
+ containing the resultset
+
+
+
+ Async version of ExecuteDataset
+
+ object to use
+ Command to execute
+ Parameters to use for the command
+ containing the resultset
+
+
+
+ Async version of UpdateDataset
+
+ Settings to use for the update
+ Command text to use for the update
+ containing the new data to use in the update
+ Tablename in the dataset to update
+
+
+
+ Executes a single command against a MySQL database. The is assumed to be
+ open when the method is called and remains open after the method completes.
+
+ The object to use
+ The SQL command to be executed.
+ An array of objects to use with the command.
+ The number of affected records.
+
+
+
+ Executes a single command against a MySQL database.
+
+ to use.
+ The SQL command to be executed.
+ An rray of objects to use with the command.
+ The number of affected records.
+ A new is created using the given.
+
+
+
+ Executes a single command against a MySQL database, possibly inside an existing transaction.
+
+ object to use for the command
+ object to use for the command
+ Command text to use
+ Array of objects to use with the command
+ True if the connection should be preserved, false if not
+ object ready to read the results of the command
+
+
+
+ Executes a single command against a MySQL database.
+
+ Settings to use for this command
+ Command text to use
+ object ready to read the results of the command
+
+
+
+ Executes a single command against a MySQL database.
+
+ object to use for the command
+ Command text to use
+ object ready to read the results of the command
+
+
+
+ Executes a single command against a MySQL database.
+
+ Settings to use for this command
+ Command text to use
+ Array of objects to use with the command
+ object ready to read the results of the command
+
+
+
+ Executes a single command against a MySQL database.
+
+ Connection to use for the command
+ Command text to use
+ Array of objects to use with the command
+ object ready to read the results of the command
+
+
+
+ Execute a single command against a MySQL database.
+
+ Settings to use for the update
+ Command text to use for the update
+ The first column of the first row in the result set, or a null reference if the result set is empty.
+
+
+
+ Execute a single command against a MySQL database.
+
+ Settings to use for the command
+ Command text to use for the command
+ Parameters to use for the command
+ The first column of the first row in the result set, or a null reference if the result set is empty.
+
+
+
+ Execute a single command against a MySQL database.
+
+ object to use
+ Command text to use for the command
+ The first column of the first row in the result set, or a null reference if the result set is empty.
+
+
+
+ Execute a single command against a MySQL database.
+
+ object to use
+ Command text to use for the command
+ Parameters to use for the command
+ The first column of the first row in the result set, or a null reference if the result set is empty.
+
+
+
+ Escapes the string.
+
+ The string to escape.
+ The string with all quotes escaped.
+
+
+
+ Replaces quotes with double quotes.
+
+ The string to modidify.
+ A string containing double quotes instead of single quotes.
+
+
+
+ Async version of ExecuteNonQuery
+
+ object to use
+ SQL command to be executed
+ Array of objects to use with the command.
+ Rows affected
+
+
+
+ Asynchronous version of the ExecuteNonQuery method.
+
+ to use.
+ The SQL command to be executed.
+ An array of objects to use with the command.
+ The number of rows affected.
+
+
+
+ Asynchronous version of the ExecuteNonQuery method.
+
+ to use.
+ The SQL command to be executed.
+ The cancellation token.
+ An array of objects to use with the command.
+ The number of rows affected.
+
+
+
+ Async version of ExecuteReader
+
+ object to use for the command
+ object to use for the command
+ Command text to use
+ Array of objects to use with the command
+ True if the connection should be preserved, false if not
+ object ready to read the results of the command
+
+
+
+ Async version of ExecuteReader
+
+ Settings to use for this command
+ Command text to use
+ object ready to read the results of the command
+
+
+
+ Async version of ExecuteReader
+
+ object to use for the command
+ Command text to use
+ object ready to read the results of the command
+
+
+
+ Async version of ExecuteReader
+
+ Settings to use for this command
+ Command text to use
+ Array of objects to use with the command
+ object ready to read the results of the command
+
+
+
+ Async version of ExecuteReader
+
+ Connection to use for the command
+ Command text to use
+ Array of objects to use with the command
+ object ready to read the results of the command
+
+
+
+ Async version of ExecuteScalar
+
+ Settings to use for the update
+ Command text to use for the update
+ The first column of the first row in the result set, or a null reference if the result set is empty.
+
+
+
+ Async version of ExecuteScalar
+
+ Settings to use for the command
+ Command text to use for the command
+ Parameters to use for the command
+ The first column of the first row in the result set, or a null reference if the result set is empty.
+
+
+
+ Async version of ExecuteScalar
+
+ object to use
+ Command text to use for the command
+ The first column of the first row in the result set, or a null reference if the result set is empty.
+
+
+
+ Async version of ExecuteScalar
+
+ object to use
+ Command text to use for the command
+ Parameters to use for the command
+ The first column of the first row in the result set, or a null reference if the result set is empty.
+
+
+
+ Represents a parameter to a , This class cannot be inherited.
+
+
+
+
+ Gets or sets the to use when loading .
+
+
+
+
+ CLoses this object.
+
+ An object that is a clone of this object.
+
+
+
+ Initializes a new instance of the class with the parameter name, the , the size, and the source column name.
+
+ The name of the parameter to map.
+ One of the values.
+ The length of the parameter.
+ The name of the source column.
+
+
+
+ Initializes a new instance of the class with the parameter name and a value of the new MySqlParameter.
+
+ The name of the parameter to map.
+ An that is the value of the .
+
+
+
+ Initializes a new instance of the class with the parameter name and the data type.
+
+ The name of the parameter to map.
+ One of the values.
+
+
+
+ Initializes a new instance of the class with the parameter name, the , and the size.
+
+ The name of the parameter to map.
+ One of the values.
+ The length of the parameter.
+
+
+
+ Initializes a new instance of the class with the parameter name, the type of the parameter, the size of the parameter, a , the precision of the parameter, the scale of the parameter, the source column, a to use, and the value of the parameter.
+
+ The name of the parameter to map.
+ One of the values.
+ The length of the parameter.
+ One of the values.
+ true if the value of the field can be null, otherwise false.
+ The total number of digits to the left and right of the decimal point to which is resolved.
+ The total number of decimal places to which is resolved.
+ The name of the source column.
+ One of the values.
+ An that is the value of the .
+
+
+
+
+ Gets or sets a value indicating whether the parameter is input-only, output-only, bidirectional, or a stored procedure return value parameter.
+ As of MySql version 4.1 and earlier, input-only is the only valid choice.
+
+
+
+
+ Gets or sets a value indicating whether the parameter accepts null values.
+
+
+
+
+ Gets or sets the of the parameter.
+
+
+
+
+ Gets or sets the maximum number of digits used to represent the property.
+
+
+
+
+ Gets or sets the number of decimal places to which is resolved.
+
+
+
+
+ Gets or sets the maximum size, in bytes, of the data within the column.
+
+
+
+
+ Gets or sets the value of the parameter.
+
+
+
+
+ Returns the possible values for this parameter if this parameter is of type
+ SET or ENUM. Returns null otherwise.
+
+
+
+
+ Gets or sets the name of the source column that is mapped to the and used for loading or returning the .
+
+
+
+
+ Sets or gets a value which indicates whether the source column is nullable.
+ This allows to correctly generate Update statements
+ for nullable columns.
+
+
+
+
+ Gets or sets the of the parameter.
+
+
+
+
+ Overridden. Gets a string containing the .
+
+
+
+
+
+ Resets the DbType property to its original settings.
+
+
+
+
+ Represents a collection of parameters relevant to a as well as their respective mappings to columns in a . This class cannot be inherited.
+
+
+ The number of the parameters in the collection must be equal to the number of
+ parameter placeholders within the command text, or an exception will be generated.
+
+ The following example creates multiple instances of
+ through the MySqlParameterCollection collection within the .
+ These parameters are used to select data within the data source and place the data in
+ the . This code assumes that a DataSet and a MySqlDataAdapter
+ have already been created with the appropriate schema, commands, and connection.
+
+ Public Sub AddParameters()
+ ' ...
+ ' create myDataSet and myDataAdapter
+ ' ...
+ myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", MySqlDbType.VarChar, 80).Value = "toasters"
+ myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", MySqlDbType.Long).Value = 239
+
+ myDataAdapter.Fill(myDataSet)
+ End Sub 'AddSqlParameters
+
+
+ public void AddSqlParameters()
+ {
+ // ...
+ // create myDataSet and myDataAdapter
+ // ...
+
+ myDataAdapter.SelectCommand.Parameters.Add("@CategoryName", MySqlDbType.VarChar, 80).Value = "toasters";
+ myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", MySqlDbType.Long).Value = 239;
+ myDataAdapter.Fill(myDataSet);
+
+ }
+
+
+
+
+
+ Gets a value that indicates whether the
+ has a fixed size.
+
+
+
+
+ Gets a value that indicates whether the
+ is read-only.
+
+
+
+
+ Gets a value that indicates whether the
+ is synchronized.
+
+
+
+
+ Gets the number of MySqlParameter objects in the collection.
+
+
+
+
+ Gets the at the specified index.
+
+ Gets the with a specified attribute.
+ [C#] In C#, this property is the indexer for the class.
+
+
+
+
+ Gets the with the specified name.
+
+
+
+
+ Adds a to the with the parameter name, the data type, the column length, and the source column name.
+
+ The name of the parameter.
+ One of the values.
+ The length of the column.
+ The name of the source column.
+ The newly added object.
+
+
+
+ Adds the specified object to the .
+
+ The to add to the collection.
+ The newly added object.
+
+
+
+ Adds a parameter and its value.
+
+ The name of the parameter.
+ The value of the parameter.
+ A object representing the provided values.
+
+
+
+ Adds a to the given the parameter name and the data type.
+
+ The name of the parameter.
+ One of the values.
+ The newly added object.
+
+
+
+ Adds a to the with the parameter name, the data type, and the column length.
+
+ The name of the parameter.
+ One of the values.
+ The length of the column.
+ The newly added object.
+
+
+
+ Removes all items from the collection.
+
+
+
+
+ Gets the location of the in the collection with a specific parameter name.
+
+ The name of the object to retrieve.
+ The zero-based location of the in the collection.
+
+
+
+ Gets the location of a in the collection.
+
+ The object to locate.
+ The zero-based location of the in the collection.
+ Gets the location of a in the collection.
+
+
+
+ This method will update all the items in the index hashes when
+ we insert a parameter somewhere in the middle
+
+
+
+
+
+
+ Adds an array of values to the end of the .
+
+
+
+
+
+ Retrieve the parameter with the given name.
+
+
+
+
+
+
+ Adds the specified object to the .
+
+ The to add to the collection.
+ The index of the new object.
+
+
+
+ Gets a value indicating whether a with the specified parameter name exists in the collection.
+
+ The name of the object to find.
+ true if the collection contains the parameter; otherwise, false.
+
+
+
+ Gets a value indicating whether a MySqlParameter exists in the collection.
+
+ The value of the object to find.
+ true if the collection contains the object; otherwise, false.
+ Gets a value indicating whether a exists in the collection.
+
+
+
+ Copies MySqlParameter objects from the MySqlParameterCollection to the specified array.
+
+
+
+
+
+
+ Returns an enumerator that iterates through the .
+
+
+
+
+
+ Inserts a MySqlParameter into the collection at the specified index.
+
+
+
+
+
+
+ Removes the specified MySqlParameter from the collection.
+
+
+
+
+
+ Removes the specified from the collection using the parameter name.
+
+ The name of the object to retrieve.
+
+
+
+ Removes the specified from the collection using a specific index.
+
+ The zero-based index of the parameter.
+ Removes the specified from the collection.
+
+
+
+ Gets an object that can be used to synchronize access to the
+ .
+
+
+
+
+ Represents a single(not nested) TransactionScope
+
+
+
+
+ Defines security permissions assigned to a MySQL object.
+
+
+
+
+ Creates a set of permissions.
+
+ A flag indicating if the reflection permission should be included.
+ A object representing a collection of permissions.
+
+
+
+ BaseCommandInterceptor is the base class that should be used for all userland
+ command interceptors
+
+
+
+
+ Gets the active connection.
+
+
+
+
+ Executes an SQL statements that returns a scalar value such as a calculation.
+
+ The SQL statement to execute.
+ A scalar value that represents the result returned by the execution of the SQL statement.
+ false.
+ This method is intended to be overriden.
+
+
+
+ Executes an SQL statement that returns the number of affected rows.
+
+ The SQL statement to execute.
+ The number of affected rows.
+ false.
+ This method is intended to be overriden.
+
+
+
+ Executes an SQL statement that will return a resultset.
+
+ The SQL statement to execute.
+ A value that describes the results of the query and its effect on the database.
+ A object containing the result of the statement execution.
+ false.
+ This method is intended to be overriden.
+
+
+
+ Sets the active connection.
+
+ The active connection.
+
+
+
+ CommandInterceptor is the "manager" class that keeps the list of registered interceptors
+ for the given connection.
+
+
+
+
+ BaseExceptionInterceptor is the base class that should be used for all userland
+ exception interceptors.
+
+
+
+
+ Returns the received exception.
+
+ The exception to be returned.
+ The exception originally received.
+
+
+
+ Gets the active connection.
+
+
+
+
+ Initilizes this object by setting the active connection.
+
+ The connection to become active.
+
+
+
+ StandardExceptionInterceptor is the standard interceptor that simply returns the exception.
+ It is the default action.
+
+
+
+
+ Returns the received exception, which is the default action
+
+ The exception to be returned.
+ The exception originally received.
+
+
+
+ ExceptionInterceptor is the "manager" class that keeps the list of registered interceptors
+ for the given connection.
+
+
+
+
+ Interceptor is the base class for the "manager" classes such as ExceptionInterceptor,
+ CommandInterceptor, etc
+
+
+
+
+ Return schema information about procedures and functions
+ Restrictions supported are:
+ schema, name, type
+
+
+
+
+
+
+ Return schema information about parameters for procedures and functions
+ Restrictions supported are:
+ schema, name, type, parameter name
+
+
+
+
+ Initializes a new row for the procedure parameters table.
+
+
+
+
+ Parses out the elements of a procedure parameter data type.
+
+
+
+
+ Implementation of memcached binary client protocol.
+
+ According to http://code.google.com/p/memcached/wiki/BinaryProtocolRevamped
+
+
+
+ Sends an store command (add, replace, set).
+
+
+
+
+
+
+
+
+
+
+ Sends a get command.
+
+
+
+
+
+
+
+
+ Sends a delete command.
+
+
+
+
+
+
+
+ Sends a command without args (like flush).
+
+
+
+
+
+
+
+ Sends a command with amount (INCR/DECR)
+
+
+
+
+
+
+
+
+ Encodes in the binary protocol the a command of the kind set, add or replace.
+
+
+
+
+
+
+ If true applies to set, add or replace commands; if false applies to append and prepend commands.
+
+
+
+
+ An interface of the client memcached protocol. This class is abstract for
+ implementation of the Memcached client interface see for the
+ text protocol version and for the binary protocol version.
+
+
+
+
+ The port used by the connection.
+
+
+
+
+ The server DNS or IP address used by the connection.
+
+
+
+
+ The network stream used by the connecition.
+
+
+
+
+ Factory method for creating instances of that implement a connection with the requested features.
+ The connection object returned must be explicitely opened see method .
+
+ The Memcached server DNS or IP address.
+ The port for the Memcached server
+ A set of flags indicating characterestics requested.
+ An instance of a client connection ready to be used.
+
+
+
+ Opens the client connection.
+
+
+
+
+ Closes the client connection.
+
+
+
+
+ Adds a new key/value pair with the given TimeSpan expiration.
+
+ The key for identifying the entry.
+ The data to associate with the key.
+ The interval of timespan, use TimeSpan.Zero for no expiration.
+
+
+
+ Appens the data to the existing data for the associated key.
+
+ The key for identifying the entry.
+ The data to append with the data associated with the key.
+
+
+
+ Executes the Check-and-set Memcached operation.
+
+ The key for identifying the entry.
+ The data to use in the CAS.
+ The interval of timespan, use TimeSpan.Zero for no expiration.
+ The CAS unique value to use.
+
+
+
+
+ Decrements the value associated with a key by the given amount.
+
+ The key associated with the value to decrement.
+ The amount to decrement the value.
+
+
+
+ Removes they pair key/value given the specified key.
+
+
+
+
+
+ Removes all entries from the storage, effectively invalidating the whole cache.
+
+ The interval after which the cache will be cleaned. Can be TimeSpan.Zero for immediately.
+
+
+
+ Get the key/value pair associated with a given key.
+
+ The key for which to returm the key/value.
+ The key/value associated with the key or a MemcachedException if it does not exists.
+
+
+
+ Increments the value associated with a key by the given amount.
+
+ The key associated with the value to increment.
+ The amount to increment the value.
+
+
+
+ Prepends the data to the existing data for the associated key.
+
+ The key for identifying the entry.
+ The data to append with the data associated with the key.
+
+
+
+ Replaces the value associated with the given key with another value.
+
+ The key for identifying the entry.
+ The data to replace the value associated with the key.
+ The interval of timespan, use TimeSpan.Zero for no expiration.
+
+
+
+ Set the value of a given key.
+
+ The key for identifying the entry.
+ The data to associate with the given key.
+ The interval of timespan, use TimeSpan.Zero for no expiration.
+
+
+
+ A set of flags for requesting new instances of connections
+
+
+
+
+ Requests a connection implememting the text protocol.
+
+
+
+
+ Requests a connection implementing the binary protocol.
+
+
+
+
+ Requests a TCP connection. Currently UDP is not supported.
+
+
+
+
+ The base exception class for all Memcached exceptions.
+
+
+
+
+ Implementation of the Memcached text client protocol.
+
+
+
+
+ Sends a command to the memcached server.
+
+
+
+
+
+
+ This version is for commands that take a key, data, expiration and casUnique.
+
+
+
+ Sends a command to the memcached server.
+
+
+
+
+
+ This version is for commands that take a key, data and expiration
+
+
+
+ Send a command to memcached server.
+
+
+
+
+ This version is for commands that don't need flags neither expiration fields.
+
+
+
+ Sends a command to the server.
+
+
+
+ This version is for commands that only require a key
+
+
+
+ Sends a command to the server.
+
+
+
+
+ This version is for commands that only require a key and an integer value.
+
+
+
+ Sends a command to the server.
+
+
+
+ This version is for commands that only require a key and expiration.
+
+
+
+ Abstract class that provides common functionality for connection options that apply for all protocols.
+
+
+
+
+ Readonly field containing a collection of protocol shared connection options.
+
+
+
+
+ Gets or sets a flag indicating if the object has access to procedures.
+
+
+
+
+ Gets or sets a dictionary representing key-value pairs for each connection option.
+
+
+
+
+ Gets or sets the name of the server.
+
+ The server.
+
+
+
+ Gets or sets the name of the database for the initial connection.
+
+
+
+
+ Gets or sets the protocol that should be used for communicating
+ with MySQL.
+
+
+
+
+ Gets or sets the port number that is used when the socket
+ protocol is being used.
+
+
+
+
+ Gets or sets a boolean value that indicates whether this connection
+ should resolve DNS SRV records.
+
+
+
+
+ Gets or sets the user ID that should be used to connect with.
+
+
+
+
+ Gets or sets the password that should be used to make a connection.
+
+
+
+
+ Gets or sets the path to the certificate file to be used.
+
+
+
+
+ Gets or sets the password to be used in conjunction with the certificate file.
+
+
+
+
+ Gets or sets the location to a personal store where a certificate is held.
+
+
+
+
+ Gets or sets a certificate thumbprint to ensure correct identification of a certificate contained within a personal store.
+
+
+
+
+ Indicates whether to use SSL connections and how to handle server certificate errors.
+
+
+
+
+ Sets the TLS versions to use in a SSL connection to the server.
+
+
+ Tls version=TLSv1.1,TLSv1.2;
+
+
+
+
+ Gets or sets the path to a local key file in PEM format to use for establishing an encrypted connection.
+
+
+
+
+ Gets or sets the path to a local certificate file in PEM format to use for establishing an encrypted connection.
+
+
+
+
+ Gets or sets the name of the SSH server.
+
+
+
+
+ Gets or sets the port number to use when authenticating to the SSH server.
+
+
+
+
+ Gets or sets the user name to authenticate to the SSH server.
+
+
+
+
+ Gets or sets the password to authenticate to the SSH server.
+
+
+
+
+ Gets or sets the SSH key file to authenticate to the SSH server.
+
+
+
+
+ Gets or sets the passphrase of the key file to authenticate to the SSH server.
+
+
+
+
+ Gets or sets the idle connection time(seconds) for TCP connections.
+
+
+
+
+ Gets or sets the character set that should be used for sending queries to the server.
+
+
+
+
+ Analyzes the connection string for potential duplicated or invalid connection options.
+
+ Connection string.
+ Flag that indicates if the connection is using X Protocol.
+ Flag that indicates if the default port is used.
+
+
+
+ Represents a set of methods for creating instances of the MySQL client implementation of the data source classes.
+
+
+
+
+ Gets an instance of the .
+ This can be used to retrieve strongly typed data objects.
+
+
+
+
+ Returns a strongly typed instance.
+
+ A new strongly typed instance of DbCommand.
+
+
+
+ Returns a strongly typed instance.
+
+ A new strongly typed instance of DbConnection.
+
+
+
+ Returns a strongly typed instance.
+
+ A new strongly typed instance of DbParameter.
+
+
+
+ Returns a strongly typed instance.
+
+ A new strongly typed instance of DbConnectionStringBuilder.
+
+
+
+ Returns a strongly typed instance.
+
+ A new strongly typed instance of DbCommandBuilder.
+
+
+
+ Returns a strongly typed instance.
+
+ A new strongly typed instance of DbDataAdapter.
+
+
+
+ Provide a simple caching layer
+
+
+
+
+ Aids in the creation of connection strings by exposing the connection options as properties.
+ Contains connection options specific to the Classic protocol.
+
+
+
+
+ Main constructor.
+
+
+
+
+ Constructor accepting a connection string.
+
+ The connection string.
+
+
+
+ Readonly field containing a collection of classic protocol and protocol shared connection options.
+
+
+
+
+ Gets or sets the name of the named pipe that should be used
+ for communicating with MySQL.
+
+
+
+
+ Gets or sets a boolean value that indicates whether this connection
+ should use compression.
+
+
+
+
+ Gets or sets a boolean value that indicates whether this connection will allow
+ commands to send multiple SQL statements in one execution.
+
+
+
+
+ Gets or sets a boolean value that indicates whether logging is enabled.
+
+
+
+
+ Gets or sets the base name of the shared memory objects used to
+ communicate with MySQL when the shared memory protocol is being used.
+
+
+
+
+ Gets or sets the default command timeout.
+
+
+
+
+ Gets or sets the connection timeout.
+
+
+
+
+ Gets or sets a boolean value that indicates whether this connection will allow
+ to load data local infile.
+
+
+
+
+ Gets or sets the safe path where files can be read and uploaded to the server.
+
+
+
+
+ Gets or sets a boolean value that indicates if the password should be persisted
+ in the connection string.
+
+
+
+
+ Gets or sets a boolean value that indicates if the connection should be encrypted.
+
+ Obsolte. Use instead.
+
+
+
+ Gets or sets a boolean value that indicates if RSA public keys should be retrieved from the server.
+
+ This option is only relevant when SSL is disabled. Setting this option to true in
+ 8.0 servers that have the caching_sha2_password authentication plugin as the default plugin will
+ cause the connection attempt to fail if the user hasn't successfully connected to the server on a
+ previous occasion.
+
+
+
+ Gets or sets a boolean value that indicates if zero date time values are supported.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if zero datetime values should be
+ converted to DateTime.MinValue.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if the Usage Advisor should be enabled.
+
+ Default value is false.
+
+
+
+ Gets or sets the size of the stored procedure cache.
+
+ Default value is 25.
+
+
+
+ Gets or sets a boolean value that indicates if the performance monitor hooks should be enabled.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if calls to the Prepare method should be ignored.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if an opened connection should particiapte in the current scope.
+
+ Default value is true.
+
+
+
+ Gets or sets a boolean value that indicates if security asserts must be included.
+
+ Must be set to true when using the class in a partial trust environment,
+ with the library installed in the GAC of the hosting environment. Not supported in .NET Core.
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if column binary flags set by the server are ignored.
+
+ Default value is true.
+
+
+
+ Gets or sets a boolean value that indicates if TINYINT(1) shound be treated as a BOOLEAN.
+
+ Default value is true.
+
+
+
+ Gets or sets a boolean value that indicates if the provider expects user variables in the SQL.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if the session should be interactive.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if server functions should be treated as returning a string.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if the server should report affected rows instead of found rows.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if items of data type BINARY(16) should be treated as guids.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if SQL Server syntax should be allowed by supporting square brackets
+ around symbols instead of backticks.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates if caching of TableDirect commands is enabled.
+
+ Default value is false.
+
+
+
+ Gets or sets the seconds for how long a TableDirect result should be cached.
+
+ Default value is 0.
+
+
+
+ Gets or sets a boolean value that indicates if stored routine parameters should be checked against the server.
+
+ Default value is true.
+
+
+
+ Gets or sets a boolean value that indicates if this connection will use replication.
+
+ Default value is false.
+
+
+
+ Gets or sets the list of interceptors that can triage thrown MySqlExceptions.
+
+
+
+
+ Gets or sets the list of interceptors that can intercept command operations.
+
+
+
+
+ Gets or sets the lifetime of a pooled connection.
+
+ Default value is 0.
+
+
+
+ Gets or sets a boolean value indicating if connection pooling is enabled.
+
+ Default value is true.
+
+
+
+ Gets the minimum connection pool size.
+
+ Default value is 0.
+
+
+
+ Gets or sets the maximum connection pool setting.
+
+ Default value is 100.
+
+
+
+ Gets or sets a boolean value that indicates if the connection should be reset when retrieved
+ from the pool.
+
+ Default value is false.
+
+
+
+ Gets or sets a boolean value that indicates whether the server variable settings are updated by a
+ SHOW VARIABLES command each time a pooled connection is returned.
+
+ Default value is false.
+
+
+
+ Indicates whether the driver should treat binary BLOBs as UTF8.
+
+ Default value is false.
+
+
+
+ Gets or sets the pattern to match for the columns that should be treated as UTF8.
+
+
+
+
+ Gets or sets the pattern to match for the columns that should not be treated as UTF8.
+
+
+
+
+ Gets or sets a connection option.
+
+ The keyword that identifies the connection option to modify.
+
+
+
+ Summary description for ClientParam.
+
+
+
+
+ DB Operations Code
+
+
+
+
+ Specifies MySQL specific data type of a field, property, for use in a .
+
+
+
+
+
+ A fixed precision and scale numeric value between -1038
+ -1 and 10 38 -1.
+
+
+
+
+ The signed range is -128 to 127. The unsigned
+ range is 0 to 255.
+
+
+
+
+ A 16-bit signed integer. The signed range is
+ -32768 to 32767. The unsigned range is 0 to 65535
+
+
+
+
+ Specifies a 24 (3 byte) signed or unsigned value.
+
+
+
+
+ A 32-bit signed integer
+
+
+
+
+ A 64-bit signed integer.
+
+
+
+
+ A small (single-precision) floating-point
+ number. Allowable values are -3.402823466E+38 to -1.175494351E-38,
+ 0, and 1.175494351E-38 to 3.402823466E+38.
+
+
+
+
+ A normal-size (double-precision)
+ floating-point number. Allowable values are -1.7976931348623157E+308
+ to -2.2250738585072014E-308, 0, and 2.2250738585072014E-308 to
+ 1.7976931348623157E+308.
+
+
+
+
+ A timestamp. The range is '1970-01-01 00:00:00' to sometime in the
+ year 2037
+
+
+
+
+ Date The supported range is '1000-01-01' to '9999-12-31'.
+
+
+
+
+ Time The range is '-838:59:59' to '838:59:59'.
+
+
+
+
+ DateTime The supported range is '1000-01-01 00:00:00' to
+ '9999-12-31 23:59:59'.
+
+
+
+
+ Datetime The supported range is '1000-01-01 00:00:00' to
+ '9999-12-31 23:59:59'.
+
+
+
+
+ A year in 2- or 4-digit format (default is 4-digit). The
+ allowable values are 1901 to 2155, 0000 in the 4-digit year
+ format, and 1970-2069 if you use the 2-digit format (70-69).
+
+
+
+
+ Obsolete Use Datetime or Date type
+
+
+
+
+ A variable-length string containing 0 to 65535 characters
+
+
+
+
+ Bit-field data type
+
+
+
+
+ JSON
+
+
+
+
+ New Decimal
+
+
+
+
+ An enumeration. A string object that can have only one value,
+ chosen from the list of values 'value1', 'value2', ..., NULL
+ or the special "" error value. An ENUM can have a maximum of
+ 65535 distinct values
+
+
+
+
+ A set. A string object that can have zero or more values, each
+ of which must be chosen from the list of values 'value1', 'value2',
+ ... A SET can have a maximum of 64 members.
+
+
+
+
+ A binary column with a maximum length of 255 (2^8 - 1)
+ characters
+
+
+
+
+ A binary column with a maximum length of 16777215 (2^24 - 1) bytes.
+
+
+
+
+ A binary column with a maximum length of 4294967295 or
+ 4G (2^32 - 1) bytes.
+
+
+
+
+ A binary column with a maximum length of 65535 (2^16 - 1) bytes.
+
+
+
+
+ A variable-length string containing 0 to 255 bytes.
+
+
+
+
+ A fixed-length string.
+
+
+
+
+ Geometric (GIS) data type.
+
+
+
+
+ Unsigned 8-bit value.
+
+
+
+
+ Unsigned 16-bit value.
+
+
+
+
+ Unsigned 24-bit value.
+
+
+
+
+ Unsigned 32-bit value.
+
+
+
+
+ Unsigned 64-bit value.
+
+
+
+
+ Fixed length binary string.
+
+
+
+
+ Variable length binary string.
+
+
+
+
+ A text column with a maximum length of 255 (2^8 - 1) characters.
+
+
+
+
+ A text column with a maximum length of 16777215 (2^24 - 1) characters.
+
+
+
+
+ A text column with a maximum length of 4294967295 or
+ 4G (2^32 - 1) characters.
+
+
+
+
+ A text column with a maximum length of 65535 (2^16 - 1) characters.
+
+
+
+
+ A guid column.
+
+
+
+
+ Allows the user to specify the type of connection that should
+ be used.
+
+
+
+
+ TCP/IP style connection. Works everywhere.
+
+
+
+
+ TCP/IP style connection. Works everywhere.
+
+
+
+
+ TCP/IP style connection. Works everywhere.
+
+
+
+
+ Named pipe connection. Works only on Windows systems.
+
+
+
+
+ Named pipe connection. Works only on Windows systems.
+
+
+
+
+ Unix domain socket connection. Works only with Unix systems.
+
+
+
+
+ Unix domain socket connection. Works only with Unix systems.
+
+
+
+
+ Shared memory connection. Currently works only with Windows systems.
+
+
+
+
+ Shared memory connection. Currently works only with Windows systems.
+
+
+
+
+ SSL options for connection.
+
+
+
+
+ Do not use SSL.
+
+
+
+
+ Use SSL, if server supports it. This option is only available for the classic protocol.
+
+
+
+
+ Always use SSL. Deny connection if server does not support SSL.
+ Do not perform server certificate validation.
+ This is the default SSL mode when the same isn't specified as part of the connection string.
+
+
+
+
+ Always use SSL. Validate server SSL certificate, but different host name mismatch.
+
+
+
+
+ Always use SSL and perform full certificate validation.
+
+
+
+
+ Specifies the connection types supported
+
+
+
+
+ Use TCP/IP sockets.
+
+
+
+
+ Use client library.
+
+
+
+
+ Use MySQL embedded server.
+
+
+
+
+ Defines the location of the certificate store.
+
+
+
+
+ Do not use certificate store.
+
+
+
+
+ Use certificate store for the current user.
+
+
+
+
+ User certificate store for the machine.
+
+
+
+
+ Specifies the authentication mechanism that should be used.
+
+
+
+
+ If SSL is enabled or Unix sockets are being used, sets PLAIN as the authentication mechanism;
+ otherwise, it tries to use MYSQL41 and then SHA256_MEMORY.
+
+
+
+
+ Authenticate using PLAIN.
+
+
+
+
+ Authenticate using MYSQL41.
+
+
+
+
+ Authenticate using EXTERNAL.
+
+
+
+
+ Authenticate using SHA256_MEMORY.
+
+
+
+
+ Defines waiting options that may be used with row locking options.
+
+
+
+
+ Waits until the blocking transaction releases the row lock.
+
+
+
+
+ Never waits to acquire a row lock. The query executes immediately,
+ failing with an error if a requested row is locked.
+
+
+
+
+ Never waits to acquire a row lock. The query executes immediately,
+ removing locked rows from the result set.
+
+
+
+
+ Defines the type of compression used when data is exchanged between client and server.
+
+
+
+
+ Uses compression if client and server are able to reach a concensus. Otherwise, compression
+ is not used.
+
+
+
+
+ Enforces the use of compression. If no concensus is reached, an error is raised.
+
+
+
+
+ Disables compression.
+
+
+
+
+ Defines the compression algorithms that can be used.
+
+
+
+
+ Collection of error codes that can be returned by the server
+
+
+
+
+
+
+
+
+
+
+ Error level
+
+
+
+
+ Error code
+
+
+
+
+ Error message
+
+
+
+
+ Provides a reference to error codes returned by MySQL.
+
+
+
+
+ ER_HASHCHK
+
+
+
+ ER_NISAMCHK
+
+
+
+ ER_NO
+
+
+
+ ER_YES
+
+
+ The file couldn't be created.
+ ER_CANT_CREATE_FILE
+
+
+ The table couldn't be created.
+ ER_CANT_CREATE_TABLE
+
+
+ The database couldn't be created.
+ ER_CANT_CREATE_DB
+
+
+ The database couldn't be created, it already exists.
+ ER_DB_CREATE_EXISTS
+
+
+ The database couldn't be dropped, it doesn't exist.
+ ER_DB_DROP_EXISTS
+
+
+ The database couldn't be dropped, the file can't be deleted.
+ ER_DB_DROP_DELETE
+
+
+ The database couldn't be dropped, the directory can't be deleted.
+ ER_DB_DROP_RMDIR
+
+
+ The file couldn't be deleted.
+ ER_CANT_DELETE_FILE
+
+
+ The record couldn't be read from the system table.
+ ER_CANT_FIND_SYSTEM_REC
+
+
+ The status couldn't be retrieved.
+ ER_CANT_GET_STAT
+
+
+ The working directory couldn't be retrieved.
+ ER_CANT_GET_WD
+
+
+ The file couldn't be locked.
+ ER_CANT_LOCK
+
+
+ The file couldn't be opened.
+ ER_CANT_OPEN_FILE
+
+
+ The file couldn't be found.
+ ER_FILE_NOT_FOUND
+
+
+ The directory couldn't be read.
+ ER_CANT_READ_DIR
+
+
+ The working directory couldn't be entered.
+ ER_CANT_SET_WD
+
+
+ The record changed since it was last read.
+ ER_CHECKREAD
+
+
+ The disk is full.
+ ER_DISK_FULL
+
+
+
+ There is already a key with the given values.
+
+
+
+ An error occurred when closing the file.
+ ER_ERROR_ON_CLOSE
+
+
+ An error occurred when reading from the file.
+ ER_ERROR_ON_READ
+
+
+ An error occurred when renaming then file.
+ ER_ERROR_ON_RENAME
+
+
+ An error occurred when writing to the file.
+ ER_ERROR_ON_WRITE
+
+
+ The file is in use.
+ ER_FILE_USED
+
+
+ Sorting has been aborted.
+ ER_FILSORT_ABORT
+
+
+ The view doesn't exist.
+ ER_FORM_NOT_FOUND
+
+
+ Got the specified error from the table storage engine.
+ ER_GET_ERRNO
+
+
+ The table storage engine doesn't support the specified option.
+ ER_ILLEGAL_HA
+
+
+
+ The specified key was not found.
+
+
+
+ The file contains incorrect information.
+ ER_NOT_FORM_FILE
+
+
+ The key file is incorrect for the table, it should be repaired.
+ ER_NOT_KEYFILE
+
+
+ The key file is old for the table, it should be repaired.
+ ER_OLD_KEYFILE
+
+
+ The table is read-only
+ ER_OPEN_AS_READONLY
+
+
+ The server is out of memory, it should be restarted.
+ ER_OUTOFMEMORY
+
+
+ The server is out of sort-memory, the sort buffer size should be increased.
+ ER_OUT_OF_SORTMEMORY
+
+
+ An unexpected EOF was found when reading from the file.
+ ER_UNEXPECTED_EOF
+
+
+ Too many connections are open.
+ ER_CON_COUNT_ERROR
+
+
+ The server is out of resources, check if MySql or some other process is using all available memory.
+ ER_OUT_OF_RESOURCES
+
+
+
+ Given when the connection is unable to successfully connect to host.
+
+
+
+ The handshake was invalid.
+ ER_HANDSHAKE_ERROR
+
+
+ Access was denied for the specified user using the specified database.
+ ER_DBACCESS_DENIED_ERROR
+
+
+
+ Normally returned when an incorrect password is given
+
+
+
+ No database has been selected.
+ ER_NO_DB_ERROR
+
+
+ The command is unknown.
+ ER_UNKNOWN_COM_ERROR
+
+
+ The specified column cannot be NULL.
+ ER_BAD_NULL_ERROR
+
+
+ The specified database is not known.
+
+
+ The specified table already exists.
+ ER_TABLE_EXISTS_ERROR
+
+
+ The specified table is unknown.
+ ER_BAD_TABLE_ERROR
+
+
+ The specified column is ambiguous.
+ ER_NON_UNIQ_ERROR
+
+
+ The server is currently being shutdown.
+ ER_SERVER_SHUTDOWN
+
+
+ The specified columns is unknown.
+ ER_BAD_FIELD_ERROR
+
+
+ The specified column isn't in GROUP BY.
+ ER_WRONG_FIELD_WITH_GROUP
+
+
+ The specified columns cannot be grouped on.
+ ER_WRONG_GROUP_FIELD
+
+
+ There are sum functions and columns in the same statement.
+ ER_WRONG_SUM_SELECT
+
+
+ The column count doesn't match the value count.
+ ER_WRONG_VALUE_COUNT
+
+
+ The identifier name is too long.
+ ER_TOO_LONG_IDENT
+
+
+ The column name is duplicated.
+ ER_DUP_FIELDNAME
+
+
+
+ Duplicate Key Name
+
+
+
+
+ Duplicate Key Entry
+
+
+
+ The column specifier is incorrect.
+ ER_WRONG_FIELD_SPEC
+
+
+ An error occurred when parsing the statement.
+ ER_PARSE_ERROR
+
+
+ The statement is empty.
+ ER_EMPTY_QUERY
+
+
+ The table alias isn't unique.
+ ER_NONUNIQ_TABLE
+
+
+ The default value is invalid for the specified field.
+ ER_INVALID_DEFAULT
+
+
+ The table has multiple primary keys defined.
+ ER_MULTIPLE_PRI_KEY
+
+
+ Too many keys were defined for the table.
+ ER_TOO_MANY_KEYS
+
+
+ Too many parts to the keys were defined for the table.
+ ER_TOO_MANY_KEY_PARTS
+
+
+ The specified key is too long
+ ER_TOO_LONG_KEY
+
+
+ The specified key column doesn't exist in the table.
+ ER_KEY_COLUMN_DOES_NOT_EXITS
+
+
+ The BLOB column was used as a key, this can't be done.
+ ER_BLOB_USED_AS_KEY
+
+
+ The column length is too big for the specified column type.
+ ER_TOO_BIG_FIELDLENGTH
+
+
+ There can only be one auto-column, and it must be defined as a PK.
+ ER_WRONG_AUTO_KEY
+
+
+ The server is ready to accept connections.
+ ER_READY
+
+
+
+ ER_NORMAL_SHUTDOWN
+
+
+ The server received the specified signal and is aborting.
+ ER_GOT_SIGNAL
+
+
+ The server shutdown is complete.
+ ER_SHUTDOWN_COMPLETE
+
+
+ The server is forcing close of the specified thread.
+ ER_FORCING_CLOSE
+
+
+ An error occurred when creating the IP socket.
+ ER_IPSOCK_ERROR
+
+
+ The table has no index like the one used in CREATE INDEX.
+ ER_NO_SUCH_INDEX
+
+
+ The field separator argument is not what is expected, check the manual.
+ ER_WRONG_FIELD_TERMINATORS
+
+
+ The BLOB columns must terminated, fixed row lengths cannot be used.
+ ER_BLOBS_AND_NO_TERMINATED
+
+
+ The text file cannot be read.
+ ER_TEXTFILE_NOT_READABLE
+
+
+ The specified file already exists.
+ ER_FILE_EXISTS_ERROR
+
+
+ Information returned by the LOAD statement.
+ ER_LOAD_INFO
+
+
+ Information returned by an UPDATE statement.
+ ER_ALTER_INFO
+
+
+ The prefix key is incorrect.
+ ER_WRONG_SUB_KEY
+
+
+ All columns cannot be removed from a table, use DROP TABLE instead.
+ ER_CANT_REMOVE_ALL_FIELDS
+
+
+ Cannot DROP, check that the column or key exists.
+ ER_CANT_DROP_FIELD_OR_KEY
+
+
+ Information returned by an INSERT statement.
+ ER_INSERT_INFO
+
+
+ The target table cannot be specified for update in FROM clause.
+ ER_UPDATE_TABLE_USED
+
+
+ The specified thread ID is unknown.
+ ER_NO_SUCH_THREAD
+
+
+ The thread cannot be killed, the current user is not the owner.
+ ER_KILL_DENIED_ERROR
+
+
+ No tables used in the statement.
+ ER_NO_TABLES_USED
+
+
+ Too many string have been used for the specified column and SET.
+ ER_TOO_BIG_SET
+
+
+ A unique filename couldn't be generated.
+ ER_NO_UNIQUE_LOGFILE
+
+
+ The specified table was locked with a READ lock, and can't be updated.
+ ER_TABLE_NOT_LOCKED_FOR_WRITE
+
+
+ The specified table was not locked with LOCK TABLES.
+ ER_TABLE_NOT_LOCKED
+
+
+ BLOB and Text columns cannot have a default value.
+ ER_BLOB_CANT_HAVE_DEFAULT
+
+
+ The specified database name is incorrect.
+ ER_WRONG_DB_NAME
+
+
+ The specified table name is incorrect.
+ ER_WRONG_TABLE_NAME
+
+
+ The SELECT command would examine more than MAX_JOIN_SIZE rows, check the WHERE clause and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is ok.
+ ER_TOO_BIG_SELECT
+
+
+ An unknown error occurred.
+ ER_UNKNOWN_ERROR
+
+
+ The specified procedure is unknown.
+ ER_UNKNOWN_PROCEDURE
+
+
+ The number of parameters provided for the specified procedure is incorrect.
+ ER_WRONG_PARAMCOUNT_TO_PROCEDURE
+
+
+ The parameters provided for the specified procedure are incorrect.
+ ER_WRONG_PARAMETERS_TO_PROCEDURE
+
+
+ The specified table is unknown.
+ ER_UNKNOWN_TABLE
+
+
+ The specified column has been specified twice.
+ ER_FIELD_SPECIFIED_TWICE
+
+
+ The group function has been incorrectly used.
+ ER_INVALID_GROUP_FUNC_USE
+
+
+ The specified table uses an extension that doesn't exist in this MySQL version.
+ ER_UNSUPPORTED_EXTENSION
+
+
+ The table must have at least one column.
+ ER_TABLE_MUST_HAVE_COLUMNS
+
+
+ The specified table is full.
+ ER_RECORD_FILE_FULL
+
+
+ The specified character set is unknown.
+ ER_UNKNOWN_CHARACTER_SET
+
+
+ Too many tables, MySQL can only use the specified number of tables in a JOIN.
+ ER_TOO_MANY_TABLES
+
+
+ Too many columns
+ ER_TOO_MANY_FIELDS
+
+
+ The row size is too large, the maximum row size for the used tables (not counting BLOBS) is specified, change some columns or BLOBS.
+ ER_TOO_BIG_ROWSIZE
+
+
+ A thread stack overrun occurred. Stack statistics are specified.
+ ER_STACK_OVERRUN
+
+
+ A cross dependency was found in the OUTER JOIN, examine the ON conditions.
+ ER_WRONG_OUTER_JOIN
+
+
+ The table handler doesn't support NULL in the given index, change specified column to be NOT NULL or use another handler.
+ ER_NULL_COLUMN_IN_INDEX
+
+
+ The specified user defined function cannot be loaded.
+ ER_CANT_FIND_UDF
+
+
+ The specified user defined function cannot be initialised.
+ ER_CANT_INITIALIZE_UDF
+
+
+ No paths are allowed for the shared library.
+ ER_UDF_NO_PATHS
+
+
+ The specified user defined function already exists.
+ ER_UDF_EXISTS
+
+
+ The specified shared library cannot be opened.
+ ER_CANT_OPEN_LIBRARY
+
+
+ The specified symbol cannot be found in the library.
+ ER_CANT_FIND_DL_ENTRY
+
+
+ The specified function is not defined.
+ ER_FUNCTION_NOT_DEFINED
+
+
+ The specified host is blocked because of too many connection errors, unblock with 'mysqladmin flush-hosts'.
+ ER_HOST_IS_BLOCKED
+
+
+
+ The given host is not allowed to connect
+
+
+
+
+ The anonymous user is not allowed to connect
+
+
+
+
+ The given password is not allowed
+
+
+
+
+ The given password does not match
+
+
+
+ Information returned by an UPDATE statement.
+ ER_UPDATE_INFO
+
+
+ A new thread couldn't be created.
+ ER_CANT_CREATE_THREAD
+
+
+ The column count doesn't match the value count.
+ ER_WRONG_VALUE_COUNT_ON_ROW
+
+
+ The specified table can't be re-opened.
+ ER_CANT_REOPEN_TABLE
+
+
+ The NULL value has been used incorrectly.
+ ER_INVALID_USE_OF_NULL
+
+
+ The regular expression contains an error.
+ ER_REGEXP_ERROR
+
+
+ GROUP columns (MIN(), MAX(), COUNT(), ...) cannot be mixes with no GROUP columns if there is not GROUP BY clause.
+ ER_MIX_OF_GROUP_FUNC_AND_FIELDS
+
+
+
+ ER_NONEXISTING_GRANT
+
+
+
+ ER_TABLEACCESS_DENIED_ERROR
+
+
+
+ ER_COLUMNACCESS_DENIED_ERROR
+
+
+
+ ER_ILLEGAL_GRANT_FOR_TABLE
+
+
+
+ ER_GRANT_WRONG_HOST_OR_USER
+
+
+
+ ER_NO_SUCH_TABLE
+
+
+
+ ER_NONEXISTING_TABLE_GRANT
+
+
+
+ ER_NOT_ALLOWED_COMMAND
+
+
+
+ ER_SYNTAX_ERROR
+
+
+
+ ER_DELAYED_CANT_CHANGE_LOCK
+
+
+
+ ER_TOO_MANY_DELAYED_THREADS
+
+
+
+ ER_ABORTING_CONNECTION
+
+
+
+ An attempt was made to send or receive a packet larger than
+ max_allowed_packet_size
+
+
+
+
+ ER_NET_READ_ERROR_FROM_PIPE
+
+
+
+ ER_NET_FCNTL_ERROR
+
+
+
+ ER_NET_PACKETS_OUT_OF_ORDER
+
+
+
+ ER_NET_UNCOMPRESS_ERROR
+
+
+
+ ER_NET_READ_ERROR
+
+
+
+ ER_NET_READ_INTERRUPTED
+
+
+
+ ER_NET_ERROR_ON_WRITE
+
+
+
+ ER_NET_WRITE_INTERRUPTED
+
+
+
+ ER_TOO_LONG_STRING
+
+
+
+ ER_TABLE_CANT_HANDLE_BLOB
+
+
+
+ ER_TABLE_CANT_HANDLE_AUTO_INCREMENT
+
+
+
+ ER_DELAYED_INSERT_TABLE_LOCKED
+
+
+
+ ER_WRONG_COLUMN_NAME
+
+
+
+ ER_WRONG_KEY_COLUMN
+
+
+
+ ER_WRONG_MRG_TABLE
+
+
+
+ ER_DUP_UNIQUE
+
+
+
+ ER_BLOB_KEY_WITHOUT_LENGTH
+
+
+
+ ER_PRIMARY_CANT_HAVE_NULL
+
+
+
+ ER_TOO_MANY_ROWS
+
+
+
+ ER_REQUIRES_PRIMARY_KEY
+
+
+
+ ER_NO_RAID_COMPILED
+
+
+
+ ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE
+
+
+
+ ER_KEY_DOES_NOT_EXITS
+
+
+
+ ER_CHECK_NO_SUCH_TABLE
+
+
+
+ ER_CHECK_NOT_IMPLEMENTED
+
+
+
+ ER_CANT_DO_THIS_DURING_AN_TRANSACTION
+
+
+
+ ER_ERROR_DURING_COMMIT
+
+
+
+ ER_ERROR_DURING_ROLLBACK
+
+
+
+ ER_ERROR_DURING_FLUSH_LOGS
+
+
+
+ ER_ERROR_DURING_CHECKPOINT
+
+
+
+ ER_NEW_ABORTING_CONNECTION
+
+
+
+ ER_DUMP_NOT_IMPLEMENTED
+
+
+
+ ER_FLUSH_SOURCE_BINLOG_CLOSED
+
+
+
+ ER_INDEX_REBUILD
+
+
+
+ ER_SOURCE
+
+
+
+ ER_SOURCE_NET_READ
+
+
+
+ ER_SOURCE_NET_WRITE
+
+
+
+ ER_FT_MATCHING_KEY_NOT_FOUND
+
+
+
+ ER_LOCK_OR_ACTIVE_TRANSACTION
+
+
+
+ ER_UNKNOWN_SYSTEM_VARIABLE
+
+
+
+ ER_CRASHED_ON_USAGE
+
+
+
+ ER_CRASHED_ON_REPAIR
+
+
+
+ ER_WARNING_NOT_COMPLETE_ROLLBACK
+
+
+
+ ER_TRANS_CACHE_FULL
+
+
+
+ ER_REPLICA_MUST_STOP
+
+
+
+ ER_REPLICA_NOT_RUNNING
+
+
+
+ ER_BAD_REPLICA
+
+
+
+ ER_SOURCE_INFO
+
+
+
+ ER_REPLICA_THREAD
+
+
+
+ ER_TOO_MANY_USER_CONNECTIONS
+
+
+
+ ER_SET_CONSTANTS_ONLY
+
+
+
+ ER_LOCK_WAIT_TIMEOUT
+
+
+
+ ER_LOCK_TABLE_FULL
+
+
+
+ ER_READ_ONLY_TRANSACTION
+
+
+
+ ER_DROP_DB_WITH_READ_LOCK
+
+
+
+ ER_CREATE_DB_WITH_READ_LOCK
+
+
+
+ ER_WRONG_ARGUMENTS
+
+
+
+ ER_NO_PERMISSION_TO_CREATE_USER
+
+
+
+ ER_UNION_TABLES_IN_DIFFERENT_DIR
+
+
+
+ ER_LOCK_DEADLOCK
+
+
+
+ ER_TABLE_CANT_HANDLE_FT
+
+
+
+ ER_CANNOT_ADD_FOREIGN
+
+
+
+ ER_NO_REFERENCED_ROW
+
+
+
+ ER_ROW_IS_REFERENCED
+
+
+
+ ER_CONNECT_TO_SOURCE
+
+
+
+ ER_QUERY_ON_SOURCE
+
+
+
+ ER_ERROR_WHEN_EXECUTING_COMMAND
+
+
+
+ ER_WRONG_USAGE
+
+
+
+ ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
+
+
+
+ ER_CANT_UPDATE_WITH_READLOCK
+
+
+
+ ER_MIXING_NOT_ALLOWED
+
+
+
+ ER_DUP_ARGUMENT
+
+
+
+ ER_USER_LIMIT_REACHED
+
+
+
+ ER_SPECIFIC_ACCESS_DENIED_ERROR
+
+
+
+ ER_LOCAL_VARIABLE
+
+
+
+ ER_GLOBAL_VARIABLE
+
+
+
+ ER_NO_DEFAULT
+
+
+
+ ER_WRONG_VALUE_FOR_VAR
+
+
+
+ ER_WRONG_TYPE_FOR_VAR
+
+
+
+ ER_VAR_CANT_BE_READ
+
+
+
+ ER_CANT_USE_OPTION_HERE
+
+
+
+ ER_NOT_SUPPORTED_YET
+
+
+
+ ER_SOURCE_FATAL_ERROR_READING_BINLOG
+
+
+
+ ER_REPLICA_IGNORED_TABLE
+
+
+
+ ER_INCORRECT_GLOBAL_LOCAL_VAR
+
+
+
+ ER_WRONG_FK_DEF
+
+
+
+ ER_KEY_REF_DO_NOT_MATCH_TABLE_REF
+
+
+
+ ER_OPERAND_COLUMNS
+
+
+
+ ER_SUBQUERY_NO_1_ROW
+
+
+
+ ER_UNKNOWN_STMT_HANDLER
+
+
+
+ ER_CORRUPT_HELP_DB
+
+
+
+ ER_CYCLIC_REFERENCE
+
+
+
+ ER_AUTO_CONVERT
+
+
+
+ ER_ILLEGAL_REFERENCE
+
+
+
+ ER_DERIVED_MUST_HAVE_ALIAS
+
+
+
+ ER_SELECT_REDUCED
+
+
+
+ ER_TABLENAME_NOT_ALLOWED_HERE
+
+
+
+ ER_NOT_SUPPORTED_AUTH_MODE
+
+
+
+ ER_SPATIAL_CANT_HAVE_NULL
+
+
+
+ ER_COLLATION_CHARSET_MISMATCH
+
+
+
+ ER_REPLICA_WAS_RUNNING
+
+
+
+ ER_REPLICA_WAS_NOT_RUNNING
+
+
+
+ ER_TOO_BIG_FOR_UNCOMPRESS
+
+
+
+ ER_ZLIB_Z_MEM_ERROR
+
+
+
+ ER_ZLIB_Z_BUF_ERROR
+
+
+
+ ER_ZLIB_Z_DATA_ERROR
+
+
+
+ ER_CUT_VALUE_GROUP_CONCAT
+
+
+
+ ER_WARN_TOO_FEW_RECORDS
+
+
+
+ ER_WARN_TOO_MANY_RECORDS
+
+
+
+ ER_WARN_NULL_TO_NOTNULL
+
+
+
+ ER_WARN_DATA_OUT_OF_RANGE
+
+
+
+ WARN_DATA_TRUNCATED
+
+
+
+ ER_WARN_USING_OTHER_HANDLER
+
+
+
+ ER_CANT_AGGREGATE_2COLLATIONS
+
+
+
+ ER_DROP_USER
+
+
+
+ ER_REVOKE_GRANTS
+
+
+
+ ER_CANT_AGGREGATE_3COLLATIONS
+
+
+
+ ER_CANT_AGGREGATE_NCOLLATIONS
+
+
+
+ ER_VARIABLE_IS_NOT_STRUCT
+
+
+
+ ER_UNKNOWN_COLLATION
+
+
+
+ ER_REPLICA_IGNORED_SSL_PARAMS
+
+
+
+ ER_SERVER_IS_IN_SECURE_AUTH_MODE
+
+
+
+ ER_WARN_FIELD_RESOLVED
+
+
+
+ ER_BAD_REPLICA_UNTIL_COND
+
+
+
+ ER_MISSING_SKIP_REPLICA
+
+
+
+ ER_UNTIL_COND_IGNORED
+
+
+
+ ER_WRONG_NAME_FOR_INDEX
+
+
+
+ ER_WRONG_NAME_FOR_CATALOG
+
+
+
+ ER_WARN_QC_RESIZE
+
+
+
+ ER_BAD_FT_COLUMN
+
+
+
+ ER_UNKNOWN_KEY_CACHE
+
+
+
+ ER_WARN_HOSTNAME_WONT_WORK
+
+
+
+ ER_UNKNOWN_STORAGE_ENGINE
+
+
+
+ ER_WARN_DEPRECATED_SYNTAX
+
+
+
+ ER_NON_UPDATABLE_TABLE
+
+
+
+ ER_FEATURE_DISABLED
+
+
+
+ ER_OPTION_PREVENTS_STATEMENT
+
+
+
+ ER_DUPLICATED_VALUE_IN_TYPE
+
+
+
+ ER_TRUNCATED_WRONG_VALUE
+
+
+
+ ER_TOO_MUCH_AUTO_TIMESTAMP_COLS
+
+
+
+ ER_INVALID_ON_UPDATE
+
+
+
+ ER_UNSUPPORTED_PS
+
+
+
+ ER_GET_ERRMSG
+
+
+
+ ER_GET_TEMPORARY_ERRMSG
+
+
+
+ ER_UNKNOWN_TIME_ZONE
+
+
+
+ ER_WARN_INVALID_TIMESTAMP
+
+
+
+ ER_INVALID_CHARACTER_STRING
+
+
+
+ ER_WARN_ALLOWED_PACKET_OVERFLOWED
+
+
+
+ ER_CONFLICTING_DECLARATIONS
+
+
+
+ ER_SP_NO_RECURSIVE_CREATE
+
+
+
+ ER_SP_ALREADY_EXISTS
+
+
+
+ ER_SP_DOES_NOT_EXIST
+
+
+
+ ER_SP_DROP_FAILED
+
+
+
+ ER_SP_STORE_FAILED
+
+
+
+ ER_SP_LILABEL_MISMATCH
+
+
+
+ ER_SP_LABEL_REDEFINE
+
+
+
+ ER_SP_LABEL_MISMATCH
+
+
+
+ ER_SP_UNINIT_VAR
+
+
+
+ ER_SP_BADSELECT
+
+
+
+ ER_SP_BADRETURN
+
+
+
+ ER_SP_BADSTATEMENT
+
+
+
+ ER_UPDATE_LOG_DEPRECATED_IGNORED
+
+
+
+ ER_UPDATE_LOG_DEPRECATED_TRANSLATED
+
+
+
+ ER_QUERY_INTERRUPTED
+
+
+
+ ER_SP_WRONG_NO_OF_ARGS
+
+
+
+ ER_SP_COND_MISMATCH
+
+
+
+ ER_SP_NORETURN
+
+
+
+ ER_SP_NORETURNEND
+
+
+
+ ER_SP_BAD_CURSOR_QUERY
+
+
+
+ ER_SP_BAD_CURSOR_SELECT
+
+
+
+ ER_SP_CURSOR_MISMATCH
+
+
+
+ ER_SP_CURSOR_ALREADY_OPEN
+
+
+
+ ER_SP_CURSOR_NOT_OPEN
+
+
+
+ ER_SP_UNDECLARED_VAR
+
+
+
+ ER_SP_WRONG_NO_OF_FETCH_ARGS
+
+
+
+ ER_SP_FETCH_NO_DATA
+
+
+
+ ER_SP_DUP_PARAM
+
+
+
+ ER_SP_DUP_VAR
+
+
+
+ ER_SP_DUP_COND
+
+
+
+ ER_SP_DUP_CURS
+
+
+
+ ER_SP_CANT_ALTER
+
+
+
+ ER_SP_SUBSELECT_NYI
+
+
+
+ ER_STMT_NOT_ALLOWED_IN_SF_OR_TRG
+
+
+
+ ER_SP_VARCOND_AFTER_CURSHNDLR
+
+
+
+ ER_SP_CURSOR_AFTER_HANDLER
+
+
+
+ ER_SP_CASE_NOT_FOUND
+
+
+
+ ER_FPARSER_TOO_BIG_FILE
+
+
+
+ ER_FPARSER_BAD_HEADER
+
+
+
+ ER_FPARSER_EOF_IN_COMMENT
+
+
+
+ ER_FPARSER_ERROR_IN_PARAMETER
+
+
+
+ ER_FPARSER_EOF_IN_UNKNOWN_PARAMETER
+
+
+
+ ER_VIEW_NO_EXPLAIN
+
+
+
+ ER_FRM_UNKNOWN_TYPE
+
+
+
+ ER_WRONG_OBJECT
+
+
+
+ ER_NONUPDATEABLE_COLUMN
+
+
+
+ ER_VIEW_SELECT_DERIVED
+
+
+
+ ER_VIEW_SELECT_CLAUSE
+
+
+
+ ER_VIEW_SELECT_VARIABLE
+
+
+
+ ER_VIEW_SELECT_TMPTABLE
+
+
+
+ ER_VIEW_WRONG_LIST
+
+
+
+ ER_WARN_VIEW_MERGE
+
+
+
+ ER_WARN_VIEW_WITHOUT_KEY
+
+
+
+ ER_VIEW_INVALID
+
+
+
+ ER_SP_NO_DROP_SP
+
+
+
+ ER_SP_GOTO_IN_HNDLR
+
+
+
+ ER_TRG_ALREADY_EXISTS
+
+
+
+ ER_TRG_DOES_NOT_EXIST
+
+
+
+ ER_TRG_ON_VIEW_OR_TEMP_TABLE
+
+
+
+ ER_TRG_CANT_CHANGE_ROW
+
+
+
+ ER_TRG_NO_SUCH_ROW_IN_TRG
+
+
+
+ ER_NO_DEFAULT_FOR_FIELD
+
+
+
+ ER_DIVISION_BY_ZERO
+
+
+
+ ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
+
+
+
+ ER_ILLEGAL_VALUE_FOR_TYPE
+
+
+
+ ER_VIEW_NONUPD_CHECK
+
+
+
+ ER_VIEW_CHECK_FAILED
+
+
+
+ ER_PROCACCESS_DENIED_ERROR
+
+
+
+ ER_RELAY_LOG_FAIL
+
+
+
+ ER_PASSWD_LENGTH
+
+
+
+ ER_UNKNOWN_TARGET_BINLOG
+
+
+
+ ER_IO_ERR_LOG_INDEX_READ
+
+
+
+ ER_BINLOG_PURGE_PROHIBITED
+
+
+
+ ER_FSEEK_FAIL
+
+
+
+ ER_BINLOG_PURGE_FATAL_ERR
+
+
+
+ ER_LOG_IN_USE
+
+
+
+ ER_LOG_PURGE_UNKNOWN_ERR
+
+
+
+ ER_RELAY_LOG_INIT
+
+
+
+ ER_NO_BINARY_LOGGING
+
+
+
+ ER_RESERVED_SYNTAX
+
+
+
+ ER_WSAS_FAILED
+
+
+
+ ER_DIFF_GROUPS_PROC
+
+
+
+ ER_NO_GROUP_FOR_PROC
+
+
+
+ ER_ORDER_WITH_PROC
+
+
+
+ ER_LOGGING_PROHIBIT_CHANGING_OF
+
+
+
+ ER_NO_FILE_MAPPING
+
+
+
+ ER_WRONG_MAGIC
+
+
+
+ ER_PS_MANY_PARAM
+
+
+
+ ER_KEY_PART_0
+
+
+
+ ER_VIEW_CHECKSUM
+
+
+
+ ER_VIEW_MULTIUPDATE
+
+
+
+ ER_VIEW_NO_INSERT_FIELD_LIST
+
+
+
+ ER_VIEW_DELETE_MERGE_VIEW
+
+
+
+ ER_CANNOT_USER
+
+
+
+ ER_XAER_NOTA
+
+
+
+ ER_XAER_INVAL
+
+
+
+ ER_XAER_RMFAIL
+
+
+
+ ER_XAER_OUTSIDE
+
+
+
+ ER_XAER_RMERR
+
+
+
+ ER_XA_RBROLLBACK
+
+
+
+ ER_NONEXISTING_PROC_GRANT
+
+
+
+ ER_PROC_AUTO_GRANT_FAIL
+
+
+
+ ER_PROC_AUTO_REVOKE_FAIL
+
+
+
+ ER_DATA_TOO_LONG
+
+
+
+ ER_SP_BAD_SQLSTATE
+
+
+
+ ER_STARTUP
+
+
+
+ ER_LOAD_FROM_FIXED_SIZE_ROWS_TO_VAR
+
+
+
+ ER_CANT_CREATE_USER_WITH_GRANT
+
+
+
+ ER_WRONG_VALUE_FOR_TYPE
+
+
+
+ ER_TABLE_DEF_CHANGED
+
+
+
+ ER_SP_DUP_HANDLER
+
+
+
+ ER_SP_NOT_VAR_ARG
+
+
+
+ ER_SP_NO_RETSET
+
+
+
+ ER_CANT_CREATE_GEOMETRY_OBJECT
+
+
+
+ ER_FAILED_ROUTINE_BREAK_BINLOG
+
+
+
+ ER_BINLOG_UNSAFE_ROUTINE
+
+
+
+ ER_BINLOG_CREATE_ROUTINE_NEED_SUPER
+
+
+
+ ER_EXEC_STMT_WITH_OPEN_CURSOR
+
+
+
+ ER_STMT_HAS_NO_OPEN_CURSOR
+
+
+
+ ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRG
+
+
+
+ ER_NO_DEFAULT_FOR_VIEW_FIELD
+
+
+
+ ER_SP_NO_RECURSION
+
+
+
+ ER_TOO_BIG_SCALE
+
+
+
+ ER_TOO_BIG_PRECISION
+
+
+
+ ER_M_BIGGER_THAN_D
+
+
+
+ ER_WRONG_LOCK_OF_SYSTEM_TABLE
+
+
+
+ ER_CONNECT_TO_FOREIGN_DATA_SOURCE
+
+
+
+ ER_QUERY_ON_FOREIGN_DATA_SOURCE
+
+
+
+ ER_FOREIGN_DATA_SOURCE_DOESNT_EXIST
+
+
+
+ ER_FOREIGN_DATA_STRING_INVALID_CANT_CREATE
+
+
+
+ ER_FOREIGN_DATA_STRING_INVALID
+
+
+
+ ER_CANT_CREATE_FEDERATED_TABLE
+
+
+
+ ER_TRG_IN_WRONG_SCHEMA
+
+
+
+ ER_STACK_OVERRUN_NEED_MORE
+
+
+
+ ER_TOO_LONG_BODY
+
+
+
+ ER_WARN_CANT_DROP_DEFAULT_KEYCACHE
+
+
+
+ ER_TOO_BIG_DISPLAYWIDTH
+
+
+
+ ER_XAER_DUPID
+
+
+
+ ER_DATETIME_FUNCTION_OVERFLOW
+
+
+
+ ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
+
+
+
+ ER_VIEW_PREVENT_UPDATE
+
+
+
+ ER_PS_NO_RECURSION
+
+
+
+ ER_SP_CANT_SET_AUTOCOMMIT
+
+
+
+ ER_MALFORMED_DEFINER
+
+
+
+ ER_VIEW_FRM_NO_USER
+
+
+
+ ER_VIEW_OTHER_USER
+
+
+
+ ER_NO_SUCH_USER
+
+
+
+ ER_FORBID_SCHEMA_CHANGE
+
+
+
+ ER_ROW_IS_REFERENCED_2
+
+
+
+ ER_NO_REFERENCED_ROW_2
+
+
+
+ ER_SP_BAD_VAR_SHADOW
+
+
+
+ ER_TRG_NO_DEFINER
+
+
+
+ ER_OLD_FILE_FORMAT
+
+
+
+ ER_SP_RECURSION_LIMIT
+
+
+
+ ER_SP_PROC_TABLE_CORRUPT
+
+
+
+ ER_SP_WRONG_NAME
+
+
+
+ ER_TABLE_NEEDS_UPGRADE
+
+
+
+ ER_SP_NO_AGGREGATE
+
+
+
+ ER_MAX_PREPARED_STMT_COUNT_REACHED
+
+
+
+ ER_VIEW_RECURSIVE
+
+
+
+ ER_NON_GROUPING_FIELD_USED
+
+
+
+ ER_TABLE_CANT_HANDLE_SPKEYS
+
+
+
+ ER_NO_TRIGGERS_ON_SYSTEM_SCHEMA
+
+
+
+ ER_REMOVED_SPACES
+
+
+
+ ER_AUTOINC_READ_FAILED
+
+
+
+ ER_USERNAME
+
+
+
+ ER_HOSTNAME
+
+
+
+ ER_WRONG_STRING_LENGTH
+
+
+
+ ER_NON_INSERTABLE_TABLE
+
+
+
+ ER_ADMIN_WRONG_MRG_TABLE
+
+
+
+ ER_TOO_HIGH_LEVEL_OF_NESTING_FOR_SELECT
+
+
+
+ ER_NAME_BECOMES_EMPTY
+
+
+
+ ER_AMBIGUOUS_FIELD_TERM
+
+
+
+ ER_FOREIGN_SERVER_EXISTS
+
+
+
+ ER_FOREIGN_SERVER_DOESNT_EXIST
+
+
+
+ ER_ILLEGAL_HA_CREATE_OPTION
+
+
+
+ ER_PARTITION_REQUIRES_VALUES_ERROR
+
+
+
+ ER_PARTITION_WRONG_VALUES_ERROR
+
+
+
+ ER_PARTITION_MAXVALUE_ERROR
+
+
+
+ ER_PARTITION_SUBPARTITION_ERROR
+
+
+
+ ER_PARTITION_SUBPART_MIX_ERROR
+
+
+
+ ER_PARTITION_WRONG_NO_PART_ERROR
+
+
+
+ ER_PARTITION_WRONG_NO_SUBPART_ERROR
+
+
+
+ ER_WRONG_EXPR_IN_PARTITION_FUNC_ERROR
+
+
+
+ ER_NO_CONST_EXPR_IN_RANGE_OR_LIST_ERROR
+
+
+
+ ER_FIELD_NOT_FOUND_PART_ERROR
+
+
+
+ ER_LIST_OF_FIELDS_ONLY_IN_HASH_ERROR
+
+
+
+ ER_INCONSISTENT_PARTITION_INFO_ERROR
+
+
+
+ ER_PARTITION_FUNC_NOT_ALLOWED_ERROR
+
+
+
+ ER_PARTITIONS_MUST_BE_DEFINED_ERROR
+
+
+
+ ER_RANGE_NOT_INCREASING_ERROR
+
+
+
+ ER_INCONSISTENT_TYPE_OF_FUNCTIONS_ERROR
+
+
+
+ ER_MULTIPLE_DEF_CONST_IN_LIST_PART_ERROR
+
+
+
+ ER_PARTITION_ENTRY_ERROR
+
+
+
+ ER_MIX_HANDLER_ERROR
+
+
+
+ ER_PARTITION_NOT_DEFINED_ERROR
+
+
+
+ ER_TOO_MANY_PARTITIONS_ERROR
+
+
+
+ ER_SUBPARTITION_ERROR
+
+
+
+ ER_CANT_CREATE_HANDLER_FILE
+
+
+
+ ER_BLOB_FIELD_IN_PART_FUNC_ERROR
+
+
+
+ ER_UNIQUE_KEY_NEED_ALL_FIELDS_IN_PF
+
+
+
+ ER_NO_PARTS_ERROR
+
+
+
+ ER_PARTITION_MGMT_ON_NONPARTITIONED
+
+
+
+ ER_FOREIGN_KEY_ON_PARTITIONED
+
+
+
+ ER_DROP_PARTITION_NON_EXISTENT
+
+
+
+ ER_DROP_LAST_PARTITION
+
+
+
+ ER_COALESCE_ONLY_ON_HASH_PARTITION
+
+
+
+ ER_REORG_HASH_ONLY_ON_SAME_NO
+
+
+
+ ER_REORG_NO_PARAM_ERROR
+
+
+
+ ER_ONLY_ON_RANGE_LIST_PARTITION
+
+
+
+ ER_ADD_PARTITION_SUBPART_ERROR
+
+
+
+ ER_ADD_PARTITION_NO_NEW_PARTITION
+
+
+
+ ER_COALESCE_PARTITION_NO_PARTITION
+
+
+
+ ER_REORG_PARTITION_NOT_EXIST
+
+
+
+ ER_SAME_NAME_PARTITION
+
+
+
+ ER_NO_BINLOG_ERROR
+
+
+
+ ER_CONSECUTIVE_REORG_PARTITIONS
+
+
+
+ ER_REORG_OUTSIDE_RANGE
+
+
+
+ ER_PARTITION_FUNCTION_FAILURE
+
+
+
+ ER_PART_STATE_ERROR
+
+
+
+ ER_LIMITED_PART_RANGE
+
+
+
+ ER_PLUGIN_IS_NOT_LOADED
+
+
+
+ ER_WRONG_VALUE
+
+
+
+ ER_NO_PARTITION_FOR_GIVEN_VALUE
+
+
+
+ ER_FILEGROUP_OPTION_ONLY_ONCE
+
+
+
+ ER_CREATE_FILEGROUP_FAILED
+
+
+
+ ER_DROP_FILEGROUP_FAILED
+
+
+
+ ER_TABLESPACE_AUTO_EXTEND_ERROR
+
+
+
+ ER_WRONG_SIZE_NUMBER
+
+
+
+ ER_SIZE_OVERFLOW_ERROR
+
+
+
+ ER_ALTER_FILEGROUP_FAILED
+
+
+
+ ER_BINLOG_ROW_LOGGING_FAILED
+
+
+
+ ER_BINLOG_ROW_WRONG_TABLE_DEF
+
+
+
+ ER_BINLOG_ROW_RBR_TO_SBR
+
+
+
+ ER_EVENT_ALREADY_EXISTS
+
+
+
+ ER_EVENT_STORE_FAILED
+
+
+
+ ER_EVENT_DOES_NOT_EXIST
+
+
+
+ ER_EVENT_CANT_ALTER
+
+
+
+ ER_EVENT_DROP_FAILED
+
+
+
+ ER_EVENT_INTERVAL_NOT_POSITIVE_OR_TOO_BIG
+
+
+
+ ER_EVENT_ENDS_BEFORE_STARTS
+
+
+
+ ER_EVENT_EXEC_TIME_IN_THE_PAST
+
+
+
+ ER_EVENT_OPEN_TABLE_FAILED
+
+
+
+ ER_EVENT_NEITHER_M_EXPR_NOR_M_AT
+
+
+
+ ER_COL_COUNT_DOESNT_MATCH_CORRUPTED
+
+
+
+ ER_CANNOT_LOAD_FROM_TABLE
+
+
+
+ ER_EVENT_CANNOT_DELETE
+
+
+
+ ER_EVENT_COMPILE_ERROR
+
+
+
+ ER_EVENT_SAME_NAME
+
+
+
+ ER_EVENT_DATA_TOO_LONG
+
+
+
+ ER_DROP_INDEX_FK
+
+
+
+ ER_WARN_DEPRECATED_SYNTAX_WITH_VER
+
+
+
+ ER_CANT_WRITE_LOCK_LOG_TABLE
+
+
+
+ ER_CANT_LOCK_LOG_TABLE
+
+
+
+ ER_FOREIGN_DUPLICATE_KEY
+
+
+
+ ER_COL_COUNT_DOESNT_MATCH_PLEASE_UPDATE
+
+
+
+ ER_TEMP_TABLE_PREVENTS_SWITCH_OUT_OF_RBR
+
+
+
+ ER_STORED_FUNCTION_PREVENTS_SWITCH_BINLOG_FORMAT
+
+
+
+ ER_NDB_CANT_SWITCH_BINLOG_FORMAT
+
+
+
+ ER_PARTITION_NO_TEMPORARY
+
+
+
+ ER_PARTITION_CONST_DOMAIN_ERROR
+
+
+
+ ER_PARTITION_FUNCTION_IS_NOT_ALLOWED
+
+
+
+ ER_DDL_LOG_ERROR
+
+
+
+ ER_NULL_IN_VALUES_LESS_THAN
+
+
+
+ ER_WRONG_PARTITION_NAME
+
+
+
+ ER_CANT_CHANGE_TRANSACTION_ISOLATION
+
+
+
+ ER_DUP_ENTRY_AUTOINCREMENT_CASE
+
+
+
+ ER_EVENT_MODIFY_QUEUE_ERROR
+
+
+
+ ER_EVENT_SET_VAR_ERROR
+
+
+
+ ER_PARTITION_MERGE_ERROR
+
+
+
+ ER_CANT_ACTIVATE_LOG
+
+
+
+ ER_RBR_NOT_AVAILABLE
+
+
+
+ ER_BASE64_DECODE_ERROR
+
+
+
+ ER_EVENT_RECURSION_FORBIDDEN
+
+
+
+ ER_EVENTS_DB_ERROR
+
+
+
+ ER_ONLY_INTEGERS_ALLOWED
+
+
+
+ ER_UNSUPORTED_LOG_ENGINE
+
+
+
+ ER_BAD_LOG_STATEMENT
+
+
+
+ ER_CANT_RENAME_LOG_TABLE
+
+
+
+ ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT
+
+
+
+ ER_WRONG_PARAMETERS_TO_NATIVE_FCT
+
+
+
+ ER_WRONG_PARAMETERS_TO_STORED_FCT
+
+
+
+ ER_NATIVE_FCT_NAME_COLLISION
+
+
+
+ ER_DUP_ENTRY_WITH_KEY_NAME
+
+
+
+ ER_BINLOG_PURGE_EMFILE
+
+
+
+ ER_EVENT_CANNOT_CREATE_IN_THE_PAST
+
+
+
+ ER_EVENT_CANNOT_ALTER_IN_THE_PAST
+
+
+
+ ER_REPLICA_INCIDENT
+
+
+
+ ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT
+
+
+
+ ER_BINLOG_UNSAFE_STATEMENT
+
+
+
+ ER_REPLICA_FATAL_ERROR
+
+
+
+ ER_REPLICA_RELAY_LOG_READ_FAILURE
+
+
+
+ ER_REPLICA_RELAY_LOG_WRITE_FAILURE
+
+
+
+ ER_REPLICA_CREATE_EVENT_FAILURE
+
+
+
+ ER_REPLICA_SOURCE_COM_FAILURE
+
+
+
+ ER_BINLOG_LOGGING_IMPOSSIBLE
+
+
+
+ ER_VIEW_NO_CREATION_CTX
+
+
+
+ ER_VIEW_INVALID_CREATION_CTX
+
+
+
+ ER_SR_INVALID_CREATION_CTX
+
+
+
+ ER_TRG_CORRUPTED_FILE
+
+
+
+ ER_TRG_NO_CREATION_CTX
+
+
+
+ ER_TRG_INVALID_CREATION_CTX
+
+
+
+ ER_EVENT_INVALID_CREATION_CTX
+
+
+
+ ER_TRG_CANT_OPEN_TABLE
+
+
+
+ ER_CANT_CREATE_SROUTINE
+
+
+
+ ER_REPLICA_AMBIGOUS_EXEC_MODE
+
+
+
+ ER_NO_FORMAT_DESCRIPTION_EVENT_BEFORE_BINLOG_STATEMENT
+
+
+
+ ER_REPLICA_CORRUPT_EVENT
+
+
+
+ ER_LOAD_DATA_INVALID_COLUMN
+
+
+
+ ER_LOG_PURGE_NO_FILE
+
+
+
+ ER_XA_RBTIMEOUT
+
+
+
+ ER_XA_RBDEADLOCK
+
+
+
+ ER_NEED_REPREPARE
+
+
+
+ ER_DELAYED_NOT_SUPPORTED
+
+
+
+ WARN_NO_SOURCE_INFO
+
+
+
+ WARN_OPTION_IGNORED
+
+
+
+ WARN_PLUGIN_DELETE_BUILTIN
+
+
+
+ WARN_PLUGIN_BUSY
+
+
+
+ ER_VARIABLE_IS_READONLY
+
+
+
+ ER_WARN_ENGINE_TRANSACTION_ROLLBACK
+
+
+
+ ER_REPLICA_HEARTBEAT_FAILURE
+
+
+
+ ER_REPLICA_HEARTBEAT_VALUE_OUT_OF_RANGE
+
+
+
+ ER_NDB_REPLICATION_SCHEMA_ERROR
+
+
+
+ ER_CONFLICT_FN_PARSE_ERROR
+
+
+
+ ER_EXCEPTIONS_WRITE_ERROR
+
+
+
+ ER_TOO_LONG_TABLE_COMMENT
+
+
+
+ ER_TOO_LONG_FIELD_COMMENT
+
+
+
+ ER_FUNC_INEXISTENT_NAME_COLLISION
+
+
+
+ ER_DATABASE_NAME
+
+
+
+ ER_TABLE_NAME
+
+
+
+ ER_PARTITION_NAME
+
+
+
+ ER_SUBPARTITION_NAME
+
+
+
+ ER_TEMPORARY_NAME
+
+
+
+ ER_RENAMED_NAME
+
+
+
+ ER_TOO_MANY_CONCURRENT_TRXS
+
+
+
+ WARN_NON_ASCII_SEPARATOR_NOT_IMPLEMENTED
+
+
+
+ ER_DEBUG_SYNC_TIMEOUT
+
+
+
+ ER_DEBUG_SYNC_HIT_LIMIT
+
+
+
+ ER_ERROR_LAST
+
+
+
+ WriteInteger
+
+
+
+
+
+
+ Summary description for MySqlPool.
+
+
+
+
+ It is assumed that this property will only be used from inside an active
+ lock.
+
+
+
+
+ Indicates whether this pool is being cleared.
+
+
+
+
+ It is assumed that this method is only called from inside an active lock.
+
+
+
+
+ It is assumed that this method is only called from inside an active lock.
+
+
+
+
+ Removes a connection from the in use pool. The only situations where this method
+ would be called are when a connection that is in use gets some type of fatal exception
+ or when the connection is being returned to the pool and it's too old to be
+ returned.
+
+
+
+
+
+ Clears this pool of all idle connections and marks this pool and being cleared
+ so all other connections are closed when they are returned.
+
+
+
+
+ Remove expired drivers from the idle pool
+
+
+
+ Closing driver is a potentially lengthy operation involving network
+ IO. Therefore we do not close expired drivers while holding
+ idlePool.SyncRoot lock. We just remove the old drivers from the idle
+ queue and return them to the caller. The caller will need to close
+ them (or let GC close them)
+
+
+
+
+ Summary description for MySqlPoolManager.
+
+
+
+
+ Queue of demoted hosts.
+
+
+
+
+ List of hosts that will be attempted to connect to.
+
+
+
+
+ Timer to be used when a host have been demoted.
+
+
+
+
+ Remove drivers that have been idle for too long.
+
+
+
+
+ Remove hosts that have been on the demoted list for more
+ than 120,000 milliseconds and add them to the available hosts list.
+
+
+
+
+ Provides a class capable of executing a SQL script containing
+ multiple SQL statements including CREATE PROCEDURE statements
+ that require changing the delimiter
+
+
+
+
+ Handles the event raised whenever a statement is executed.
+
+
+
+
+ Handles the event raised whenever an error is raised by the execution of a script.
+
+
+
+
+ Handles the event raised whenever a script execution is finished.
+
+
+
+
+ Initializes a new instance of the
+ class.
+
+
+
+
+ Initializes a new instance of the
+ class.
+
+ The connection.
+
+
+
+ Initializes a new instance of the
+ class.
+
+ The query.
+
+
+
+ Initializes a new instance of the
+ class.
+
+ The connection.
+ The query.
+
+
+
+ Gets or sets the connection.
+
+ The connection.
+
+
+
+ Gets or sets the query.
+
+ The query.
+
+
+
+ Gets or sets the delimiter.
+
+ The delimiter.
+
+
+
+ Executes this instance.
+
+ The number of statements executed as part of the script.
+
+
+
+ Initiates the asynchronous execution of SQL statements.
+
+ The number of statements executed as part of the script inside.
+
+
+
+ Initiates the asynchronous execution of SQL statements.
+
+ The cancellation token.
+ The number of statements executed as part of the script inside.
+
+
+
+ Represents the method that will handle errors when executing MySQL statements.
+
+
+
+
+ Represents the method that will handle errors when executing MySQL scripts.
+
+
+
+
+ Sets the arguments associated to MySQL scripts.
+
+
+
+
+ Gets the statement text.
+
+ The statement text.
+
+
+
+ Gets the line.
+
+ The line.
+
+
+
+ Gets the position.
+
+ The position.
+
+
+
+ Sets the arguments associated to MySQL script errors.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exception.
+
+
+
+ Gets the exception.
+
+ The exception.
+
+
+
+ Gets or sets a value indicating whether this is ignored.
+
+ true if ignore; otherwise, false.
+
+
+
+ Summary description for MySqlStream.
+
+
+
+
+ ReadPacket is called by NativeDriver to start reading the next
+ packet on the stream.
+
+
+
+
+ Reads the specified number of bytes from the stream and stores them at given
+ offset in the buffer.
+ Throws EndOfStreamException if not all bytes can be read.
+
+ Stream to read from
+ Array to store bytes read from the stream
+ The offset in buffer at which to begin storing the data read from the current stream.
+ Number of bytes to read
+
+
+
+ LoadPacket loads up and decodes the header of the incoming packet.
+
+
+
+
+ Traces information about the client execution.
+
+
+
+
+ Gets the list of trace listeners.
+
+
+
+
+ Gets or sets the switch to control tracing and debugging.
+
+
+
+
+ Gets or sets a flag indicating if query analysis is enabled.
+
+
+
+
+ Enables query analysis.
+
+ The host on which to enable query analysis.
+ The interval of time for logging trace information.
+
+
+
+ Disables query analysis.
+
+
+
+
+ Specifies the types of warning flags.
+
+
+
+
+ No index exists.
+
+
+
+
+ Bad index exists.
+
+
+
+
+ Rows have been excluded from the result.
+
+
+
+
+ Columns have been excluded from the result.
+
+
+
+
+ Type conversions took place.
+
+
+
+
+ Specifies the event that triggered the trace.
+
+
+
+
+ A connection has been opened.
+
+
+
+
+ A connection has been closed.
+
+
+
+
+ A query has been executed.
+
+
+
+
+ Data has been retrieved from the resultset.
+
+
+
+
+ Data retrieval has ended.
+
+
+
+
+ Query execution has ended.
+
+
+
+
+ The statement to be executed has been created.
+
+
+
+
+ The statement has been executed.
+
+
+
+
+ The statement is no longer required.
+
+
+
+
+ The query provided is of a nonquery type.
+
+
+
+
+ Usage advisor warnings have been requested.
+
+
+
+
+ Noncritical problem.
+
+
+
+
+ An error has been raised during data retrieval.
+
+
+
+
+ The query has been normalized.
+
+
+
+
+ Summary description for Driver.
+
+
+
+
+ Sets the current database for the this connection
+
+
+
+
+
+ Return the appropriate set of connection flags for our
+ server capabilities and our user requested options.
+
+
+
+
+ Query is the method that is called to send all queries to the server
+
+
+
+
+ Verify that the file to upload is in a valid directory
+ according to the safe path entered by a user under
+ "AllowLoadLocalInfileInPath" connection option.
+
+ File to validate against the safe path.
+
+
+
+ Sends the specified file to the server.
+ This supports the LOAD DATA LOCAL INFILE
+
+
+
+
+
+ FetchDataRow is the method that the data reader calls to see if there is another
+ row to fetch. In the non-prepared mode, it will simply read the next data packet.
+ In the prepared mode (statementId > 0), it will
+
+
+
+
+ Execution timeout, in milliseconds. When the accumulated time for network IO exceeds this value
+ TimeoutException is thrown. This timeout needs to be reset for every new command
+
+
+
+
+
+ Summary description for PreparedStatement.
+
+
+
+
+ Prepares CommandText for use with the Prepare method
+
+ Command text stripped of all paramter names
+
+ Takes the output of TokenizeSql and creates a single string of SQL
+ that only contains '?' markers for each parameter. It also creates
+ the parameterMap array list that includes all the paramter names in the
+ order they appeared in the SQL
+
+
+
+
+ Defines a replication configurarion element in the configuration file.
+
+
+
+
+ Gets a collection of objects representing the server groups.
+
+
+
+
+ Defines a replication server group in the configuration file.
+
+
+
+
+ Gets or sets the name of the replication server group configuration.
+
+
+
+
+ Gets or sets the group type of the replication server group configuration.
+
+
+
+
+ Gets or sets the number of seconds to wait for retry.
+
+
+
+
+ Gets a collection of objects representing the
+ server configurations associated to this group configuration.
+
+
+
+
+ Defines a replication server in configuration file.
+
+
+
+
+ Gets or sets the name of the replication server configuration.
+
+
+
+
+ Gets or sets whether the replication server is configured as source.
+
+
+
+
+ Gets or sets whether the replication server is configured as source.
+
+
+
+
+ Gets or sets the connection string associated to this replication server.
+
+
+
+
+ Manager for Replication and Load Balancing features
+
+
+
+
+ Returns Replication Server Group List
+
+
+
+
+ Adds a Default Server Group to the list
+
+ Group name
+ Time between reconnections for failed servers
+ Replication Server Group added
+
+
+
+ Adds a Server Group to the list
+
+ Group name
+ ServerGroup type reference
+ Time between reconnections for failed servers
+ Server Group added
+
+
+
+ Gets the next server from a replication group
+
+ Group name
+ True if the server to return must be a source
+ Replication Server defined by the Load Balancing plugin
+
+
+
+ Gets a Server Group by name
+
+ Group name
+ Server Group if found, otherwise throws an MySqlException
+
+
+
+ Validates if the replication group name exists
+
+ Group name to validate
+ true if the replication group name is found; otherwise, false
+
+
+
+ Assigns a new server driver to the connection object
+
+ Group name
+ True if the server connection to assign must be a source
+ MySqlConnection object where the new driver will be assigned
+
+
+
+ Class that implements Round Robing Load Balancing technique.
+
+
+
+
+ Gets an available server based on Round Robin load balancing.
+
+ Flag indicating if the server to return must be a source.
+ A object representing the next available server.
+
+
+
+ Represents a server in a Replication environment.
+
+
+
+
+ Gets the server name.
+
+
+
+
+ Gets a value indicating whether the server is source or replica.
+
+
+
+
+ Gets a value indicating whether the server is source or replica.
+
+
+
+
+ Gets the connection string used to connect to the server.
+
+
+
+
+ Gets a flag indicating if the server is available to be considered in load balancing.
+
+
+
+
+ Base class used to implement load balancing features.
+
+
+
+
+ List of servers available for replication.
+
+
+
+ The group name.
+ The number of seconds to perform a retry.
+
+
+
+ Gets the group name.
+
+
+
+
+ Gets the retry time between connections to failed servers.
+
+
+
+
+ Gets the server list in the group.
+
+
+
+
+ Adds a server into the group.
+
+ The server name.
+ A flag indicating if the server to add is source or replica.
+ The connection string used by this server.
+ A object representing the recently added object.
+
+
+
+ Removes a server from the group.
+
+ The server name.
+
+
+
+ Gets a server by name.
+
+ The server name.
+ The replication server.
+
+
+
+ Must be implemented. Defines the next server for a custom load balancing implementation.
+
+ Defines if the server to return is a source or any.
+ The next server based on the load balancing implementation.
+ Null if no available server is found.
+
+
+
+
+ Defines the next server for a custom load balancing implementation.
+
+ Defines if the server to return is a source or any.
+ Currently not being used.
+ The next server based on the load balancing implementation.
+ Null if no available server is found.
+
+
+
+
+ Handles a failed connection to a server.
+
+ The failed server.
+ This method can be overrided to implement a custom failover handling.
+
+
+
+ Handles a failed connection to a server.
+
+ The failed server.
+ The exception that caused the failover.
+
+
+
+ return the ordinal for the given column name
+
+
+
+
+
+
+ Retrieve the value as the given column index
+
+ The column value to retrieve
+ The value as the given column
+
+
+
+ Closes the current resultset, dumping any data still on the wire
+
+
+
+
+ Loads the column metadata for the current resultset
+
+
+
+
+ Represents a schema and its contents.
+
+
+
+
+ Gets or sets the name of the schema.
+
+
+
+
+ Gets the list of columns in the schema.
+
+
+
+
+ Gets the list of rows in the schema.
+
+
+
+
+ Represents a row within a schema.
+
+
+
+
+ Represents a column within a schema.
+
+
+
+
+ The name of the column.
+
+
+
+
+ The type of the column.
+
+
+
+
+ GetForeignKeysOnTable retrieves the foreign keys on the given table.
+ Since MySQL supports foreign keys on versions prior to 5.0, we can't use
+ information schema. MySQL also does not include any type of SHOW command
+ for foreign keys so we have to resort to use SHOW CREATE TABLE and parsing
+ the output.
+
+ The table to store the key info in.
+ The table to get the foeign key info for.
+ Only get foreign keys that match this name.
+ Should column information be included in the table.
+
+
+
+ Serializes the given parameter to the given memory stream
+
+
+ This method is called by PrepareSqlBuffers to convert the given
+ parameter to bytes and write those bytes to the given memory stream.
+
+
+ True if the parameter was successfully serialized, false otherwise.
+
+
+
+ Summary description for StoredProcedure.
+
+
+
+
+ Defines the basic operations to be performed on the table cache.
+
+
+
+
+ The maximum age allowed for cache entries.
+
+
+
+
+ Adds the given command and result set to the cache.
+
+ The command to store in the cache.
+ The resultset associated to the stored command.
+
+
+
+ Retrieves the specified command from the cache.
+
+ The command to retrieve.
+ The allowed age for the cache entry.
+
+
+
+
+ Removes the specified command from the cache.
+
+ The command to remove from the cache.
+
+
+
+ Clears the cache.
+
+
+
+
+ Removes cache entries older than the value defined by .
+
+
+
+
+ Stream that supports timeout of IO operations.
+ This class is used is used to support timeouts for SQL command, where a
+ typical operation involves several network reads/writes.
+ Timeout here is defined as the accumulated duration of all IO operations.
+
+
+
+
+ Construct a TimedStream
+
+ Undelying stream
+
+
+
+ Figure out whether it is necessary to reset timeout on stream.
+ We track the current value of timeout and try to avoid
+ changing it too often, because setting Read/WriteTimeout property
+ on network stream maybe a slow operation that involves a system call
+ (setsockopt). Therefore, we allow a small difference, and do not
+ reset timeout if current value is slightly greater than the requested
+ one (within 0.1 second).
+
+
+
+
+ Common handler for IO exceptions.
+ Resets timeout to infinity if timeout exception is
+ detected and stops the times.
+
+ original exception
+
+
+
+ Represents a SQL transaction to be made in a MySQL database. This class cannot be inherited.
+
+ The application creates a MySqlTransaction object by calling
+ on the object. All subsequent operations associated with the
+ transaction (for example, committing or aborting the transaction), are performed on the
+ MySqlTransaction object.
+
+ The following example creates a and a MySqlTransaction.
+ It also demonstrates how to use the ,
+ , and methods.
+
+ Public Sub RunTransaction(myConnString As String)
+ Dim myConnection As New MySqlConnection(myConnString)
+ myConnection.Open()
+
+ Dim myCommand As MySqlCommand = myConnection.CreateCommand()
+ Dim myTrans As MySqlTransaction
+
+ ' Start a local transaction
+ myTrans = myConnection.BeginTransaction()
+ ' Must assign both transaction object and connection
+ ' to Command object for a pending local transaction
+ myCommand.Connection = myConnection
+ myCommand.Transaction = myTrans
+
+ Try
+ myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
+ myCommand.ExecuteNonQuery()
+ myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')"
+ myCommand.ExecuteNonQuery()
+ myTrans.Commit()
+ Console.WriteLine("Both records are written to database.")
+ Catch e As Exception
+ Try
+ myTrans.Rollback()
+ Catch ex As MySqlException
+ If Not myTrans.Connection Is Nothing Then
+ Console.WriteLine("An exception of type " & ex.GetType().ToString() & _
+ " was encountered while attempting to roll back the transaction.")
+ End If
+ End Try
+
+ Console.WriteLine("An exception of type " & e.GetType().ToString() & _
+ "was encountered while inserting the data.")
+ Console.WriteLine("Neither record was written to database.")
+ Finally
+ myConnection.Close()
+ End Try
+ End Sub 'RunTransaction
+
+
+ public void RunTransaction(string myConnString)
+ {
+ MySqlConnection myConnection = new MySqlConnection(myConnString);
+ myConnection.Open();
+
+ MySqlCommand myCommand = myConnection.CreateCommand();
+ MySqlTransaction myTrans;
+
+ // Start a local transaction
+ myTrans = myConnection.BeginTransaction();
+ // Must assign both transaction object and connection
+ // to Command object for a pending local transaction
+ myCommand.Connection = myConnection;
+ myCommand.Transaction = myTrans;
+
+ try
+ {
+ myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
+ myCommand.ExecuteNonQuery();
+ myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
+ myCommand.ExecuteNonQuery();
+ myTrans.Commit();
+ Console.WriteLine("Both records are written to database.");
+ }
+ catch(Exception e)
+ {
+ try
+ {
+ myTrans.Rollback();
+ }
+ catch (MySqlException ex)
+ {
+ if (myTrans.Connection != null)
+ {
+ Console.WriteLine("An exception of type " + ex.GetType() +
+ " was encountered while attempting to roll back the transaction.");
+ }
+ }
+
+ Console.WriteLine("An exception of type " + e.GetType() +
+ " was encountered while inserting the data.");
+ Console.WriteLine("Neither record was written to database.");
+ }
+ finally
+ {
+ myConnection.Close();
+ }
+ }
+
+
+
+
+
+ Gets the object associated with the transaction, or a null reference (Nothing in Visual Basic) if the transaction is no longer valid.
+
+ The object associated with this transaction.
+
+ A single application may have multiple database connections, each
+ with zero or more transactions. This property enables you to
+ determine the connection object associated with a particular
+ transaction created by .
+
+
+
+
+ Specifies the for this transaction.
+
+
+ The for this transaction. The default is ReadCommitted.
+
+
+ Parallel transactions are not supported. Therefore, the IsolationLevel
+ applies to the entire transaction.
+
+
+
+
+ Commits the database transaction.
+
+ The Commit method is equivalent to the MySQL SQL statement
+ COMMIT.
+
+ The following example creates a and a
+ . It also demonstrates how to use the
+ , , and Rollback
+ methods.
+
+ Public Sub RunSqlTransaction(myConnString As String)
+ Dim myConnection As New MySqlConnection(myConnString)
+ myConnection.Open()
+
+ Dim myCommand As MySqlCommand = myConnection.CreateCommand()
+ Dim myTrans As MySqlTransaction
+
+ ' Start a local transaction
+ myTrans = myConnection.BeginTransaction()
+
+ ' Must assign both transaction object and connection
+ ' to Command object for a pending local transaction
+ myCommand.Connection = myConnection
+ myCommand.Transaction = myTrans
+
+ Try
+ myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')"
+ myCommand.ExecuteNonQuery()
+ myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')"
+ myCommand.ExecuteNonQuery()
+ myTrans.Commit()
+ Console.WriteLine("Success.")
+ Catch e As Exception
+ Try
+ myTrans.Rollback()
+ Catch ex As MySqlException
+ If Not myTrans.Connection Is Nothing Then
+ Console.WriteLine("An exception of type " & ex.GetType().ToString() & _
+ " was encountered while attempting to roll back the transaction.")
+ End If
+ End Try
+
+ Console.WriteLine("An exception of type " & e.GetType().ToString() & _
+ "was encountered while inserting the data.")
+ Console.WriteLine("Neither record was written to database.")
+ Finally
+ myConnection.Close()
+ End Try
+ End Sub
+
+
+ public void RunSqlTransaction(string myConnString)
+ {
+ MySqlConnection myConnection = new MySqlConnection(myConnString);
+ myConnection.Open();
+
+ MySqlCommand myCommand = myConnection.CreateCommand();
+ MySqlTransaction myTrans;
+
+ // Start a local transaction
+ myTrans = myConnection.BeginTransaction();
+ // Must assign both transaction object and connection
+ // to Command object for a pending local transaction
+ myCommand.Connection = myConnection;
+ myCommand.Transaction = myTrans;
+
+ try
+ {
+ myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')";
+ myCommand.ExecuteNonQuery();
+ myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')";
+ myCommand.ExecuteNonQuery();
+ myTrans.Commit();
+ Console.WriteLine("Both records are written to database.");
+ }
+ catch(Exception e)
+ {
+ try
+ {
+ myTrans.Rollback();
+ }
+ catch (MySqlException ex)
+ {
+ if (myTrans.Connection != null)
+ {
+ Console.WriteLine("An exception of type " + ex.GetType() +
+ " was encountered while attempting to roll back the transaction.");
+ }
+ }
+
+ Console.WriteLine("An exception of type " + e.GetType() +
+ " was encountered while inserting the data.");
+ Console.WriteLine("Neither record was written to database.");
+ }
+ finally
+ {
+ myConnection.Close();
+ }
+ }
+
+
+
+
+
+ Rolls back a transaction from a pending state.
+
+ The Rollback method is equivalent to the MySQL statement ROLLBACK.
+ The transaction can only be rolled back from a pending state
+ (after BeginTransaction has been called, but before Commit is
+ called).
+
+ The following example creates a and a
+ . It also demonstrates how to use the
+ , , and Rollback
+ methods.
+
+ Public Sub RunSqlTransaction(myConnString As String)
+ Dim myConnection As New MySqlConnection(myConnString)
+ myConnection.Open()
+
+ Dim myCommand As MySqlCommand = myConnection.CreateCommand()
+ Dim myTrans As MySqlTransaction
+
+ ' Start a local transaction
+ myTrans = myConnection.BeginTransaction()
+
+ ' Must assign both transaction object and connection
+ ' to Command object for a pending local transaction
+ myCommand.Connection = myConnection
+ myCommand.Transaction = myTrans
+
+ Try
+ myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')"
+ myCommand.ExecuteNonQuery()
+ myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')"
+ myCommand.ExecuteNonQuery()
+ myTrans.Commit()
+ Console.WriteLine("Success.")
+ Catch e As Exception
+ Try
+ myTrans.Rollback()
+ Catch ex As MySqlException
+ If Not myTrans.Connection Is Nothing Then
+ Console.WriteLine("An exception of type " & ex.GetType().ToString() & _
+ " was encountered while attempting to roll back the transaction.")
+ End If
+ End Try
+
+ Console.WriteLine("An exception of type " & e.GetType().ToString() & _
+ "was encountered while inserting the data.")
+ Console.WriteLine("Neither record was written to database.")
+ Finally
+ myConnection.Close()
+ End Try
+ End Sub
+
+
+ public void RunSqlTransaction(string myConnString)
+ {
+ MySqlConnection myConnection = new MySqlConnection(myConnString);
+ myConnection.Open();
+
+ MySqlCommand myCommand = myConnection.CreateCommand();
+ MySqlTransaction myTrans;
+
+ // Start a local transaction
+ myTrans = myConnection.BeginTransaction();
+ // Must assign both transaction object and connection
+ // to Command object for a pending local transaction
+ myCommand.Connection = myConnection;
+ myCommand.Transaction = myTrans;
+
+ try
+ {
+ myCommand.CommandText = "Insert into mytable (id, desc) VALUES (100, 'Description')";
+ myCommand.ExecuteNonQuery();
+ myCommand.CommandText = "Insert into mytable (id, desc) VALUES (101, 'Description')";
+ myCommand.ExecuteNonQuery();
+ myTrans.Commit();
+ Console.WriteLine("Both records are written to database.");
+ }
+ catch(Exception e)
+ {
+ try
+ {
+ myTrans.Rollback();
+ }
+ catch (MySqlException ex)
+ {
+ if (myTrans.Connection != null)
+ {
+ Console.WriteLine("An exception of type " + ex.GetType() +
+ " was encountered while attempting to roll back the transaction.");
+ }
+ }
+
+ Console.WriteLine("An exception of type " + e.GetType() +
+ " was encountered while inserting the data.");
+ Console.WriteLine("Neither record was written to database.");
+ }
+ finally
+ {
+ myConnection.Close();
+ }
+ }
+
+
+
+
+
+ DNS resolver that runs queries against a server.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets the DNS SVR records of the service name that is provided.
+
+ A list of s sorted as described in RFC2782.
+
+
+
+ Sorts a list of DNS SRV records according to the sorting rules described in RFC2782.
+
+ List of s to sort.
+ A new list of sorted s.
+
+
+
+ Resets the DnsSrvResolver
+
+
+
+
+ Class that represents a DNS SRV record.
+ RFC 2782 (https://tools.ietf.org/html/rfc2782)
+
+
+
+
+ Gets the port.
+
+
+
+
+ Gets the priority.
+
+
+
+
+ Gets the target domain name.
+
+
+
+
+ Gets the weight.
+
+
+
+
+ Initializes a new instance of class.
+
+ The port.
+ The priority.
+ The target.
+ The weight.
+
+
+
+ Initializes a new instance of class.
+
+ The DNS SRV record.
+
+
+
+ Compare two objects. First, using their priority and
+ if both have the same, then using their weights.
+
+ A to compare.
+ A to compare.
+
+
+
+
+ Initializes a new instance of the class from a .
+
+ The DNS SRV record.
+
+
+
+ This class is modeled after .NET Stopwatch. It provides better
+ performance (no system calls).It is however less precise than
+ .NET Stopwatch, measuring in milliseconds. It is adequate to use
+ when high-precision is not required (e.g for measuring IO timeouts),
+ but not for other tasks.
+
+
+
+
+ Wrapper around NetworkStream.
+
+ MyNetworkStream is equivalent to NetworkStream, except
+ 1. It throws TimeoutException if read or write timeout occurs, instead
+ of IOException, to match behavior of other streams (named pipe and
+ shared memory). This property comes handy in TimedStream.
+
+ 2. It implements workarounds for WSAEWOULDBLOCK errors, that can start
+ occuring after stream has times out. For a discussion about the CLR bug,
+ refer to http://tinyurl.com/lhgpyf. This error should never occur, as
+ we're not using asynchronous operations, but apparerntly it does occur
+ directly after timeout has expired.
+ The workaround is hinted in the URL above and implemented like this:
+ For each IO operation, if it throws WSAEWOULDBLOCK, we explicitely set
+ the socket to Blocking and retry the operation once again.
+
+
+
+
+ Set keepalive + timeout on socket.
+
+ socket
+ keepalive timeout, in seconds
+
+
+
+ Static class to manage SSH connections created with SSH .NET.
+
+
+
+
+ Gets or sets the SSH client initialized when calling the method.
+
+
+
+
+ Stores a list of SSH clients having different connection settings.
+
+
+
+
+ Removes the MySQL unsupported encryptions (SSH Ciphers), MACs and key exchange algorithms.
+
+ The instance containing the list of supported elements.
+ See https://confluence.oraclecorp.com/confluence/display/GPS/Approved+Security+Technologies%3A+Standards+-+SSH+Ciphers+and+Versions for an updated list.
+
+
+
+ Initializes an instance if no SSH client with similar connection options has already been initialized.
+
+ The SSH host name.
+ The SSH user name.
+ The SSH password.
+ The SSH key file.
+ The SSH pass phrase.
+ The SSH port.
+ The local host name.
+ The local port number.
+ Flag to indicate if the connection will be created for the classic or X Protocol.
+
+
+
+
+ Raises warning messages if the SSH client is using a deprecated encryption, MAC or key exchanged algorithm.
+
+ The instance containing the
+ encryption, MAC algorithm and key exchange algorithm currently being used.
+
+
+
+ Read a single quoted identifier from the stream
+
+
+
+
+
+
+ Helper class to encapsulate shared memory functionality
+ Also cares of proper cleanup of file mapping object and cew
+
+
+
+
+ Summary description for SharedMemoryStream.
+
+
+
+
+ By creating a private ctor, we keep the compiler from creating a default ctor
+
+
+
+
+ Mark - or + signs that are unary ops as no output
+
+
+
+
+
+ Wrapper class used for handling SSH connections.
+
+
+
+
+ Starts the SSH client.
+
+
+
+
+ Stops the SSH client.
+
+
+
+
+ Handles SSL connections for the Classic and X protocols.
+
+
+
+
+ Contains the connection options provided by the user.
+
+
+
+
+ A flag to establish how certificates are to be treated and validated.
+
+
+
+
+ Defines the supported TLS protocols.
+
+
+
+
+ Retrieves a collection containing the client SSL PFX certificates.
+
+ Dependent on connection string settings.
+ Either file or store based certificates are used.
+
+
+
+ Initiates the SSL connection.
+
+ The base stream.
+ The encoding used in the SSL connection.
+ The connection string used to establish the connection.
+ A instance ready to initiate an SSL connection.
+
+
+
+ Verifies the SSL certificates used for authentication.
+
+ An object that contains state information for this validation.
+ The MySQL server certificate used to authenticate the remote party.
+ The chain of certificate authorities associated with the remote certificate.
+ One or more errors associated with the remote certificate.
+ true if no errors were found based on the selected SSL mode; false, otherwise.
+
+
+
+ Gets the extension of the specified file.
+
+ The path of the file.
+ Flag to indicate if the result should be converted to lower case.
+ The . character is ommited from the result.
+
+
+
+
+ Summary description for StreamCreator.
+
+
+
+
+ Set the keepalive timeout on the socket.
+
+ The socket object.
+ The keepalive timeout, in seconds.
+
+
+
+ Summary description for Version.
+
+
+
+
+ Provides functionality to read SSL PEM certificates and to perform multiple validations via Bouncy Castle.
+
+
+
+
+ Raises an exception if the specified connection option is null, empty or whitespace.
+
+ The connection option to verify.
+ The name of the connection option.
+
+
+
+ Reads the specified file as a byte array.
+
+ The path of the file to read.
+ A byte array representing the read file.
+
+
+
+ Reads the SSL certificate file.
+
+ The path to the certificate file.
+ A instance representing the SSL certificate file.
+
+
+
+ Reads the SSL certificate key file.
+
+ The path to the certificate key file.
+ A instance representing the SSL certificate key file.
+
+
+
+ Verifies that the certificate has not yet expired.
+
+ The certificate to verify.
+
+
+
+ Verifies a certificate CA status.
+
+ The certificate to validate.
+ A flag indicating the expected CA status.
+
+
+
+ Verifies that the certificate was signed using the private key that corresponds to the specified public key
+
+ The client side certificate containing the public key.
+ The server certificate.
+
+
+
+ Verifies that no SSL policy errors regarding the identitfy of the host were raised.
+
+ A instance set with the raised SSL errors.
+
+
+
+ Verifies that the issuer matches the CA by comparing the CA certificate issuer and the server certificate issuer.
+
+ The CA certificate.
+ The server certificate.
+
+
+
+
+ Gets and sets the host list.
+
+
+
+
+ Gets the active host.
+
+
+
+
+ Active host.
+
+
+
+
+ Sets the initial active host.
+
+
+
+
+ Determines the next host.
+
+ object that represents the next available host.
+
+
+
+ Implements common elements that allow to manage the hosts available for client side failover.
+
+
+
+
+ Gets and sets the failover group which consists of a host list.
+
+
+
+
+ Resets the manager.
+
+
+
+
+ Sets the host list to be used during failover operations.
+
+ The host list.
+ The failover method.
+
+
+
+ Attempts to establish a connection to a host specified from the list.
+
+ The original connection string set by the user.
+ An out parameter that stores the updated connection string.
+ A object in case this is a pooling scenario.
+ A flag indicating if the default port is used in the connection.
+ An instance if the connection was succesfully established, a exception is thrown otherwise.
+
+
+
+
+ Creates a if more than one host is found.
+
+ A string containing an unparsed list of hosts.
+ true if the connection is X Protocol; otherwise false.
+ true if the connection data is a URI; otherwise false.
+ The number of hosts found, -1 if an error was raised during parsing.
+
+
+
+ Creates a object based on the provided parameters.
+
+ The host string that can be a simple host name or a host name and port.
+ The priority of the host.
+ The port number of the host.
+ true if the connection data is a URI; otherwise false.
+
+
+
+
+ Attempts the next host in the list. Moves to the first element if the end of the list is reached.
+
+
+
+
+ Determines the next host on which to attempt a connection by checking the value of the Priority property in descending order.
+
+
+
+
+ Determines the next host on which to attempt a connection randomly.
+
+
+
+
+ Depicts a host which can be failed over to.
+
+
+
+
+ Gets and sets the name or address of the host.
+
+
+
+
+ Gets and sets the port number.
+
+
+
+
+ Gets a value between 0 and 100 which represents the priority of the host.
+
+
+
+
+ Flag to indicate if this host is currently being used.
+
+
+
+
+ Flag to indicate if this host has been attempted to connection.
+
+
+
+
+ Time since the host has been demoted.
+
+
+
+
+ Initializes a object.
+
+ The host.
+ The port.
+ The priority.
+
+
+
+ Compares two objects of type .
+
+ FailoverServer object to compare.
+ True if host properties are the same. Otherwise, false.
+
+
+
+ Manages the hosts available for client side failover using the Random Failover method.
+ The Random Failover method attempts to connect to the hosts specified in the list randomly until all the hosts have been attempted.
+
+
+
+
+ The initial host taken from the list.
+
+
+
+
+ The host for the current connection attempt.
+
+
+
+
+ Random object to get the next host.
+
+
+
+
+ Sets the initial active host.
+
+
+
+
+ Determines the next host.
+
+ A object that represents the next available host.
+
+
+
+ Manages the hosts available for client side failover using the Sequential Failover method.
+ The Sequential Failover method attempts to connect to the hosts specified in the list one after another until the initial host is reached.
+
+
+
+
+ The initial host taken from the list.
+
+
+
+
+ The index of the current host.
+
+
+
+
+ The host for the current connection attempt.
+
+
+
+
+ Sets the initial active host.
+
+
+
+
+ Determines the next host.
+
+ A object that represents the next available host.
+
+
+
+ A strongly-typed resource class, for looking up localized strings, etc.
+
+
+
+
+ Returns the cached ResourceManager instance used by this class.
+
+
+
+
+ Overrides the current thread's CurrentUICulture property for all
+ resource lookups using this strongly typed resource class.
+
+
+
+
+ Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter is null.
+
+
+
+
+ Looks up a localized string similar to Improper MySqlCommandBuilder state: adapter's SelectCommand is null.
+
+
+
+
+ Looks up a localized string similar to Invalid attempt to access a field before calling Read().
+
+
+
+
+ Looks up a localized string similar to Authentication to host '{0}' for user '{1}' using method '{2}' failed with message: {3}.
+
+
+
+
+ Looks up a localized string similar to Authentication method '{0}' not supported by any of the available plugins..
+
+
+
+
+ Looks up a localized string similar to Version string not in acceptable format.
+
+
+
+
+ Looks up a localized string similar to The buffer cannot be null.
+
+
+
+
+ Looks up a localized string similar to The buffer is not large enough.
+
+
+
+
+ Looks up a localized string similar to Canceling an executing query requires MySQL 5.0 or higher..
+
+
+
+
+ Looks up a localized string similar to Canceling an active query is only supported on MySQL 5.0.0 and above. .
+
+
+
+
+ Looks up a localized string similar to Parameters can only be derived for commands using the StoredProcedure command type..
+
+
+
+
+ Looks up a localized string similar to MySqlCommandBuilder does not support multi-table statements.
+
+
+
+
+ Looks up a localized string similar to MySqlCommandBuilder cannot operate on tables with no unique or key columns.
+
+
+
+
+ Looks up a localized string similar to Chaos isolation level is not supported .
+
+
+
+
+ Looks up a localized string similar to Clear-password authentication is not supported over insecure channels..
+
+
+
+
+ Looks up a localized string similar to The CommandText property has not been properly initialized..
+
+
+
+
+ Looks up a localized string similar to Compression is not supported..
+
+
+
+
+ Looks up a localized string similar to The connection is already open..
+
+
+
+
+ Looks up a localized string similar to Connection unexpectedly terminated..
+
+
+
+
+ Looks up a localized string similar to Connection must be valid and open.
+
+
+
+
+ Looks up a localized string similar to The connection is not open..
+
+
+
+
+ Looks up a localized string similar to The connection property has not been set or is null..
+
+
+
+
+ Looks up a localized string similar to Could not find specified column in results: {0}.
+
+
+
+
+ Looks up a localized string similar to Count cannot be negative.
+
+
+
+
+ Looks up a localized string similar to SetLength is not a valid operation on CompressedStream.
+
+
+
+
+ Looks up a localized string similar to The given value was not in a supported format..
+
+
+
+
+ Looks up a localized string similar to There is already an open DataReader associated with this Connection which must be closed first..
+
+
+
+
+ Looks up a localized string similar to The default connection encoding was not found. Please report this as a bug along with your connection string and system details..
+
+
+
+
+ Looks up a localized string similar to The {0} algorithm being used by the server({1}) has been deprecated and will be removed in a future version. It is recommended that you configure the server to use a non-deprecated {0} algorithm..
+
+
+
+
+ Looks up a localized string similar to MySQL Connector/NET does not currently support distributed transactions..
+
+
+
+
+ Looks up a localized string similar to Specifying multiple host names with DNS SRV lookup is not permitted..
+
+
+
+
+ Looks up a localized string similar to Specifying a port number with DNS SRV lookup is not permitted..
+
+
+
+
+ Looks up a localized string similar to Using Unix domain sockets with DNS SRV lookup is not permitted..
+
+
+
+
+ Looks up a localized string similar to Unable to locate any hosts for {0}..
+
+
+
+
+ Looks up a localized string similar to Connection option '{0}' is duplicated..
+
+
+
+
+ Looks up a localized string similar to SSL connection option '{0}' is duplicated..
+
+
+
+
+ Looks up a localized string similar to Encoding error during validation..
+
+
+
+
+ Looks up a localized string similar to Error creating socket connection.
+
+
+
+
+ Looks up a localized string similar to Verify that user '{0}'@'{1}' has enough privileges to execute..
+
+
+
+
+ Looks up a localized string similar to Fatal error encountered during command execution..
+
+
+
+
+ Looks up a localized string similar to Fatal error encountered during data read..
+
+
+
+
+ Looks up a localized string similar to Fatal error encountered attempting to read the resultset..
+
+
+
+
+ Looks up a localized string similar to File based certificates are only supported when connecting to MySQL Server 5.1 or greater..
+
+
+
+
+ Looks up a localized string similar to The specified file cannot be converted to a certificate..
+
+
+
+
+ Looks up a localized string similar to The specified file cannot be converted to a key..
+
+
+
+
+ Looks up a localized string similar to Failed to read file at the specified location..
+
+
+
+
+ Looks up a localized string similar to No file path has been provided for the connection option {0}..
+
+
+
+
+ Looks up a localized string similar to From index and length use more bytes than from contains.
+
+
+
+
+ Looks up a localized string similar to From index must be a valid index inside the from buffer.
+
+
+
+
+ Looks up a localized string similar to Call to GetHostEntry failed after {0} while querying for hostname '{1}': SocketErrorCode={2}, ErrorCode={3}, NativeErrorCode={4}..
+
+
+
+
+ Looks up a localized string similar to Retrieving procedure metadata for {0} from server..
+
+
+
+
+ Looks up a localized string similar to Value has an unsupported format..
+
+
+
+
+ Looks up a localized string similar to An incorrect response was received from the server..
+
+
+
+
+ Looks up a localized string similar to Index and length use more bytes than to has room for.
+
+
+
+
+ Looks up a localized string similar to Index must be a valid position in the buffer.
+
+
+
+
+ Looks up a localized string similar to The provided key is invalid..
+
+
+
+
+ Looks up a localized string similar to Certificate with Thumbprint '{0}' not found..
+
+
+
+
+ Looks up a localized string similar to You have specified an invalid column ordinal..
+
+
+
+
+ Looks up a localized string similar to The requested value '{0}' is invalid for the given keyword '{1}'..
+
+
+
+
+ Looks up a localized string similar to The host name or IP address is invalid..
+
+
+
+
+ Looks up a localized string similar to Microsecond must be a value between 0 and 999999..
+
+
+
+
+ Looks up a localized string similar to Millisecond must be a value between 0 and 999. For more precision use Microsecond..
+
+
+
+
+ Looks up a localized string similar to No other SSL options are accepted when SSL Mode is set to None..
+
+
+
+
+ Looks up a localized string similar to Either provide a valid path for 'allowloadlocalinfileinpath' or enable 'allowloadlocalinfile'..
+
+
+
+
+ Looks up a localized string similar to Procedure or function '{0}' cannot be found in database '{1}'..
+
+
+
+
+ Looks up a localized string similar to The certificate is invalid..
+
+
+
+
+ Looks up a localized string similar to Unable to validate the signature..
+
+
+
+
+ Looks up a localized string similar to Unable to verify the signature..
+
+
+
+
+ Looks up a localized string similar to Value '{0}' is not of the correct type..
+
+
+
+
+ Looks up a localized string similar to Option "tls-version" can not be specified when SSL connections are disabled..
+
+
+
+
+ Looks up a localized string similar to '{0}' not recognized as a valid TLS protocol version (should be one of TLSv1, TLSv1.1, TLSv1.2{1})..
+
+
+
+
+ Looks up a localized string similar to '{0}' is an illegal value for a boolean option..
+
+
+
+
+ Looks up a localized string similar to Keyword does not allow null values..
+
+
+
+
+ Looks up a localized string similar to Option not supported..
+
+
+
+
+ Looks up a localized string similar to Server asked for stream in response to LOAD DATA LOCAL INFILE, but the functionality is disabled by the client setting 'allowlocalinfile' to 'false'..
+
+
+
+
+ Looks up a localized string similar to Mixing named and unnamed parameters is not allowed..
+
+
+
+
+ Looks up a localized string similar to INTERNAL ERROR: More than one output parameter row detected..
+
+
+
+
+ Looks up a localized string similar to Multiple simultaneous connections or connections with different connection strings inside the same transaction are not currently supported..
+
+
+
+
+ Looks up a localized string similar to NamedPipeStream does not support seeking.
+
+
+
+
+ Looks up a localized string similar to NamedPipeStream doesn't support SetLength.
+
+
+
+
+ Looks up a localized string similar to The new value must be a MySqlParameter object..
+
+
+
+
+ Looks up a localized string similar to Invalid attempt to call NextResult when the reader is closed..
+
+
+
+
+ Looks up a localized string similar to When calling stored procedures and 'Use Procedure Bodies' is false, all parameters must have their type explicitly set..
+
+
+
+
+ Looks up a localized string similar to Nested transactions are not supported..
+
+
+
+
+ Looks up a localized string similar to The host {0} does not support SSL connections..
+
+
+
+
+ Looks up a localized string similar to Unix sockets are not supported on Windows..
+
+
+
+
+ Looks up a localized string similar to Cannot retrieve Windows identity for current user. Connections that use IntegratedSecurity cannot be pooled. Use either 'ConnectionReset=true' or 'Pooling=false' in the connection string to fix..
+
+
+
+
+ Looks up a localized string similar to The object is not open or has been disposed..
+
+
+
+
+ Looks up a localized string similar to The offset cannot be negative.
+
+
+
+
+ Looks up a localized string similar to Offset must be a valid position in buffer.
+
+
+
+
+ Looks up a localized string similar to Authentication with old password no longer supported, use 4.1 style passwords..
+
+
+
+
+ Looks up a localized string similar to The option '{0}' is not currently supported..
+
+
+
+
+ Looks up a localized string similar to Parameter '{0}' has already been defined..
+
+
+
+
+ Looks up a localized string similar to Parameter cannot have a negative value.
+
+
+
+
+ Looks up a localized string similar to Parameter cannot be null.
+
+
+
+
+ Looks up a localized string similar to Parameter '{0}' can't be null or empty..
+
+
+
+
+ Looks up a localized string similar to Parameter index was not found in Parameter Collection..
+
+
+
+
+ Looks up a localized string similar to Parameter is invalid..
+
+
+
+
+ Looks up a localized string similar to Parameter '{0}' must be defined..
+
+
+
+
+ Looks up a localized string similar to Parameter '{0}' was not found during prepare..
+
+
+
+
+ Looks up a localized string similar to Parameter can't be null or empty..
+
+
+
+
+ Looks up a localized string similar to Password must be valid and contain length characters.
+
+
+
+
+ Looks up a localized string similar to This category includes a series of counters for MySQL.
+
+
+
+
+ Looks up a localized string similar to .NET Data Provider for MySQL.
+
+
+
+
+ Looks up a localized string similar to The number of times a procedures metadata had to be queried from the server..
+
+
+
+
+ Looks up a localized string similar to Hard Procedure Queries.
+
+
+
+
+ Looks up a localized string similar to The number of times a procedures metadata was retrieved from the client-side cache..
+
+
+
+
+ Looks up a localized string similar to Soft Procedure Queries.
+
+
+
+
+ Looks up a localized string similar to same name are not supported..
+
+
+
+
+ Looks up a localized string similar to Packets larger than max_allowed_packet are not allowed..
+
+
+
+
+ Looks up a localized string similar to Reading from the stream has failed..
+
+
+
+
+ Looks up a localized string similar to Invalid attempt to read a prior column using SequentialAccess.
+
+
+
+
+ Looks up a localized string similar to Replicated connections allow only readonly statements..
+
+
+
+
+ Looks up a localized string similar to Attempt to connect to '{0}' server failed..
+
+
+
+
+ Looks up a localized string similar to No available server found..
+
+
+
+
+ Looks up a localized string similar to Replication group '{0}' not found..
+
+
+
+
+ Looks up a localized string similar to Replicated server not found: '{0}'.
+
+
+
+
+ Looks up a localized string similar to Routine '{0}' cannot be found. Either check the spelling or make sure you have sufficient rights to execute the routine..
+
+
+
+
+ Looks up a localized string similar to Attempt to call stored function '{0}' without specifying a return parameter.
+
+
+
+
+ Looks up a localized string similar to Retrieval of the RSA public key is not enabled for insecure connections..
+
+
+
+
+ Looks up a localized string similar to Connector/NET no longer supports server versions prior to 5.0.
+
+
+
+
+ Looks up a localized string similar to Snapshot isolation level is not supported..
+
+
+
+
+ Looks up a localized string similar to Socket streams do not support seeking.
+
+
+
+
+ Looks up a localized string similar to Retrieving procedure metadata for {0} from procedure cache..
+
+
+
+
+ Looks up a localized string similar to Stored procedures are not supported on this version of MySQL.
+
+
+
+
+ Looks up a localized string similar to The SSH Key File and/or SSH Password must be provided..
+
+
+
+
+ Looks up a localized string similar to The provided passphrase is invalid..
+
+
+
+
+ Looks up a localized string similar to The certificate authority (CA) does not match..
+
+
+
+
+ Looks up a localized string similar to The host name does not match the name on the certificate..
+
+
+
+
+ Looks up a localized string similar to The certificate is not a certificate authority (CA)..
+
+
+
+
+ Looks up a localized string similar to SSL Connection error..
+
+
+
+
+ Looks up a localized string similar to The stream has already been closed.
+
+
+
+
+ Looks up a localized string similar to The stream does not support reading.
+
+
+
+
+ Looks up a localized string similar to The stream does not support writing.
+
+
+
+
+ Looks up a localized string similar to String can't be empty..
+
+
+
+
+ Looks up a localized string similar to Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding..
+
+
+
+
+ Looks up a localized string similar to error connecting: Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached..
+
+
+
+
+ Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} seconds was exceeded for each selected server..
+
+
+
+
+ Looks up a localized string similar to TLSv1.3 is supported in .NET Framework 4.8 or .NET Core 3.0..
+
+
+
+
+ Looks up a localized string similar to No supported TLS protocol version found in the 'tls-versions' list..
+
+
+
+
+ Looks up a localized string similar to {0}: Connection Closed.
+
+
+
+
+ Looks up a localized string similar to Unable to trace. There are more than Int32.MaxValue connections in use..
+
+
+
+
+ Looks up a localized string similar to {0}: Error encountered during row fetch. Number = {1}, Message={2}.
+
+
+
+
+ Looks up a localized string similar to {0}: Connection Opened: connection string = '{1}'.
+
+
+
+
+ Looks up a localized string similar to {0}: Error encountered attempting to open result: Number={1}, Message={2}.
+
+
+
+
+ Looks up a localized string similar to {0}: Query Closed.
+
+
+
+
+ Looks up a localized string similar to {0}: Query Normalized: {2}.
+
+
+
+
+ Looks up a localized string similar to {0}: Query Opened: {2}.
+
+
+
+
+ Looks up a localized string similar to {0}: Resultset Opened: field(s) = {1}, affected rows = {2}, inserted id = {3}.
+
+
+
+
+ Looks up a localized string similar to {0}: Resultset Closed. Total rows={1}, skipped rows={2}, size (bytes)={3}.
+
+
+
+
+ Looks up a localized string similar to {0}: Set Database: {1}.
+
+
+
+
+ Looks up a localized string similar to {0}: Statement closed: statement id = {1}.
+
+
+
+
+ Looks up a localized string similar to {0}: Statement executed: statement id = {1}.
+
+
+
+
+ Looks up a localized string similar to {0}: Statement prepared: sql='{1}', statement id={2}.
+
+
+
+
+ Looks up a localized string similar to {0}: Usage Advisor Warning: Query is using a bad index.
+
+
+
+
+ Looks up a localized string similar to {0}: Usage Advisor Warning: The field '{2}' was converted to the following types: {3}.
+
+
+
+
+ Looks up a localized string similar to {0}: Usage Advisor Warning: Query does not use an index.
+
+
+
+
+ Looks up a localized string similar to {0}: Usage Advisor Warning: The following columns were not accessed: {2}.
+
+
+
+
+ Looks up a localized string similar to {0}: Usage Advisor Warning: Skipped {2} rows. Consider a more focused query..
+
+
+
+
+ Looks up a localized string similar to {0}: MySql Warning: Level={1}, Code={2}, Message={3}.
+
+
+
+
+ Looks up a localized string similar to Type '{0}' is not derived from BaseCommandInterceptor.
+
+
+
+
+ Looks up a localized string similar to Type '{0}' is not derived from BaseExceptionInterceptor.
+
+
+
+
+ Looks up a localized string similar to Unable to connect to any of the specified MySQL hosts..
+
+
+
+
+ Looks up a localized string similar to Unable to create plugin for authentication method '{0}'. Please see inner exception for details..
+
+
+
+
+ Looks up a localized string similar to Unable to derive stored routine parameters. The 'Parameters' information schema table is not available and access to the stored procedure body has been disabled..
+
+
+
+
+ Looks up a localized string similar to Unable to enable query analysis. Be sure the MySql.Data.EMTrace assembly is properly located and registered..
+
+
+
+
+ Looks up a localized string similar to An error occured attempting to enumerate the user-defined functions. Do you have SELECT privileges on the mysql.func table?.
+
+
+
+
+ Looks up a localized string similar to Unable to execute stored procedure '{0}'..
+
+
+
+
+ Looks up a localized string similar to There was an error parsing the foreign key definition..
+
+
+
+
+ Looks up a localized string similar to Error encountered reading the RSA public key..
+
+
+
+
+ Looks up a localized string similar to Unable to retrieve stored procedure metadata for routine '{0}'. Either grant SELECT privilege to mysql.proc for this user or use "check parameters=false" with your connection string..
+
+
+
+
+ Looks up a localized string similar to Unable to start a second async operation while one is running..
+
+
+
+
+ Looks up a localized string similar to Unix sockets are not supported on Windows.
+
+
+
+
+ Looks up a localized string similar to Unknown authentication method '{0}' was requested..
+
+
+
+
+ Looks up a localized string similar to Unknown connection protocol.
+
+
+
+
+ Looks up a localized string similar to Trying to upload a file from outside the path set on 'allowloadlocalinfileinpath' is invalid..
+
+
+
+
+ Looks up a localized string similar to Value '{0}' is not of the correct type..
+
+
+
+
+ Looks up a localized string similar to The requested column value could not be treated as or conveted to a Guid..
+
+
+
+
+ Looks up a localized string similar to Windows authentication connections are not supported on {0}.
+
+
+
+
+ Looks up a localized string similar to Writing to the stream failed..
+
+
+
+
+ Looks up a localized string similar to Parameter '{0}' is not found but a parameter with the name '{1}' is found. Parameter names must include the leading parameter marker..
+
+
+
+
+ A strongly-typed resource class, for looking up localized strings, etc.
+
+
+
+
+ Returns the cached ResourceManager instance used by this class.
+
+
+
+
+ Overrides the current thread's CurrentUICulture property for all
+ resource lookups using this strongly typed resource class.
+
+
+
+
+ Looks up a localized string similar to Appdata path is not defined..
+
+
+
+
+ Looks up a localized string similar to Authentication failed using MYSQL41 and SHA256_MEMORY. Check the user name and password or try using a secure connection..
+
+
+
+
+ Looks up a localized string similar to You can't get more sessions because Client is closed..
+
+
+
+
+ Looks up a localized string similar to Client option '{0}' does not support value '{1}'..
+
+
+
+
+ Looks up a localized string similar to Client option '{0}' is not recognized as valid..
+
+
+
+
+ Looks up a localized string similar to {0} '{1}' does not exist in schema '{2}'..
+
+
+
+
+ Looks up a localized string similar to '{0}' cannot be set to false with DNS SRV lookup enabled..
+
+
+
+
+ Looks up a localized string similar to Scheme '{0}' is not valid..
+
+
+
+
+
+ Looks up a localized string similar to Compression using {0} is not supported..
+
+
+
+
+ Looks up a localized string similar to Failed to load libzstd.dll. Removing zstd_stream from the client supported compression algorithms..
+
+
+
+
+ Looks up a localized string similar to Compression using {0} is not supported in .NET Framework..
+
+
+
+
+ Looks up a localized string similar to The connection property 'compression' acceptable values are: 'preferred', 'required' or 'disabled'. The value '{0}' is not acceptable..
+
+
+
+
+ Looks up a localized string similar to Compression is not enabled..
+
+
+
+
+ Looks up a localized string similar to Compression requested but the server does not support it..
+
+
+
+
+ Looks up a localized string similar to There are still decompressed messages pending to be processed..
+
+
+
+
+ Looks up a localized string similar to Duplicate key '{0}' used in "connection-attributes"..
+
+
+
+
+ Looks up a localized string similar to Key name in connection attribute cannot be an empty string..
+
+
+
+
+ Looks up a localized string similar to At least one option must be specified..
+
+
+
+
+ Looks up a localized string similar to This feature is currently not supported..
+
+
+
+
+ Looks up a localized string similar to This functionality is only supported in MySQL {0} and higher..
+
+
+
+
+ Looks up a localized string similar to Collation with id '{0}' not found..
+
+
+
+
+ Looks up a localized string similar to The value of "connection-attributes" must be either a boolean or a list of key-value pairs..
+
+
+
+
+ Looks up a localized string similar to Connection Data is incorrect..
+
+
+
+
+ Looks up a localized string similar to The connection string is invalid..
+
+
+
+
+ Looks up a localized string similar to '{0}' is not a valid connection string attribute..
+
+
+
+
+ Looks up a localized string similar to The connection timeout value must be a positive integer (including 0)..
+
+
+
+
+ Looks up a localized string similar to Decimal (BCD) format is invalid..
+
+
+
+
+ Looks up a localized string similar to Field type with name '{0}' not found..
+
+
+
+
+ Looks up a localized string similar to Index type with name '{0}' not found..
+
+
+
+
+ Looks up a localized string similar to The value provided is not a valid JSON document. {0}.
+
+
+
+
+ Looks up a localized string similar to {0} is not a valid column name in the row..
+
+
+
+
+ Looks up a localized string similar to {0} is not a valid index for the row..
+
+
+
+
+ Looks up a localized string similar to Session state is not valid..
+
+
+
+
+ Looks up a localized string similar to Invalid Uri .
+
+
+
+
+ Looks up a localized string similar to Invalid uri query value.
+
+
+
+
+ Looks up a localized string similar to Key names in "connection-attributes" cannot start with "_"..
+
+
+
+
+ Looks up a localized string similar to Json configuration must contain 'uri' or 'host' but not both..
+
+
+
+
+ Looks up a localized string similar to Keyword '{0}' not found..
+
+
+
+
+ Looks up a localized string similar to Keyword not supported..
+
+
+
+
+ Looks up a localized string similar to Field '{0}' is mandatory..
+
+
+
+
+ Looks up a localized string similar to Missed required 'schema' option..
+
+
+
+
+ Looks up a localized string similar to More than one document id was generated. Please use the DocumentIds property instead..
+
+
+
+
+ Looks up a localized string similar to There is no data at index {0}.
+
+
+
+
+ Looks up a localized string similar to No 'host' has been specified..
+
+
+
+
+ Looks up a localized string similar to No more data in resultset..
+
+
+
+
+ Looks up a localized string similar to Object '{0}' not found.
+
+
+
+
+ Looks up a localized string similar to No placeholders..
+
+
+
+
+ Looks up a localized string similar to {0} must be a value greater than 0..
+
+
+
+
+ Looks up a localized string similar to Path not found '{0}'..
+
+
+
+
+ Looks up a localized string similar to Queue timeout expired. The timeout period elapsed prior to getting a session from the pool..
+
+
+
+
+ Looks up a localized string similar to Providing a port number as part of the host address isn't supported when using connection strings in basic format or anonymous objects. Use URI format instead..
+
+
+
+
+ Looks up a localized string similar to You must either assign no priority to any of the hosts or give a priority for every host..
+
+
+
+
+ Looks up a localized string similar to The priority must be between 0 and 100..
+
+
+
+
+ Looks up a localized string similar to ProgramData path is not defined..
+
+
+
+
+ Looks up a localized string similar to The server doesn't support the requested operation. Please update the MySQL Server and/or Client library.
+
+
+
+
+ Looks up a localized string similar to The process of closing the resultset and resulted in results being lost..
+
+
+
+
+ Looks up a localized string similar to All server connection attempts were aborted. Timeout of {0} milliseconds was exceeded for each selected server..
+
+
+
+
+ Looks up a localized string similar to All server connection attempts were aborted. Timeout was exceeded for each selected server..
+
+
+
+
+ Looks up a localized string similar to Connection attempt to the server was aborted. Timeout of {0} milliseconds was exceeded..
+
+
+
+
+ Looks up a localized string similar to Connection attempt to the server was aborted. Timeout was exceeded..
+
+
+
+
+ Looks up a localized string similar to Unable to connect to any specified host..
+
+
+
+
+ Looks up a localized string similar to Unable to read or decode data value..
+
+
+
+
+ Looks up a localized string similar to Unable to open a session..
+
+
+
+
+ Looks up a localized string similar to Unexpected end of packet found while reading data values.
+
+
+
+
+ Looks up a localized string similar to Field name '{0}' is not allowed..
+
+
+
+
+ Looks up a localized string similar to Unknown placeholder :{0}.
+
+
+
+
+ Looks up a localized string similar to Value '{0}' is not of the correct type..
+
+
+
+
+ Summary description for MySqlUInt64.
+
+
+
+
+ An exception thrown by MySQL when a type conversion does not succeed.
+
+
+
+ Initializes a new instance of the class with a specified error message.
+ Message describing the error.
+
+
+
+ Represents a datetime data type object in a MySql database.
+
+
+
+
+ Defines whether the UTF or local timezone will be used.
+
+
+
+
+ Constructs a new MySqlDateTime object by setting the individual time properties to
+ the given values.
+
+ The year to use.
+ The month to use.
+ The day to use.
+ The hour to use.
+ The minute to use.
+ The second to use.
+ The microsecond to use.
+
+
+
+ Constructs a new MySqlDateTime object by using values from the given object.
+
+ The object to copy.
+
+
+
+ Constructs a new MySqlDateTime object by copying the current value of the given object.
+
+ The MySqlDateTime object to copy.
+
+
+
+ Enables the contruction of a MySqlDateTime object by parsing a string.
+
+
+
+
+ Indicates if this object contains a value that can be represented as a DateTime
+
+
+
+ Returns the year portion of this datetime
+
+
+ Returns the month portion of this datetime
+
+
+ Returns the day portion of this datetime
+
+
+ Returns the hour portion of this datetime
+
+
+ Returns the minute portion of this datetime
+
+
+ Returns the second portion of this datetime
+
+
+
+ Returns the milliseconds portion of this datetime
+ expressed as a value between 0 and 999
+
+
+
+
+ Returns the microseconds portion of this datetime (6 digit precision)
+
+
+
+
+ Returns true if this datetime object has a null value
+
+
+
+
+ Retrieves the value of this as a DateTime object.
+
+
+
+ Returns this value as a DateTime
+
+
+ Returns a MySQL specific string representation of this value
+
+
+
+
+
+
+
+
+ Represents a decimal data type object in a MySql database.
+
+
+
+
+ Gets a boolean value signaling if the type is null.
+
+
+
+
+ Gets or sets the decimal precision of the type.
+
+
+
+
+ Gets or sets the scale of the type.
+
+
+
+
+ Gets the decimal value associated to this type.
+
+
+
+
+ Converts this decimal value to a double value.
+
+ The value of this type converted to a dobule value.
+
+
+
+ Represents a geometry data type object in a MySql database.
+
+
+
+
+ Gets the x coordinate.
+
+
+
+
+ Gets the y coordinate.
+
+
+
+
+ Gets the SRID value.
+
+
+
+
+ Gets a boolean value that signals if the type is null.
+
+
+
+
+ Gets the value associated to this type.
+
+
+
+
+ Gets the value associated to this type.
+
+
+
+ Returns the Well-Known Text representation of this value
+ POINT({0} {1})", longitude, latitude
+ http://dev.mysql.com/doc/refman/4.1/en/gis-wkt-format.html
+
+
+
+ Get value from WKT format
+ SRID=0;POINT (x y) or POINT (x y)
+
+ WKT string format
+
+
+
+ Try to get value from WKT format
+ SRID=0;POINT (x y) or POINT (x y)
+
+ WKT string format
+ Out mysqlGeometryValue
+
+
+
+ Sets the DSInfo when GetSchema is called for the DataSourceInformation collection.
+
+
+
+
+ Gets the well-known text representation of the geomtry object.
+
+ A string representation of the WKT.
+
+
+
+ Implementation of EXTERNAL authentication type.
+
+
+
+
+ Implementation of MySQL41 authentication type.
+
+
+
+
+ Implementation of PLAIN authentication type.
+
+
+
+
+ Compares two Guids in string format.
+
+ The first string to compare.
+ The first string to compare.
+ An integer that indicates the lexical relationship between the two comparands, similar to
+
+
+
+ Compares two objects.
+
+ The first to compare.
+ The second to compare.
+ An integer that indicates the lexical relationship between the two comparands, similar to
+
+
+
+ Provides functionality for loading unmanaged libraries.
+
+
+
+
+ Loads the specified unmanaged library from the embedded resources.
+
+ The application name.
+ The library name.
+
+
+
+ Provides support for configuring X Protocol compressed messages.
+
+
+
+
+ The capabilities sub-key used to specify the compression algorithm.
+
+
+
+
+ The capabilities key used to specify the compression capability.
+
+
+
+
+ Messages with a value lower than this threshold will not be compressed.
+
+
+
+
+ Default value for enabling or disabling combined compressed messages.
+
+
+
+
+ Default value for the maximum number of combined compressed messages contained in a compression message.
+
+
+
+
+ The capabilities sub-key used to specify if combining compressed messages is permitted.
+
+
+
+
+ The capabilities sub-key used to specify the maximum number of compressed messages contained in a compression message.
+
+
+
+
+ Buffer used to store the data received from the server.
+
+
+
+
+ Deflate stream used for compressing data.
+
+
+
+
+ Deflate stream used for decompressing data.
+
+
+
+
+ Flag indicating if the initialization is for compression or decompression.
+
+
+
+
+ Stores the communication packet generated the last time ReadNextBufferedMessage method was called.
+
+
+
+
+ Indicates if the libzstd.dll has been loaded.
+
+
+
+
+ Stream used to store multiple X Protocol messages.
+
+
+
+
+ ZStandard stream used for decompressing data.
+
+
+
+
+ Main constructor used to set the compression algorithm and initialize the list of messages to
+ be compressed by the client.
+
+ The compression algorithm to use.
+ Flag indicating if the initialization is for compression or decompression.
+
+
+
+ Gets or sets the list of messages that should be compressed by the client when compression is enabled.
+
+
+
+
+ Gets or sets the compression algorithm.
+
+
+
+
+ Flag indicating if compression is enabled.
+
+
+
+
+ Flag indicating if the last decompressed message contains multiple messages.
+
+
+
+
+ General method used to compress data using the compression algorithm defined in the constructor.
+
+ The data to compress.
+ A compressed byte array.
+
+
+
+ Compresses data using the deflate_stream algorithm.
+
+ The data to compress.
+ A compressed byte array.
+
+
+
+ Compresses data using the lz4_message algorithm.
+
+ The data to compress.
+ A compressed byte array.
+
+
+
+ Compresses data using the zstd_stream algorithm.
+
+ The data to compress.
+ A compressed byte array.
+
+
+
+ General method used to decompress data using the compression algorithm defined in the constructor.
+
+ The data to decompress.
+ The expected length of the decompressed data.
+ A decompressed byte array.
+
+
+
+ Decompresses data using the deflate_stream compression algorithm.
+
+ The data to decompress.
+ The expected length of the decompressed data.
+ A decompressed byte array.
+
+
+
+ Decompresses data using the lz4_message compression algorithm.
+
+ The data to decompress.
+ The expected length of the decompressed data.
+ A decompressed byte array.
+
+
+
+ Decompresses data using the zstd_stream compression algorithm.
+
+ The data to decompress.
+ The expected length of the decompressed data.
+ A decompressed byte array.
+
+
+
+ Closes and disposes of any open streams.
+
+
+
+
+ Gets the byte array representing the next X Protocol frame that is stored in cache.
+
+ A byte array representing an X Protocol frame.
+
+
+
+ Gets a representing the next X Protocol frame that is stored in cache.
+
+ A with the next X Protocol frame.
+
+
+
+ Loads the libzstd.dll assembly.
+
+
+
+
+ Constructor that sets the stream used to read or write data.
+
+ The stream used to read or write data.
+
+
+
+ Constructor that sets the stream used to read or write data and the compression controller.
+
+ The stream used to read or write data.
+ The compression controller.
+
+
+
+ Gets or sets the compression controller uses to manage compression operations.
+
+
+
+
+ Writes X Protocol frames to the X Plugin.
+
+ The integer representation of the client message identifier used for the message.
+ The message to include in the X Protocol frame.
+
+
+
+ Writes X Protocol frames to the X Plugin.
+
+ The client message identifier used for the message.
+ The message to include in the X Protocol frame.
+
+
+
+ Reads X Protocol frames incoming from the X Plugin.
+
+ A instance representing the X Protocol frame that was read.
+
+
+
+ Abstract class for the protocol base operations in client/server communication.
+
+
+
+
+ Expression parser for MySQL-X protocol.
+
+
+ string being parsed.
+
+
+ Token stream produced by lexer.
+
+
+ Parser's position in token stream.
+
+
+ Mapping of names to positions for named placeholders. Used for both string values ":arg" and numeric values ":2".
+
+
+ Number of positional placeholders.
+
+
+ Are relational columns identifiers allowed?
+
+
+ Token types used by the lexer.
+
+
+ Token. Includes type and string value of the token.
+
+
+ Mapping of reserved words to token types.
+
+
+ Does the next character equal the given character? (respects bounds)
+
+
+ Helper function to match integer or floating point numbers. This function should be called when the position is on the first character of the number (a
+ digit or '.').
+
+ @param i The current position in the string
+ @return the next position in the string after the number.
+
+
+ Lexer for MySQL-X expression language.
+
+
+ Assert that the token at pos is of type type.
+
+
+ Does the current token have type `t'?
+
+
+ Does the next token have type `t'?
+
+
+ Does the token at position `pos' have type `t'?
+
+
+ Consume token.
+
+ @return the string value of the consumed token
+
+
+ Parse a paren-enclosed expression list. This is used for function params or IN params.
+
+ @return a List of expressions
+
+
+ Parse a function call of the form: IDENTIFIER PAREN_EXPR_LIST.
+
+ @return an Expr representing the function call.
+
+
+ Parse an identifier for a function call: [schema.]name
+
+
+ Parse a document path member.
+
+
+ Parse a document path array index.
+
+
+ Parse a JSON-style document path, like WL#7909, but prefix by @. instead of $.
+
+
+ Parse a document field.
+
+
+ Parse a column identifier (which may optionally include a JSON document path).
+
+
+ Build a unary operator expression.
+
+
+ Parse an atomic expression. (c.f. grammar at top)
+
+
+ Parse a left-associated binary operator.
+
+ @param types
+ The token types that denote this operator.
+ @param innerParser
+ The inner parser that should be called to parse operands.
+ @return an expression tree of the binary operator or a single operand
+
+
+ Parse the entire string as an expression.
+
+ @return an X-protocol expression tree
+
+
+
+ Parse an ORDER BY specification which is a comma-separated list of expressions, each may be optionally suffixed by ASC/DESC.
+
+
+ Parse a SELECT projection which is a comma-separated list of expressions, each optionally suffixed with a target alias.
+
+
+ Parse an INSERT field name.
+ @todo unit test
+
+
+ Parse an UPDATE field which can include can document paths.
+
+
+ Parse a document projection which is similar to SELECT but with document paths as the target alias.
+
+
+ Parse a list of expressions used for GROUP BY.
+
+
+ @return the number of positional placeholders in the expression.
+
+
+ @return a mapping of parameter names to positions.
+
+
+ Proto-buf helper to build a LITERAL Expr with a Scalar NULL type.
+
+
+ Proto-buf helper to build a LITERAL Expr with a Scalar DOUBLE type (wrapped in Any).
+
+
+ Proto-buf helper to build a LITERAL Expr with a Scalar SINT (signed int) type (wrapped in Any).
+
+
+ Proto-buf helper to build a LITERAL Expr with a Scalar UINT (unsigned int) type (wrapped in Any).
+
+
+ Proto-buf helper to build a LITERAL Expr with a Scalar STRING type (wrapped in Any).
+
+
+ Proto-buf helper to build a LITERAL Expr with a Scalar OCTETS type (wrapped in Any).
+
+
+ Proto-buf helper to build a LITERAL Expr with a Scalar BOOL type (wrapped in Any).
+
+
+ Wrap an Any value in a LITERAL expression.
+
+
+ Build an Any with a string value.
+
+
+
+ Parses an anonymous object into a dictionary.
+
+ The object to parse.
+ A dictionary if the provided object is an anonymous object; otherwise, null.
+
+
+ List of operators which will be serialized as infix operators.
+
+
+ Scalar to string.
+
+
+ JSON document path to string.
+
+
+ Column identifier (or JSON path) to string.
+
+
+ Function call to string.
+
+
+ Create a string from a list of (already stringified) parameters. Surround by parens and separate by commas.
+
+
+ Convert an operator to a string. Includes special cases for chosen infix operators (AND, OR) and special forms such as LIKE and BETWEEN.
+
+
+ Escape a string literal.
+
+
+ Quote a named identifer.
+
+
+ Serialize an expression to a string.
+
+
+
+ Build the message to be sent to MySQL Server to execute statement "Create" or "Modify" collection with schema options
+
+ The namespace
+ The name of the command to be executed on MySql Server
+ Array of KeyValuePairs with the parameters required to build the message
+ void.
+
+
+
+ Sends the delete documents message
+
+
+
+
+ Sends the CRUD modify message
+
+
+
+
+ Class implementation for a default communication kind.
+
+
+
+
+ Constructor method for the communication routing service
+
+ A MySqlXConnectionStringBuilder setted with the information to use in the connection
+
+
+
+ Gets the current connection base on the connection mode
+
+ One of the values of ConnectionMode Offline, ReadOnly, WriteOnly, ReadWrite
+
+
+
+
+ Abstract class used to define the kind of server in environments with multiple types of distributed systems.
+
+
+
+
+ Main class for parsing json strings.
+
+
+
+
+ Initializes a new instance of the JsonParser class.
+
+
+
+
+ Parses the received string into a dictionary.
+
+ The string to parse.
+ A object that represents the parsed string.
+
+
+
+ Abstract class to manage and encapsulate one or more actual connections.
+
+
+
+
+ Creates a new session object with the values of the settings parameter.
+
+ Settings to be used in the session object
+
+
+
+ Sets the connection's charset default collation.
+
+ The opened session.
+ The character set.
+
+
+
+ Gets the version of the server.
+
+ An instance of containing the server version.
+
+
+
+ Gets the thread Id of the connection.
+
+ Thread Id
+
+
+
+ Implementation class for object that manages low-level work of queuing tasks onto threads.
+
+
+
+
+ Implementation class of InternalSession to manage connections using the Xprotocol type object.
+
+
+
+
+ Defines the compression controller that will be passed on the instance when
+ compression is enabled.
+
+
+
+
+ Defines the compression controller that will be passed on the instance when
+ compression is enabled.
+
+
+
+
+ The used client to handle SSH connections.
+
+
+
+
+ Reorder the list of algorithms retrieved from server to the preferred order
+
+
+
+
+ Validate the algorithms given in the connection string are valid compared with enum CompressionAlgorithms
+
+
+
+
+ Negotiates compression capabilities with the server.
+
+ An array containing the compression algorithms supported by the server.
+ An array containing the compression algorithms given by user/client.
+
+
+
+ Prepare the dictionary of arguments required to create a MySQL message.
+
+ The name of the MySQL schema.
+ The name of the collection.
+ This object hold the parameters required to create the collection.
+
+ Collection referente.
+
+
+
+ Prepare the dictionary of arguments required to Modify a MySQL message.
+
+ The name of the MySQL schema.
+ The name of the collection.
+ This object hold the parameters required to Modify the collection.
+
+
+
+
+ Gets the compression algorithm being used to compress or decompress data.
+
+ Flag to indicate if the compression algorithm should be
+ retrieved from the reader or writer controller.
+ The name of the compression algorithm being used if any.
+ null if no compression algorithm is being used.
+
+
+
+ Represents a base class for a Session.
+
+
+
+
+ Flag to set if prepared statements are supported.
+
+
+
+
+ Gets the connection settings for this session.
+
+
+
+
+ Gets the currently active schema.
+
+
+
+
+ Gets the default schema provided when creating the session.
+
+
+
+
+ Gets the connection uri representation of the connection options provided during the creation of the session.
+
+
+
+
+ Initializes a new instance of the BaseSession class based on the specified connection string.
+
+ The connection used to create the session.
+ A object.
+ is null.
+ Unable to parse the when
+ in URI format.
+
+ When using Unix sockets the protocol=unix or protocol=unixsocket connection option is required.
+ This will enable elements passed in the server connection option to be treated as Unix sockets. The user is also required
+ to explicitly set sslmode to none since X Plugin does not support SSL when using Unix sockets. Note that
+ protocol=unix and protocol=unixsocket are synonyms.
+
+ Multiple hosts can be specified as part of the ,
+ which enables client-side failover when trying to establish a connection.
+
+ Connection URI examples:
+ - mysqlx://test:test@[192.1.10.10,localhost]
+ - mysqlx://test:test@[192.1.10.10,127.0.0.1]
+ - mysqlx://root:@[../tmp/mysqlx.sock,/tmp/mysqld.sock]?protocol=unix&sslmode=none
+ - mysqlx://test:test@[192.1.10.10:33060,127.0.0.1:33060]
+ - mysqlx://test:test@[192.1.10.10,120.0.0.2:22000,[::1]:33060]/test?connectiontimeout=10
+ - mysqlx://test:test@[(address=server.example,priority=20),(address=127.0.0.1,priority=100)]
+ - mysqlx://test:test@[(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25)]
+
+
+ Connection string examples:
+ - server=10.10.10.10,localhost;port=33060;uid=test;password=test;
+ - host=10.10.10.10,192.101.10.2,localhost;port=5202;uid=test;password=test;
+ - host=./tmp/mysqld.sock,/var/run/mysqldx.sock;port=5202;uid=root;protocol=unix;sslmode=none;
+ - server=(address=server.example,priority=20),(address=127.0.0.1,priority=100);port=33060;uid=test;password=test;
+ - server=(address=server.example,priority=100),(address=127.0.0.1,priority=75),(address=192.0.10.56,priority=25);port=33060;uid=test;password=test;
+
+
+ Failover methods
+ - Sequential: Connection attempts will be performed in a sequential order, that is, one after another until
+ a connection is successful or all the elements from the list have been tried.
+
+ - Priority based: If a priority is provided, the connection attemps will be performed in descending order, starting
+ with the host with the highest priority. Priority must be a value between 0 and 100. Additionally, it is required to either
+ give a priority for every host or no priority to any host.
+
+
+
+
+
+ Initializes a new instance of the BaseSession class based on the specified anonymous type object.
+
+ The connection data as an anonymous type used to create the session.
+ A object.
+ is null.
+
+ Multiple hosts can be specified as part of the , which enables client-side failover when trying to
+ establish a connection.
+
+ To assign multiple hosts, create a property similar to the connection string examples shown in
+ . Note that the value of the property must be a string.
+
+
+
+
+
+ Drops the database/schema with the given name.
+
+ The name of the schema.
+ is null.
+
+
+
+ Creates a schema/database with the given name.
+
+ The name of the schema/database.
+ A object that matches the recently created schema/database.
+
+
+
+ Gets the schema with the given name.
+
+ The name of the schema.
+ A object set with the provided schema name.
+
+
+
+ Gets a list of schemas (or databases) in this session.
+
+ A list containing all existing schemas (or databases).
+
+
+
+ Starts a new transaction.
+
+
+
+
+ Commits the current transaction.
+
+ A object containing the results of the commit operation.
+
+
+
+ Rolls back the current transaction.
+
+
+
+
+ Closes this session or releases it to the pool.
+
+
+
+
+ Closes this session
+
+
+
+
+ Sets a transaction savepoint with an autogenerated name.
+
+ The autogenerated name of the transaction savepoint.
+
+
+
+ Sets a named transaction savepoint.
+
+ The name of the transaction savepoint.
+ The name of the transaction savepoint.
+
+
+
+ Removes the named savepoint from the set of savepoints within the current transaction.
+
+ The name of the transaction savepoint.
+
+
+
+ Rolls back a transaction to the named savepoint without terminating the transaction.
+
+ The name of the transaction savepoint.
+
+
+
+ Parses the connection data.
+
+ The connection string or connection URI.
+ A object.
+ An updated connection string representation of the provided connection string or connection URI.
+
+
+
+ Parses a connection URI.
+
+ The connection URI to parse.
+ The connection string representation of the provided .
+
+
+
+ Validates if the string provided is a Unix socket file.
+
+ The Unix socket to evaluate.
+ true if is a valid Unix socket; otherwise, false.
+
+
+
+ Converts the URI object into a connection string.
+
+ An instance with the values for the provided connection options.
+ The path of the Unix socket file.
+ If true the replaces the value for the server connection option; otherwise, false
+ Flag indicating if this is a connection using DNS SRV.
+ A connection string.
+
+
+
+ Parses a connection string.
+
+ The connection string to parse.
+ The parsed connection string.
+
+
+
+ Normalizes the Unix socket by removing leading and ending parenthesis as well as removing special characters.
+
+ The Unix socket to normalize.
+ A normalized Unix socket.
+
+
+
+ Disposes the current object. Disposes of the managed state if the flag is set to true.
+
+ Flag to indicate if the managed state is to be disposed.
+
+
+
+ Disposes the current object. Code added to correctly implement the disposable pattern.
+
+
+
+
+ Describes the state of the session.
+
+
+
+
+ The session is closed.
+
+
+
+
+ The session is open.
+
+
+
+
+ The session object is connecting to the data source.
+
+
+
+
+ The session object is executing a command.
+
+
+
+
+ Class encapsulating a session pooling functionality.
+
+
+
+
+ Queue of demoted hosts.
+
+
+
+
+ List of hosts that will be attempted to connect to.
+
+
+
+
+ Timer to be used when a host have been demoted.
+
+
+
+
+ Remove hosts from the demoted list that have already been there for more
+ than 120,000 milliseconds and add them to the available hosts list.
+
+
+
+
+ Get a session from pool or create a new one.
+
+
+
+
+
+ Closes all sessions the Client object created and destroys the managed pool.
+
+
+
+
+ Represents a collection of documents.
+
+
+
+
+ Creates an containing the provided objects that can be used to add
+ one or more items to a collection.
+
+ The objects to add.
+ An object containing the objects to add.
+ is null.
+ This method can take anonymous objects, domain objects, or just plain JSON strings.
+ The statement can be further modified before execution.
+
+
+
+ Creates a with the given condition that can be used to remove
+ one or more documents from a collection.The statement can then be further modified before execution.
+
+ The condition to match documents.
+ A object set with the given condition.
+ is null or white space.
+ The statement can then be further modified before execution.
+
+
+
+ Removes the document with the given identifier.
+
+ The unique identifier of the document to replace.
+ A object containing the results of the execution.
+ is null or white space.
+ This is a direct execution method.
+
+
+
+ Creates a with the given condition that can be used to modify one or more
+ documents from a collection.
+
+ The condition to match documents.
+ A object set with the given condition.
+ is null or white space.
+ The statement can then be further modified before execution.
+
+
+
+ Replaces the document matching the given identifier.
+
+ The unique identifier of the document to replace.
+ The document to replace the matching document.
+ A object containing the results of the execution.
+ is null or whitespace.
+ is null.
+ This is a direct execution method. Operation succeeds even if no matching document was found;
+ in which case, the Result.RecordsAffected property is zero. If the new document contains an identifier, the value
+ is ignored.
+
+
+
+ Adds the given document to the collection unless the identifier or any other field that has a unique index
+ already exists, in which case it will update the matching document.
+
+ The unique identifier of the document to replace.
+ The document to replace the matching document.
+ A object containing the results of the execution.
+ The server version is lower than 8.0.3.
+ is null or white space.
+ is null.
+ The is different from the one in .
+ This is a direct execution method.
+
+
+
+ Returns the number of documents in this collection on the server.
+
+ The number of documents found.
+
+
+
+ Creates a with the given condition which can be used to find documents in a
+ collection.
+
+ An optional condition to match documents.
+ A object set with the given condition.
+ The statement can then be further modified before execution.
+
+
+
+ Creates an index based on the properties provided in the JSON document.
+
+ The index name.
+ JSON document describing the index to be created.
+
+ is a JSON document with the following fields:
+
+ - fields: array of IndexField objects, each describing a single document member to be
+ included in the index (see below).
+ - type: string, (optional) the type of index. One of INDEX or SPATIAL. Default is INDEX and may
+ be omitted.
+
+
+ A single IndexField description consists of the following fields:
+
+ - field: string, the full document path to the document member or field to be indexed.
+ - type: string, one of the supported SQL column types to map the field into (see the following list).
+ For numeric types, the optional UNSIGNED keyword may follow. For the TEXT type, the length to consider for
+ indexing may be added.
+ - required: bool, (optional) true if the field is required to exist in the document. defaults to
+ false, except for GEOJSON where it defaults to true.
+ - options: int, (optional) special option flags for use when decoding GEOJSON data.
+ - srid: int, (optional) srid value for use when decoding GEOJSON data.
+
+
+ Supported SQL column types:
+
+ - INT [UNSIGNED]
+ - TINYINT [UNSIGNED]
+ - SMALLINT [UNSIGNED]
+ - MEDIUMINT [UNSIGNED]
+ - INTEGER [UNSIGNED]
+ - BIGINT [UNSIGNED]
+ - REAL [UNSIGNED]
+ - FLOAT [UNSIGNED]
+ - DOUBLE [UNSIGNED]
+ - DECIMAL [UNSIGNED]
+ - NUMERIC [UNSIGNED]
+ - DATE
+ - TIME
+ - TIMESTAMP
+ - DATETIME
+ - TEXT[(length)]
+ - CHAR[(lenght)]
+ - GEOJSON (extra options: options, srid)
+
+
+
+
+
+ Drops a collection index.
+
+ The index name.
+ is null or white space.
+
+
+
+ Verifies if the current collection exists in the server schema.
+
+ true if the collection exists; otherwise, false.
+
+
+
+ Returns the document with the given identifier.
+
+ The unique identifier of the document to replace.
+ A object if a document matching given identifier exists; otherwise, null.
+ is null or white space.
+ This is a direct execution method.
+
+
+
+ Base abstract class that defines elements inherited by all result types.
+
+
+
+
+ Gets the number of records affected by the statement that generated this result.
+
+
+
+
+ Gets the object of the session.
+
+
+
+
+ Gets a read-only collection of objects derived from statement execution.
+
+
+
+
+ Gets the number of warnings in the collection derived from statement execution.
+
+
+
+
+ No action is performed by this method. It is intended to be overriden by child classes if required.
+
+
+
+
+ Base abstract class for API statement.
+
+
+
+
+
+ Initializes a new instance of the BaseStatement class based on the specified session.
+
+ The session where the statement will be executed.
+
+
+
+ Gets the that owns the statement.
+
+
+
+
+ Executes the base statements. This method is intended to be defined by child classes.
+
+ A result object containing the details of the execution.
+
+
+
+ Executes a statement asynchronously.
+
+ A result object containing the details of the execution.
+
+
+
+ Validates if the session is open and valid.
+
+
+
+
+ Sets the status as Changed for prepared statement validation.
+
+
+
+
+ Converts a statement to prepared statement for a second execution
+ without any change but Bind, Limit, or Offset.
+
+
+
+
+ Abstract class for buffered results.
+
+ Generic result type.
+
+
+
+ Index of the current item.
+
+
+
+
+ List of generic items in this buffered result.
+
+
+
+
+ Flag that indicates if all items have been read.
+
+
+
+
+ Gets a dictionary containing the column names and their index.
+
+
+
+
+ Gets the page size set for this buffered result.
+
+
+
+
+ Loads the column data into the field.
+
+
+
+
+ Retrieves a read-only list of the generic items associated to this buffered result.
+
+ A generic list representing items in this buffered result.
+
+
+
+ Retrieves one element from the generic items associated to this buffered result.
+
+ A generic object that corresponds to the current or default item.
+
+
+
+ Determines if all items have already been read.
+
+ True if all items have been retrived, false otherwise.
+
+
+
+ Gets the current item.
+
+ All items have already been read.
+
+
+
+ Determines if all items have already been read.
+
+ True if all items have been retrived, false otherwise.
+
+
+
+ Resets the value of the field to zero.
+
+
+
+
+ Gets an representation of this object.
+
+ An representation of this object.
+
+
+
+ Gets an representation of this object.
+
+ An representation of this object.
+
+
+
+ Retrieves a read-only list of the generic items associated to this buffered result.
+
+ A generic list representing items in this buffered result.
+
+
+
+ No body has been defined for this method.
+
+
+
+
+ This object store the required parameters to create a Collection with schema validation.
+
+
+
+
+ If false, throws an exception if the collection exists.
+
+
+
+
+ Object which hold the Level and Schema parameters.
+
+
+
+
+ This object store the required parameters to modify a Collection with schema validation.
+
+
+
+
+ This object store the required parameters to Modify a Collection with schema validation.
+
+
+
+
+ This object store the required parameters to create a Collection with schema validation.
+
+
+
+
+ It can be STRICT to enable schema validation or OFF to disable .
+
+
+
+
+ The JSON which define the rules to be validated in the collection.
+
+
+
+
+ The possible values for parameter Level in Validation object.
+
+
+
+
+ Class to represent an error in this result.
+
+
+
+
+ Numeric code.
+
+
+
+
+ Return code indicating the outcome of the executed SQL statement.
+
+
+
+
+ Error message.
+
+
+
+
+ Initializes a new instance of the ErrorInfo class.
+
+
+
+
+ Abstract class for filterable statements.
+
+ The filterable statement.
+ The database object.
+ The type of result.
+
+
+
+ Initializes a new instance of the FiltarableStatement class based on the target and condition.
+
+ The database object.
+ The optional filter condition.
+
+
+
+ Enables the setting of Where condition for this operation.
+
+ The Where condition.
+ The implementing statement type.
+
+
+
+ Sets the number of items to be returned by the operation.
+
+ The number of items to be returned.
+ The implementing statement type.
+ is equal or lower than 0.
+
+
+
+ Sets the number of items to be skipped before including them into the result.
+
+ The number of items to be skipped.
+ The implementing statement type.
+
+
+
+ Binds the parameter values in filter expression.
+
+ The parameter name.
+ The value of the parameter.
+ A generic object representing the implementing statement type.
+
+
+
+ Binds the parameter values in filter expression.
+
+ The parameters as a DbDoc object.
+ A generic object representing the implementing statement type.
+
+
+
+ Binds the parameter values in filter expression.
+
+ The parameters as a JSON string.
+ The implementing statement type.
+
+
+
+ Binds the parameter values in filter expression.
+
+ The parameters as an anonymous object: new { param1 = value1, param2 = value2, ... }.
+ The implementing statement type.
+
+
+
+ Executes the statement.
+
+ The function to execute.
+ The generic object to use.
+ A generic result object containing the results of the execution.
+
+
+
+ Clones the filterable data but Session and Target remain the
+ same.
+
+ A clone of this filterable statement.
+
+
+
+ Represents a general statement result.
+
+
+
+
+ Gets the last inserted identifier (if there is one) by the statement that generated this result.
+
+
+
+
+ Gets the list of generated identifiers in the order of the Add() calls.
+
+
+
+
+ Abstract class to select a database object target.
+
+ The database object.
+ The execution result.
+
+
+
+ Initializes a new instance of the TargetedBaseStatement class based on the provided target.
+
+ The database object.
+
+
+
+ Gets the database target.
+
+
+
+
+ Represents a warning in this result.
+
+
+
+
+ Numeric value associated to the warning message.
+
+
+
+
+ Error message.
+
+
+
+
+ Strict level for the warning.
+
+
+
+
+ Initializes a new instance of the WarningInfo class based on the code and msg.
+
+ The code for the warning.
+ The error message for the warning.
+
+
+
+ Represents a chaining collection insert statement.
+
+
+
+
+ Adds documents to the collection.
+
+ The documents to add.
+ This object.
+ The array is null.
+
+
+
+ Executes the Add statement.
+
+ A object containing the results of the execution.
+
+
+
+ Implementation class for CRUD statements with collections using an index.
+
+
+
+
+ Executes this statement.
+
+ A object containing the results of the execution.
+
+
+
+ Represents a collection statement.
+
+
+
+
+
+ Converts base s into objects.
+
+ Array of objects to be converted to objects.
+ An enumerable collection of objects.
+
+
+
+ Represents the result of an operation that includes a collection of documents.
+
+
+
+
+ Represents a chaining collection find statement.
+
+
+
+
+ List of column projections that shall be returned.
+
+ List of columns.
+ This object set with the specified columns or fields.
+
+
+
+ Executes the Find statement.
+
+ A object containing the results of execution and data.
+
+
+
+ Locks matching rows against updates.
+
+ Optional row lock option to use.
+ This same object set with the lock shared option.
+ The server version is lower than 8.0.3.
+
+
+
+ Locks matching rows so no other transaction can read or write to it.
+
+ Optional row lock option to use.
+ This same object set with the lock exclusive option.
+ The server version is lower than 8.0.3.
+
+
+
+ Sets the collection aggregation.
+
+ The field list for aggregation.
+ This same object set with the specified group-by criteria.
+
+
+
+ Filters criteria for aggregated groups.
+
+ The filter criteria for aggregated groups.
+ This same object set with the specified filter criteria.
+
+
+
+ Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like
+ "order ASC" or "pages DESC, age ASC".
+
+ The order criteria.
+ A generic object representing the implementing statement type.
+
+
+
+ Enables the setting of Where condition for this operation.
+
+ The Where condition.
+ The implementing statement type.
+
+
+
+ Represents a chaining collection modify statement.
+
+
+
+
+ Sets key and value.
+
+ The document path key.
+ The new value.
+ This object.
+
+
+
+ Changes value for a key.
+
+ The document path key.
+ The new value.
+ This object.
+
+
+
+ Removes keys or values from a document.
+
+ An array of document paths representing the keys to be removed.
+ This object.
+
+
+
+ Creates a object set with the changes to be applied to all matching documents.
+
+ The JSON-formatted object describing the set of changes.
+ A object set with the changes described in .
+ can be a object, an anonymous object, or a JSON string.
+ is null.
+ is null or white space.
+
+
+
+ Inserts an item into the specified array.
+
+ The document path key including the index on which the item will be inserted.
+ The value to insert into the array.
+ A object containing the updated array.
+
+
+
+ Appends an item to the specified array.
+
+ The document path key.
+ The value to append to the array.
+ A object containing the updated array.
+
+
+
+ Allows the user to set the sorting criteria for the operation. The strings use normal SQL syntax like
+ "order ASC" or "pages DESC, age ASC".
+
+ The order criteria.
+ A generic object representing the implementing statement type.
+
+
+
+ Enables the setting of Where condition for this operation.
+
+ The Where condition.
+ The implementing statement type.
+
+
+
+ Executes the modify statement.
+
+ A object containing the results of the execution.
+
+
+
+ Represents a chaining collection remove statement.
+
+
+
+
+ Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like
+ "order ASC" or "pages DESC, age ASC".
+
+ The order criteria.
+ A generic object representing the implementing statement type.
+
+
+
+ Enables the setting of Where condition for this operation.
+
+ The Where condition.
+ The implementing statement type.
+
+
+
+ Executes the remove statement.
+
+ A object containing the results of the execution.
+
+
+
+ Represents a database object.
+
+
+
+
+ Gets the session that owns the database object.
+
+
+
+
+ Gets the schema that owns the database object.
+
+
+
+
+ Gets the database object name.
+
+
+
+
+ Verifies that the database object exists in the database.
+
+ True if the object exists in database, false otherwise.
+
+
+
+ Represents a generic document in JSON format.
+
+
+
+
+ Initializes a new instance of the DbDoc class based on the object provided. The value can be a domain object, anonymous object, or JSON string.
+
+ The value for this DbDoc.
+
+
+
+ Gets the value of a document property.
+
+ The key path for the property.
+
+
+
+
+ Gets the identifier of the document.
+
+
+
+
+ Gets a value indicating if this document has an identifier (property named _id with a value).
+
+
+
+
+ Sets a property on this document.
+
+ The key of the property.
+ The new property value.
+
+
+
+ Returns this document in Json format.
+
+ A Json formatted string.
+
+
+
+ Compares this DbDoc with another one.
+
+ The DbDoc to compare to.
+ True if they are equal, false otherwise.
+
+
+
+ Gets a value that serves as a hash function for a particular type.
+
+ A hash code for the current object.
+
+
+
+ Represents a collection of documents with a generic type.
+
+
+
+
+ Initializes a new instance of the generic Collection class based on the specified schema
+ and name.
+
+ The object associated to this collection.
+ The name of the collection.
+
+
+
+ Creates an containing the provided generic object. The add
+ statement can be further modified before execution.
+
+ The generic object to add.
+ An object containing the object to add.
+
+
+
+ Defines elements that allow to iterate through the contents of various items.
+
+
+
+
+ Initializes a new instance of the Iterator class.
+
+
+
+
+ This method is not yet implemented.
+
+
+
+ Exception is always thrown since the body of the method is not yet implemented.
+
+
+
+ Main class for session operations related to Connector/NET implementation of the X DevAPI.
+
+
+
+
+ Opens a session to the server given or to the first available server if multiple servers were specified.
+
+ The connection string or URI string format.
+
+ A object representing the established session.
+ Multiple hosts can be specified as part of the which
+ will enable client side failover when trying to establish a connection. For additional details and syntax
+ examples refer to the remarks section.
+
+
+
+ Opens a session to the server given.
+
+ The connection data for the server.
+
+ A object representing the established session.
+
+
+
+ Creates a new instance.
+
+ The connection string or URI string format.
+
+ The connection options in JSON string format.
+ A object representing a session pool.
+
+
+
+ Creates a new instance.
+
+ The connection string or URI string format.
+
+ The connection options in object format.
+
+
+ new { pooling = new
+ {
+ enabled = true,
+ maxSize = 15,
+ maxIdleTime = 60000,
+ queueTimeout = 60000
+ }
+ }
+
+
+
+ A object representing a session pool.
+
+
+
+ Creates a new instance.
+
+ The connection data.
+
+ The connection options in JSON string format.
+ A object representing a session pool.
+
+
+
+ Creates a new instance.
+
+ The connection data.
+
+ The connection options in object format.
+
+
+ new { pooling = new
+ {
+ enabled = true,
+ maxSize = 15,
+ maxIdleTime = 60000,
+ queueTimeout = 60000
+ }
+ }
+
+
+
+ A object representing a session pool.
+
+
+
+ Enables the creation of connection strings by exposing the connection options as properties.
+ Contains connection options specific to the X protocol.
+
+
+
+
+ Main constructor.
+
+
+
+
+ Constructor accepting a connection string.
+
+ The connection string.
+ A flag indicating if the default port is used in the connection.
+
+
+
+ Readonly field containing a collection of classic protocol and protocol shared connection options.
+
+
+
+
+ Gets or sets the connection timeout.
+
+
+
+
+ Gets or sets the connection attributes.
+
+
+
+
+ Path to a local file containing certificate revocation lists.
+
+
+
+
+ Gets or sets the compression type between client and server.
+
+
+
+
+ Gets or sets the compression algorithm.
+
+
+
+
+ Gets or sets a connection option.
+
+ The keyword that identifies the connection option to modify.
+
+
+
+ Represents a table column.
+
+
+
+
+ Gets the original column name.
+
+
+
+
+ Gets the alias of the column name.
+
+
+
+
+ Gets the table name the column orginates from.
+
+
+
+
+ Gets the alias of the table name .
+
+
+
+
+ Gets the schema name the column originates from.
+
+
+
+
+ Gets the catalog the schema originates from.
+ In MySQL protocol this is `def` by default.
+
+
+
+
+ Gets the collation used for this column.
+
+
+
+
+ Gets the character set used for this column.
+
+
+
+
+ Gets the column length.
+
+
+
+
+ Gets the fractional decimal digits for floating point and fixed point numbers.
+
+
+
+
+ Gets the Mysql data type.
+
+
+
+
+ Gets the .NET Clr data type.
+
+
+
+
+ True if it's a signed number.
+
+
+
+
+ True if column is UINT zerofill or BYTES rightpad.
+
+
+
+
+ Initializes a new instance of the Column class.
+
+
+
+
+ Represents a resultset that contains rows of data.
+
+
+
+
+ Gets the columns in this resultset.
+
+
+
+
+ Gets the number of columns in this resultset.
+
+
+
+
+ Gets a list containing the column names in this resultset.
+
+
+
+
+ Gets the rows of this resultset. This collection will be incomplete unless all the rows have been read
+ either by using the Next method or the Buffer method.
+
+
+
+
+ Gets the value of the column value at the current index.
+
+ The column index.
+ The CLR value at the column index.
+
+
+
+ Allows getting the value of the column value at the current index.
+
+ The column index.
+ The CLR value at the column index.
+
+
+
+ Returns the index of the given column name.
+
+ The name of the column to find.
+ The numeric index of column.
+
+
+
+ Represents a single row of data in a table.
+
+
+
+
+ Gets the value of the row at the given index.
+
+ The column index to retrieve the value.
+ The value at the index.
+
+
+
+ Gets the value of the column as a string.
+
+ The name of the column.
+ The value of the column as a string.
+
+
+
+ Gets a string based indexer into the row. Returns the value as a CLR type.
+
+ The column index to get.
+ The CLR value for the column.
+
+
+
+ Inherits from . Creates a resultset that contains rows of data.
+
+
+
+
+ Represents a resultset that contains rows of data for relational operations.
+
+
+
+
+ Gets a boolean value indicating if this result has data.
+
+
+
+
+ Moves to next resultset.
+
+ True if there is a new resultset, false otherwise.
+
+
+
+ Represents a sql statement.
+
+
+
+
+ Initializes a new instance of the SqlStament class bassed on the session and sql statement.
+
+ The session the Sql statement belongs to.
+ The Sql statement.
+
+
+
+ Gets the current Sql statement.
+
+
+
+
+ Gets the list of parameters associated to this Sql statement.
+
+
+
+
+ Executes the current Sql statement.
+
+ A object with the resultset and execution status.
+
+
+
+ Binds the parameters values by position.
+
+ The parameter values.
+ This set with the binded parameters.
+
+
+
+ Represents a server Table or View.
+
+
+
+
+ Gets a value indicating whether the object is
+ a View (True) or a Table (False).
+
+
+
+
+ Creates a set with the columns to select. The table select
+ statement can be further modified before execution. This method is intended to select a set
+ of table rows.
+
+ The optional column names to select.
+ A object for select chain operations.
+
+
+
+ Creates a set with the fileds to insert to. The table
+ insert statement can be further modified before exeuction. This method is intended to
+ insert one or multiple rows into a table.
+
+ The list of fields to insert.
+ A object for insert chain operations.
+
+
+
+ Creates a . This method is intended to update table rows
+ values.
+
+ A object for update chain operations.
+
+
+
+ Creates a . This method is intended to delete rows from a
+ table.
+
+ A object for delete chain operations.
+
+
+
+ Returns the number of rows in the table on the server.
+
+ The number of rows.
+
+
+
+ Verifies if the table exists in the database.
+
+ true if the table exists; otherwise, false.
+
+
+
+ Represents a chaining table delete statement.
+
+
+
+
+ Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like
+ "order ASC" or "pages DESC, age ASC".
+
+ The order criteria.
+ A generic object representing the implementing statement type.
+
+
+
+ Executes the delete statement.
+
+ A object containing the results of the delete execution.
+
+
+
+ Represents a chaining table insert statement.
+
+
+
+
+ Executes the insert statement.
+
+ A object containing the results of the insert statement.
+
+
+
+ Values to be inserted.
+ Multiple rows supported.
+
+ The values to be inserted.
+ This same object.
+
+
+
+ Represents a chaining table select statement.
+
+
+
+
+ Executes the select statement.
+
+ A object containing the results of the execution and data.
+
+
+
+ Locks matching rows against updates.
+
+ Optional row lock option to use.
+ This same object set with lock shared option.
+ The server version is lower than 8.0.3.
+
+
+
+ Locks matching rows so no other transaction can read or write to it.
+
+ Optional row lock option to use.
+ This same object set with the lock exclusive option.
+ The server version is lower than 8.0.3.
+
+
+
+ Sets the table aggregation.
+
+ The column list for aggregation.
+ This same object set with the specified group-by criteria.
+
+
+
+ Filters criteria for aggregated groups.
+
+ The filter criteria for aggregated groups.
+ This same object set with the specified filter criteria.
+
+
+
+ Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like
+ "order ASC" or "pages DESC, age ASC".
+
+ The order criteria.
+ A generic object that represents the implementing statement type.
+
+
+
+ Represents a chaining table update statement.
+
+
+
+
+ Executes the update statement.
+
+ A object ocntaining the results of the update statement execution.
+
+
+
+ Column and value to be updated.
+
+ Column name.
+ Value to be updated.
+ This same object.
+
+
+
+ Sets user-defined sorting criteria for the operation. The strings use normal SQL syntax like
+ "order ASC" or "pages DESC, age ASC".
+
+ The order criteria.
+ A generic object that represents the implementing statement type.
+
+
+
+ Represents a schema or database.
+
+
+
+
+ Session related to current schema.
+
+
+
+
+ Returns a list of all collections in this schema.
+
+ A list representing all found collections.
+
+
+
+ Returns a list of all tables in this schema.
+
+ A list representing all found tables.
+
+
+
+ Gets a collection by name.
+
+ The name of the collection to get.
+ Ensures the collection exists in the schema.
+ A object matching the given name.
+
+
+
+ Gets a typed collection object. This is useful for using domain objects.
+
+ The type of collection returned.
+ The name of collection to get.
+ A generic object set with the given name.
+
+
+
+ Gets the given collection as a table.
+
+ The name of the collection.
+ A object set with the given name.
+
+
+
+ Gets a table object. Upon return the object may or may not be valid.
+
+ The name of the table object.
+ A object set with the given name.
+
+
+
+ Creates a collection.
+
+ The name of the collection to create.
+ If false, throws an exception if the collection exists.
+ Collection referente.
+
+
+
+ Creates a collection including a schema validation.
+
+ The name of the collection to create.
+ This object hold the parameters required to create the collection.
+
+ Collection referente.
+
+
+
+ Modify a collection adding or removing schema validation parameters.
+
+ The name of the collection to create.
+ This object encapsulate the Validation parameters level and schema.
+ Collection referente.
+
+
+
+ Drops the given collection.
+
+ The name of the collection to drop.
+ is null.
+
+
+
+ Determines if this schema actually exists.
+
+ True if exists, false otherwise.
+
+
+
+ Represents a single server session.
+
+
+
+
+ Returns a object that can be used to execute the given SQL.
+
+ The SQL to execute.
+ A object set with the provided SQL.
+
+
+
+ Sets the schema in the database.
+
+ The schema name to be set.
+
+
+
+ Executes a query in the database to get the current schema.
+
+ Current database object or null if no schema is selected.
+
+
+ Holder for reflection information generated from mysqlx.proto
+
+
+ File descriptor for mysqlx.proto
+
+
+
+ IDs of messages that can be sent from client to the server
+
+ .. note::
+ this message is never sent on the wire. It is only used to let ``protoc``
+
+ * generate constants
+ * check for uniqueness
+
+
+
+ Container for nested types declared in the ClientMessages message type.
+
+
+
+ IDs of messages that can be sent from server to client
+
+ .. note::
+ this message is never sent on the wire. It is only used to let ``protoc``
+
+ * generate constants
+ * check for uniqueness
+
+
+
+ Container for nested types declared in the ServerMessages message type.
+
+
+
+ NOTICE has to stay at 11 forever
+
+
+
+
+ generic Ok message
+
+
+
+ Field number for the "msg" field.
+
+
+
+ generic Error message
+
+ A ``severity`` of ``ERROR`` indicates the current message sequence is
+ aborted for the given error and the session is ready for more.
+
+ In case of a ``FATAL`` error message the client should not expect
+ the server to continue handling any further messages and should
+ close the connection.
+
+ :param severity: severity of the error message
+ :param code: error-code
+ :param sql_state: SQL state
+ :param msg: human readable error message
+
+
+
+ Field number for the "severity" field.
+
+
+ Field number for the "code" field.
+
+
+ Field number for the "sql_state" field.
+
+
+ Field number for the "msg" field.
+
+
+ Container for nested types declared in the Error message type.
+
+
+ Holder for reflection information generated from mysqlx_connection.proto
+
+
+ File descriptor for mysqlx_connection.proto
+
+
+
+ a Capability
+
+ a tuple of a ``name`` and a :protobuf:msg:`Mysqlx.Datatypes::Any`
+
+
+
+ Field number for the "name" field.
+
+
+ Field number for the "value" field.
+
+
+
+ Capabilities
+
+
+
+ Field number for the "capabilities" field.
+
+
+
+ get supported connection capabilities and their current state
+
+ :returns: :protobuf:msg:`Mysqlx.Connection::Capabilities` or :protobuf:msg:`Mysqlx::Error`
+
+
+
+
+ sets connection capabilities atomically
+
+ only provided values are changed, other values are left unchanged.
+ If any of the changes fails, all changes are discarded.
+
+ :precond: active sessions == 0
+ :returns: :protobuf:msg:`Mysqlx::Ok` or :protobuf:msg:`Mysqlx::Error`
+
+
+
+ Field number for the "capabilities" field.
+
+
+
+ announce to the server that the client wants to close the connection
+
+ it discards any session state of the server
+
+ :Returns: :protobuf:msg:`Mysqlx::Ok`
+
+
+
+ Field number for the "uncompressed_size" field.
+
+
+ Field number for the "server_messages" field.
+
+
+ Field number for the "client_messages" field.
+
+
+ Field number for the "payload" field.
+
+
+ Holder for reflection information generated from mysqlx_crud.proto
+
+
+ File descriptor for mysqlx_crud.proto
+
+
+
+ DataModel to use for filters, names, ...
+
+
+
+
+ ViewAlgorithm defines how MySQL Server processes the view
+
+
+
+
+ MySQL chooses which algorithm to use
+
+
+
+
+ the text of a statement that refers to the view and the view definition are merged
+
+
+
+
+ the view are retrieved into a temporary table
+
+
+
+
+ ViewSqlSecurity defines the security context in which the view is going to be
+ executed, this means that VIEW can be executed with current user permissions or
+ with permissions of the uses who defined the VIEW
+
+
+
+
+ ViewCheckOption limits the write operations done on a `VIEW`
+ (`INSERT`, `UPDATE`, `DELETE`) to rows in which the `WHERE` clause is `TRUE`
+
+
+
+
+ the view WHERE clause is checked, but no underlying views are checked
+
+
+
+
+ the view WHERE clause is checked, then checking recurses to underlying views
+
+
+
+
+ column definition
+
+
+
+ Field number for the "name" field.
+
+
+
+ optional
+
+
+
+ Field number for the "alias" field.
+
+
+
+ optional
+
+
+
+ Field number for the "document_path" field.
+
+
+
+ a projection
+
+ :param source: the expression identifying an element from the source data
+ which can include a column identifier or any expression
+ :param alias: optional alias. Required for DOCUMENTs (clients may use
+ the source string as default)
+
+
+
+ Field number for the "source" field.
+
+
+
+ required
+
+
+
+ Field number for the "alias" field.
+
+
+
+ optional
+
+
+
+
+ collection
+
+
+
+ Field number for the "name" field.
+
+
+
+ required
+
+
+
+ Field number for the "schema" field.
+
+
+
+ optional
+
+
+
+
+ limit
+
+ :param row_count: maximum rows to filter
+ :param offset: maximum rows to skip before applying the row_count
+
+
+
+ Field number for the "row_count" field.
+
+
+
+ required
+
+
+
+ Field number for the "offset" field.
+
+
+
+ optional
+
+
+
+
+ limit expression
+
+ LimitExpr in comparison to Limit, is able to specify that row_count and
+ offset are placeholders.
+ This message support expressions of following types Expr/literal/UINT,
+ Expr/PLACEHOLDER.
+
+ :param row_count: maximum rows to filter
+ :param offset: maximum rows to skip before applying the row_count
+
+
+
+ Field number for the "row_count" field.
+
+
+
+ required
+
+
+
+ Field number for the "offset" field.
+
+
+
+ optional
+
+
+
+
+ sort order
+
+
+
+ Field number for the "expr" field.
+
+
+
+ required
+
+
+
+ Field number for the "direction" field.
+
+
+
+ optional//[ default=ASC ]
+
+
+
+ Container for nested types declared in the Order message type.
+
+
+
+ update operations
+
+ :param source: specification of the value to be updated
+ if data_model is TABLE, a column name may be specified and also a document path, if the column has type JSON
+ if data_model is DOCUMENT, only document paths are allowed
+ in both cases, schema and table must be not set
+ :param operation: the type of operation to be performed
+ :param value: an expression to be computed as the new value for the operation
+
+
+
+ Field number for the "source" field.
+
+
+
+ required
+
+
+
+ Field number for the "operation" field.
+
+
+
+ required
+
+
+
+ Field number for the "value" field.
+
+
+
+ optional
+
+
+
+ Container for nested types declared in the UpdateOperation message type.
+
+
+
+ only allowed for TABLE
+
+
+
+
+ no value (removes the identified path from a object or array)
+
+
+
+
+ sets the new value on the identified path
+
+
+
+
+ replaces a value if the path exists
+
+
+
+
+ source and value must be documents
+
+
+
+
+ insert the value in the array at the index identified in the source path
+
+
+
+
+ append the value on the array at the identified path
+
+
+
+
+ merge JSON object value with the provided patch expression
+
+
+
+
+ Find Documents/Rows in a Collection/Table
+
+ .. uml::
+
+ client -> server: Find
+ ... one or more Resultset ...
+
+ :param collection: collection to insert into
+ :param data_model: datamodel that the operations refer to
+ :param projection: list of column projections that shall be returned
+ :param args: values for parameters used in filter expression
+ :param criteria: filter criteria
+ :param limit: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr)
+ :param order: sort-order in which the rows/document shall be returned in
+ :param grouping: column expression list for aggregation (GROUP BY)
+ :param grouping_criteria: filter criteria for aggregated groups
+ :param locking: perform row locking on matches
+ :param locking_options: additional options how to handle locked rows
+ :param limit_expr: numbers of rows that shall be skipped and returned (user can set one of: limit, limit_expr)
+ :Returns: :protobuf:msg:`Mysqlx.Resultset::`
+
+
+
+ Field number for the "collection" field.
+
+
+
+ required
+
+
+
+ Field number for the "data_model" field.
+
+
+
+ optional
+
+
+
+ Field number for the "projection" field.
+
+
+ Field number for the "criteria" field.
+
+
+
+ optional
+
+
+
+ Field number for the "args" field.
+
+
+ Field number for the "order" field.
+
+
+ Field number for the "grouping" field.
+
+
+ Field number for the "grouping_criteria" field.
+
+
+
+ optional
+
+
+
+ Field number for the "locking" field.
+
+
+
+ optional
+
+
+
+ Field number for the "locking_options" field.
+
+
+
+ optional
+
+
+
+ Field number for the "limit" field.
+
+
+
+ optional
+
+
+
+ Field number for the "limit_expr" field.
+
+
+
+ optional
+
+
+
+ Container for nested types declared in the Find message type.
+
+
+
+ Lock matching rows against updates
+
+
+
+
+ Lock matching rows so no other transaction can read or write to it
+
+
+
+
+ Do not wait to acquire row lock, fail with an error if a requested row is locked
+
+
+
+
+ Do not wait to acquire a row lock, remove locked rows from the result set
+
+
+
+
+ Insert documents/rows into a collection/table
+
+ :param collection: collection to insert into
+ :param data_model: datamodel that the operations refer to
+ :param projection: name of the columns to insert data into (empty if data_model is DOCUMENT)
+ :param row: set of rows to insert into the collection/table (a single expression with a JSON document literal or an OBJECT expression)
+ :param args: values for parameters used in row expressions
+ :param upsert: true if this should be treated as an Upsert (that is, update on duplicate key)
+ :Returns: :protobuf:msg:`Mysqlx.Resultset::`
+
+
+
+ Field number for the "collection" field.
+
+
+
+ required
+
+
+
+ Field number for the "data_model" field.
+
+
+
+ optional
+
+
+
+ Field number for the "projection" field.
+
+
+ Field number for the "row" field.
+
+
+ Field number for the "args" field.
+
+
+ Field number for the "upsert" field.
+
+
+
+ optional//[default = false]
+
+
+
+ Container for nested types declared in the Insert message type.
+
+
+ Field number for the "field" field.
+
+
+
+ Update documents/rows in a collection/table
+
+ :param collection: collection to change
+ :param data_model: datamodel that the operations refer to
+ :param criteria: filter expression to match rows that the operations will apply on
+ :param args: values for parameters used in filter expression
+ :param limit: limits the number of rows to match (user can set one of: limit, limit_expr)
+ :param order: specifies order of matched rows
+ :param operation: list of operations to be applied. Valid operations will depend on the data_model.
+ :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr)
+ :Returns: :protobuf:msg:`Mysqlx.Resultset::`
+
+
+
+ Field number for the "collection" field.
+
+
+
+ required
+
+
+
+ Field number for the "data_model" field.
+
+
+
+ optional
+
+
+
+ Field number for the "criteria" field.
+
+
+
+ optional
+
+
+
+ Field number for the "args" field.
+
+
+ Field number for the "order" field.
+
+
+ Field number for the "operation" field.
+
+
+ Field number for the "limit" field.
+
+
+
+ optional
+
+
+
+ Field number for the "limit_expr" field.
+
+
+
+ optional
+
+
+
+
+ Delete documents/rows from a Collection/Table
+
+ :param collection: collection to change
+ :param data_model: datamodel that the operations refer to
+ :param criteria: filter expression to match rows that the operations will apply on
+ :param args: values for parameters used in filter expression
+ :param limit: limits the number of rows to match (user can set one of: limit, limit_expr)
+ :param order: specifies order of matched rows
+ :param limit_expr: limits the number of rows to match (user can set one of: limit, limit_expr)
+ :Returns: :protobuf:msg:`Mysqlx.Resultset::`
+
+
+
+ Field number for the "collection" field.
+
+
+
+ required
+
+
+
+ Field number for the "data_model" field.
+
+
+
+ optional
+
+
+
+ Field number for the "criteria" field.
+
+
+
+ optional
+
+
+
+ Field number for the "args" field.
+
+
+ Field number for the "order" field.
+
+
+ Field number for the "limit" field.
+
+
+
+ optional
+
+
+
+ Field number for the "limit_expr" field.
+
+
+
+ optional
+
+
+
+ Field number for the "collection" field.
+
+
+
+ required
+
+
+
+ Field number for the "definer" field.
+
+
+
+ optional
+
+
+
+ Field number for the "algorithm" field.
+
+
+
+ optional//[default = UNDEFINED]
+
+
+
+ Field number for the "security" field.
+
+
+
+ optional//[default = DEFINER]
+
+
+
+ Field number for the "check" field.
+
+
+
+ optional
+
+
+
+ Field number for the "column" field.
+
+
+ Field number for the "stmt" field.
+
+
+
+ required
+
+
+
+ Field number for the "replace_existing" field.
+
+
+
+ optional//[default = false]
+
+
+
+ Field number for the "collection" field.
+
+
+
+ required
+
+
+
+ Field number for the "definer" field.
+
+
+
+ optional
+
+
+
+ Field number for the "algorithm" field.
+
+
+
+ optional
+
+
+
+ Field number for the "security" field.
+
+
+
+ optional
+
+
+
+ Field number for the "check" field.
+
+
+
+ optional
+
+
+
+ Field number for the "column" field.
+
+
+ Field number for the "stmt" field.
+
+
+
+ optional
+
+
+
+ Field number for the "collection" field.
+
+
+
+ required
+
+
+
+ Field number for the "if_exists" field.
+
+
+
+ optional//[ default = false ]
+
+
+
+ Holder for reflection information generated from mysqlx_cursor.proto
+
+
+ File descriptor for mysqlx_cursor.proto
+
+
+
+ Open a cursor
+
+ .. uml::
+
+ client -> server: Open
+ alt Success
+ ... none or partial Resultsets or full Resultsets ...
+ client <- server: StmtExecuteOk
+ else Failure
+ client <- server: Error
+ end
+
+ :param cursor_id: client side assigned cursor id, the ID is going to represent new cursor and assigned to it statement
+ :param stmt: statement which resultset is going to be iterated through the cursor
+ :param fetch_rows: number of rows which should be retrieved from sequential cursor
+ :Returns: :protobuf:msg:`Mysqlx.Ok::`
+
+
+
+ Field number for the "cursor_id" field.
+
+
+
+ required
+
+
+
+ Field number for the "stmt" field.
+
+
+
+ required
+
+
+
+ Field number for the "fetch_rows" field.
+
+
+
+ optional
+
+
+
+ Container for nested types declared in the Open message type.
+
+
+ Field number for the "type" field.
+
+
+
+ required
+
+
+
+ Field number for the "prepare_execute" field.
+
+
+
+ optional
+
+
+
+ Container for nested types declared in the OneOfMessage message type.
+
+
+
+ Fetch next portion of data from a cursor
+
+ .. uml::
+
+ client -> server: Fetch
+ alt Success
+ ... none or partial Resultsets or full Resultsets ...
+ client <- server: StmtExecuteOk
+ else
+ client <- server: Error
+ end
+
+ :param cursor_id: client side assigned cursor id, must be already open
+ :param fetch_rows: number of rows which should be retrieved from sequential cursor
+
+
+
+ Field number for the "cursor_id" field.
+
+
+
+ required
+
+
+
+ Field number for the "fetch_rows" field.
+
+
+
+ optional
+
+
+
+
+ Close cursor
+
+ .. uml::
+
+ client -> server: Close
+ alt Success
+ client <- server: Ok
+ else Failure
+ client <- server: Error
+ end
+
+ :param cursor_id: client side assigned cursor id, must be allocated/open
+ :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error`
+
+
+
+ Field number for the "cursor_id" field.
+
+
+
+ required
+
+
+
+ Holder for reflection information generated from mysqlx_datatypes.proto
+
+
+ File descriptor for mysqlx_datatypes.proto
+
+
+
+ a scalar
+
+
+
+ Field number for the "type" field.
+
+
+
+ required
+
+
+
+ Field number for the "v_signed_int" field.
+
+
+ Field number for the "v_unsigned_int" field.
+
+
+ Field number for the "v_octets" field.
+
+
+
+ 4 is unused, was Null which doesn't have a storage anymore
+
+
+
+ Field number for the "v_double" field.
+
+
+ Field number for the "v_float" field.
+
+
+ Field number for the "v_bool" field.
+
+
+ Field number for the "v_string" field.
+
+
+ Enum of possible cases for the "DefaultOneOf" oneof.
+
+
+ Container for nested types declared in the Scalar message type.
+
+
+
+ a string with a charset/collation
+
+
+
+ Field number for the "value" field.
+
+
+
+ required
+
+
+
+ Field number for the "collation" field.
+
+
+ Enum of possible cases for the "String_present" oneof.
+
+
+
+ an opaque octet sequence, with an optional content_type
+ See ``Mysqlx.Resultset.ColumnMetadata`` for list of known values.
+
+
+
+ Field number for the "value" field.
+
+
+
+ required
+
+
+
+ Field number for the "content_type" field.
+
+
+
+ a object
+
+
+
+ Field number for the "fld" field.
+
+
+ Container for nested types declared in the Object message type.
+
+
+ Field number for the "key" field.
+
+
+
+ required
+
+
+
+ Field number for the "value" field.
+
+
+
+ required
+
+
+
+
+ a Array
+
+
+
+ Field number for the "value" field.
+
+
+
+ a helper to allow all field types
+
+
+
+ Field number for the "type" field.
+
+
+
+ required
+
+
+
+ Field number for the "scalar" field.
+
+
+ Field number for the "obj" field.
+
+
+ Field number for the "array" field.
+
+
+ Container for nested types declared in the Any message type.
+
+
+ Holder for reflection information generated from mysqlx_expect.proto
+
+
+ File descriptor for mysqlx_expect.proto
+
+
+
+ open an Expect block and set/unset the conditions that have to be fulfilled
+
+ if any of the conditions fail, all enclosed messages will fail with
+ a Mysqlx.Error message.
+
+ :returns: :protobuf:msg:`Mysqlx::Ok` on success, :protobuf:msg:`Mysqlx::Error` on error
+
+
+
+ Field number for the "op" field.
+
+
+
+ [ default = EXPECT_CTX_COPY_PREV ];//optional
+
+
+
+ Field number for the "cond" field.
+
+
+ Container for nested types declared in the Open message type.
+
+
+
+ copy the operations from the parent Expect-block
+
+
+
+
+ start with a empty set of operations
+
+
+
+ Field number for the "condition_key" field.
+
+
+
+ required
+
+
+
+ Field number for the "condition_value" field.
+
+
+
+ optional
+
+
+
+ Field number for the "op" field.
+
+
+
+ [ default = EXPECT_OP_SET ];//optional
+
+
+
+ Container for nested types declared in the Condition message type.
+
+
+
+ Change error propagation behaviour
+
+
+
+
+ Check if X Protocol field exists
+
+
+
+
+ Check if X Protocol support document _id generation
+
+
+
+
+ set the condition
+
+ set, if not set
+ overwrite, if set
+
+
+
+
+ unset the condition
+
+
+
+
+ close a Expect block
+
+ closing a Expect block restores the state of the previous Expect block
+ for the following messages
+
+ :returns: :protobuf:msg:`Mysqlx::Ok` on success, :protobuf:msg:`Mysqlx::Error` on error
+
+
+
+ Holder for reflection information generated from mysqlx_expr.proto
+
+
+ File descriptor for mysqlx_expr.proto
+
+
+
+ Expressions
+
+ the "root" of the expression tree
+
+ .. productionlist::
+ expr: `operator` |
+ : `identifier` |
+ : `function_call` |
+ : variable |
+ : `literal` |
+ : placeholder
+
+ If expression type is PLACEHOLDER then it refers to the value of a parameter
+ specified when executing a statement (see `args` field of `StmtExecute` command).
+ Field `position` (which must be present for such an expression) gives 0-based
+ position of the parameter in the parameter list.
+
+
+
+ Field number for the "type" field.
+
+
+
+ required
+
+
+
+ Field number for the "identifier" field.
+
+
+ Field number for the "variable" field.
+
+
+ Field number for the "literal" field.
+
+
+ Field number for the "function_call" field.
+
+
+ Field number for the "operator" field.
+
+
+ Field number for the "position" field.
+
+
+ Field number for the "object" field.
+
+
+ Field number for the "array" field.
+
+
+ Container for nested types declared in the Expr message type.
+
+
+
+ identifier: name, schame.name
+
+ .. productionlist::
+ identifier: string "." string |
+ : string
+
+
+
+ Field number for the "name" field.
+
+
+
+ required
+
+
+
+ Field number for the "schema_name" field.
+
+
+
+ DocumentPathItem
+
+ .. productionlist::
+ document_path: path_item | path_item document_path
+ path_item : member | array_index | "**"
+ member : "." string | "." "*"
+ array_index : "[" number "]" | "[" "*" "]"
+
+
+
+ Field number for the "type" field.
+
+
+
+ required
+
+
+
+ Field number for the "value" field.
+
+
+ Field number for the "index" field.
+
+
+ Container for nested types declared in the DocumentPathItem message type.
+
+
+
+ .member
+
+
+
+
+ .*
+
+
+
+
+ [index]
+
+
+
+
+ [*]
+
+
+
+
+ **
+
+
+
+
+ col_identifier (table): col@doc_path, tbl.col@doc_path col, tbl.col, schema.tbl.col
+ col_identifier (document): doc_path
+
+ .. productionlist::
+ col_identifier: string "." string "." string |
+ : string "." string |
+ : string |
+ : string "." string "." string "@" document_path |
+ : string "." string "@" document_path |
+ : string "@" document_path |
+ : document_path
+ document_path: member | arrayLocation | doubleAsterisk
+ member = "." string | "." "*"
+ arrayLocation = "[" index "]" | "[" "*" "]"
+ doubleAsterisk = "**"
+
+
+
+ Field number for the "document_path" field.
+
+
+ Field number for the "name" field.
+
+
+ Field number for the "table_name" field.
+
+
+ Field number for the "schema_name" field.
+
+
+
+ function call: ``func(a, b, "1", 3)``
+
+ .. productionlist::
+ function_call: `identifier` "(" [ `expr` ["," `expr` ]* ] ")"
+
+
+
+ Field number for the "name" field.
+
+
+
+ required
+
+
+
+ Field number for the "param" field.
+
+
+
+ operator: ``<<(a, b)``
+
+ .. note::
+
+ Non-authoritative list of operators implemented (case sensitive):
+
+ Nullary
+ * ``*``
+ * ``default``
+
+ Unary
+ * ``!``
+ * ``sign_plus``
+ * ``sign_minus``
+ * ``~``
+
+ Binary
+ * ``&&``
+ * ``||``
+ * ``xor``
+ * ``==``
+ * ``!=``
+ * ``>``
+ * ``>=``
+ * ``<``
+ * ``<=``
+ * ``&``
+ * ``|``
+ * ``^``
+ * ``<<``
+ * ``>>``
+ * ``+``
+ * ``-``
+ * ``*``
+ * ``/``
+ * ``div``
+ * ``%``
+ * ``is``
+ * ``is_not``
+ * ``regexp``
+ * ``not_regexp``
+ * ``like``
+ * ``not_like``
+ * ``cast``
+ * ``cont_in``
+ * ``not_cont_in``
+
+ Using special representation, with more than 2 params
+ * ``in`` (param[0] IN (param[1], param[2], ...))
+ * ``not_in`` (param[0] NOT IN (param[1], param[2], ...))
+
+ Ternary
+ * ``between``
+ * ``between_not``
+ * ``date_add``
+ * ``date_sub``
+
+ Units for date_add/date_sub
+ * ``MICROSECOND``
+ * ``SECOND``
+ * ``MINUTE``
+ * ``HOUR``
+ * ``DAY``
+ * ``WEEK``
+ * ``MONTH``
+ * ``QUARTER``
+ * ``YEAR``
+ * ``SECOND_MICROSECOND``
+ * ``MINUTE_MICROSECOND``
+ * ``MINUTE_SECOND``
+ * ``HOUR_MICROSECOND``
+ * ``HOUR_SECOND``
+ * ``HOUR_MINUTE``
+ * ``DAY_MICROSECOND``
+ * ``DAY_SECOND``
+ * ``DAY_MINUTE``
+ * ``DAY_HOUR``
+
+ Types for cast
+ * ``BINARY[(N)]``
+ * ``CHAR[(N)]``
+ * ``DATE``
+ * ``DATETIME``
+ * ``DECIMAL[(M[,D])]``
+ * ``JSON``
+ * ``SIGNED [INTEGER]``
+ * ``TIME``
+ * ``UNSIGNED [INTEGER]``
+
+ .. productionlist::
+ operator: `name` "(" [ `expr` ["," `expr` ]* ] ")"
+
+
+
+ Field number for the "name" field.
+
+
+
+ required
+
+
+
+ Field number for the "param" field.
+
+
+
+ an object (with expression values)
+
+
+
+ Field number for the "fld" field.
+
+
+ Container for nested types declared in the Object message type.
+
+
+ Field number for the "key" field.
+
+
+
+ required
+
+
+
+ Field number for the "value" field.
+
+
+
+ required
+
+
+
+
+ a Array of expressions
+
+
+
+ Field number for the "value" field.
+
+
+ Holder for reflection information generated from mysqlx_notice.proto
+
+
+ File descriptor for mysqlx_notice.proto
+
+
+
+ Common Frame for all Notices
+
+ ===================================================== =====
+ .type value
+ ===================================================== =====
+ :protobuf:msg:`Mysqlx.Notice::Warning` 1
+ :protobuf:msg:`Mysqlx.Notice::SessionVariableChanged` 2
+ :protobuf:msg:`Mysqlx.Notice::SessionStateChanged` 3
+ ===================================================== =====
+
+ :param type: the type of the payload
+ :param payload: the payload of the notification
+ :param scope: global or local notification
+
+
+
+ Field number for the "type" field.
+
+
+
+ required
+
+
+
+ Field number for the "scope" field.
+
+
+
+ [ default = GLOBAL ];//optional
+
+
+
+ Field number for the "payload" field.
+
+
+
+ optional
+
+
+
+ Container for nested types declared in the Frame message type.
+
+
+
+ Server-side warnings and notes
+
+ ``.scope`` == ``local``
+ ``.level``, ``.code`` and ``.msg`` map the content of
+
+ .. code-block:: sql
+
+ SHOW WARNINGS
+
+ ``.scope`` == ``global``
+ (undefined) will be used for global, unstructured messages like:
+
+ * server is shutting down
+ * a node disconnected from group
+ * schema or table dropped
+
+ ========================================== =======================
+ :protobuf:msg:`Mysqlx.Notice::Frame` field value
+ ========================================== =======================
+ ``.type`` 1
+ ``.scope`` ``local`` or ``global``
+ ========================================== =======================
+
+ :param level: warning level: Note or Warning
+ :param code: warning code
+ :param msg: warning message
+
+
+
+ Field number for the "level" field.
+
+
+
+ [ default = WARNING ];//optional
+
+
+
+ Field number for the "code" field.
+
+
+
+ required
+
+
+
+ Field number for the "msg" field.
+
+
+
+ required
+
+
+
+ Container for nested types declared in the Warning message type.
+
+
+
+ Notify clients about changes to the current session variables
+
+ Every change to a variable that is accessible through:
+
+ .. code-block:: sql
+
+ SHOW SESSION VARIABLES
+
+ ========================================== =========
+ :protobuf:msg:`Mysqlx.Notice::Frame` field value
+ ========================================== =========
+ ``.type`` 2
+ ``.scope`` ``local``
+ ========================================== =========
+
+ :param namespace: namespace that param belongs to
+ :param param: name of the variable
+ :param value: the changed value of param
+
+
+
+ Field number for the "param" field.
+
+
+
+ required
+
+
+
+ Field number for the "value" field.
+
+
+
+ optional
+
+
+
+
+ Notify clients about changes to the internal session state
+
+ ========================================== =========
+ :protobuf:msg:`Mysqlx.Notice::Frame` field value
+ ========================================== =========
+ ``.type`` 3
+ ``.scope`` ``local``
+ ========================================== =========
+
+ :param param: parameter key
+ :param value: updated value
+
+
+
+ Field number for the "param" field.
+
+
+
+ required
+
+
+
+ Field number for the "value" field.
+
+
+ Container for nested types declared in the SessionStateChanged message type.
+
+
+
+ .. more to be added
+
+
+
+ Holder for reflection information generated from mysqlx_prepare.proto
+
+
+ File descriptor for mysqlx_prepare.proto
+
+
+
+ Prepare a new statement
+
+ .. uml::
+
+ client -> server: Prepare
+ alt Success
+ client <- server: Ok
+ else Failure
+ client <- server: Error
+ end
+
+ :param stmt_id: client side assigned statement id, which is going to identify the result of preparation
+ :param stmt: defines one of following messages to be prepared - Crud.Find, Crud.Insert, Crud.Delete, Crud.Upsert, Sql.StmtExecute
+ :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error`
+
+
+
+ Field number for the "stmt_id" field.
+
+
+
+ required
+
+
+
+ Field number for the "stmt" field.
+
+
+
+ required
+
+
+
+ Container for nested types declared in the Prepare message type.
+
+
+ Field number for the "type" field.
+
+
+
+ required
+
+
+
+ Field number for the "find" field.
+
+
+
+ optional
+
+
+
+ Field number for the "insert" field.
+
+
+
+ optional
+
+
+
+ Field number for the "update" field.
+
+
+
+ optional
+
+
+
+ Field number for the "delete" field.
+
+
+
+ optional
+
+
+
+ Field number for the "stmt_execute" field.
+
+
+
+ optional
+
+
+
+ Enum of possible cases for the "Type_present" oneof.
+
+
+ Container for nested types declared in the OneOfMessage message type.
+
+
+
+ Determine which of optional fields was set by the client
+ (Workaround for missing "oneof" keyword in pb2.5)
+
+
+
+
+ Execute already prepared statement
+
+ .. uml::
+
+ client -> server: Execute
+ alt Success
+ ... Resultsets...
+ client <- server: StmtExecuteOk
+ else Failure
+ client <- server: Error
+ end
+
+ :param stmt_id: client side assigned statement id, must be already prepared
+ :param args_list: Arguments to bind to the prepared statement
+ :param compact_metadata: send only type information for :protobuf:msg:`Mysqlx.Resultset::ColumnMetadata`, skipping names and others
+ :Returns: :protobuf:msg:`Mysqlx.Ok::`
+
+
+
+ Field number for the "stmt_id" field.
+
+
+
+ required
+
+
+
+ Field number for the "args" field.
+
+
+ Field number for the "compact_metadata" field.
+
+
+
+ [ default = false ]; optional
+
+
+
+
+ Deallocate already prepared statement
+
+ Deallocating the statement.
+
+ .. uml::
+
+ client -> server: Deallocate
+ alt Success
+ client <- server: Ok
+ else Failure
+ client <- server: Error
+ end
+
+ :param stmt_id: client side assigned statement id, must be already prepared
+ :Returns: :protobuf:msg:`Mysqlx.Ok|Mysqlx.Error`
+
+
+
+ Field number for the "stmt_id" field.
+
+
+
+ required
+
+
+
+ Holder for reflection information generated from mysqlx_resultset.proto
+
+
+ File descriptor for mysqlx_resultset.proto
+
+
+
+ a hint about the higher-level encoding of a BYTES field
+
+ ====== ====== ===========
+ type value description
+ ====== ====== ===========
+ BYTES 0x0001 GEOMETRY (WKB encoding)
+ BYTES 0x0002 JSON (text encoding)
+ BYTES 0x0003 XML (text encoding)
+ ====== ====== ===========
+
+ .. note::
+ this list isn't comprehensive. As guideline: the field's value is expected
+ to pass a validator check on client and server if this field is set.
+ If the server adds more internal datatypes that rely on BLOB storage
+ like image manipulation, seeking into complex types in BLOBs, ... more
+ types will be added.
+
+
+
+
+ a hint about the higher-level encoding of a DATETIME field
+
+ ====== ====== ===========
+ type value description
+ ======== ====== ===========
+ DATE 0x0001 DATETIME contains only date part
+ DATETIME 0x0002 DATETIME contains both date and time parts
+ ====== ====== ===========
+
+
+
+
+ resultsets are finished, OUT paramset is next
+
+
+
+
+ resultset and out-params are finished, but more resultsets available
+
+
+
+
+ all resultsets are finished
+
+
+
+
+ cursor is opened still the execution of PrepFetch or PrepExecute ended
+
+
+
+
+ meta data of a Column
+
+ .. note:: the encoding used for the different ``bytes`` fields in the meta data is externally
+ controlled.
+ .. seealso:: https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html
+
+ .. note::
+ The server may not set the ``original_{table|name}`` fields if they are equal to the plain
+ ``{table|name}`` field.
+
+ A client has to reconstruct it like::
+
+ if .original_name is empty and .name is not empty:
+ .original_name = .name
+
+ if .original_table is empty and .table is not empty:
+ .original_table = .table
+
+ .. note::
+ ``compact metadata format`` can be requested by the client. In that case only ``.type`` is set and
+ all other fields are empty.
+
+ :param type:
+ .. table:: Expected Datatype of Mysqlx.Resultset.Row per SQL Type for non NULL values
+
+ ================= ============ ======= ========== ====== ========
+ SQL Type .type .length .frac_dig .flags .charset
+ ================= ============ ======= ========== ====== ========
+ TINY SINT x
+ TINY UNSIGNED UINT x x
+ SHORT SINT x
+ SHORT UNSIGNED UINT x x
+ INT24 SINT x
+ INT24 UNSIGNED UINT x x
+ INT SINT x
+ INT UNSIGNED UINT x x
+ LONGLONG SINT x
+ LONGLONG UNSIGNED UINT x x
+ DOUBLE DOUBLE x x x
+ FLOAT FLOAT x x x
+ DECIMAL DECIMAL x x x
+ VARCHAR,CHAR,... BYTES x x x
+ GEOMETRY BYTES
+ TIME TIME x
+ DATE DATETIME x
+ DATETIME DATETIME x
+ YEAR UINT x x
+ TIMESTAMP DATETIME x
+ SET SET x
+ ENUM ENUM x
+ NULL BYTES
+ BIT BIT x
+ ================= ============ ======= ========== ====== ========
+
+ .. note:: the SQL "NULL" value is sent as an empty field value in :protobuf:msg:`Mysqlx.Resultset::Row`
+ .. seealso:: protobuf encoding of primitive datatypes are decribed in https://developers.google.com/protocol-buffers/docs/encoding
+
+ SINT
+
+ ``.length``
+ maximum number of displayable decimal digits (including minus sign) of the type
+
+ .. note::
+ valid range is 0-255, but usually you'll see 1-20
+
+ =============== ==
+ SQL Type max digits per type
+ =============== ==
+ TINY SIGNED 4
+ SHORT SIGNED 6
+ INT24 SIGNED 8
+ INT SIGNED 11
+ LONGLONG SIGNED 20
+ =============== ==
+
+ .. seealso:: definition of ``M`` in https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html
+
+ ``value``
+ variable length encoded signed 64 integer
+
+ UINT
+
+ ``.flags & 1`` (zerofill)
+ the client has to left pad with 0's up to .length
+
+ ``.length``
+ maximum number of displayable decimal digits of the type
+
+ .. note::
+ valid range is 0-255, but usually you'll see 1-20
+
+ ================= ==
+ SQL Type max digits per type
+ ================= ==
+ TINY UNSIGNED 3
+ SHORT UNSIGNED 5
+ INT24 UNSIGNED 8
+ INT UNSIGNED 10
+ LONGLONG UNSIGNED 20
+ ================= ==
+
+ .. seealso:: definition of ``M`` in https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html
+
+ ``value``
+ variable length encoded unsigned 64 integer
+
+ BIT
+
+ ``.length``
+ maximum number of displayable binary digits
+
+ .. note:: valid range for M of the ``BIT`` type is 1 - 64
+ .. seealso:: https://dev.mysql.com/doc/refman/8.0/en/numeric-type-overview.html
+
+ ``value``
+ variable length encoded unsigned 64 integer
+
+ DOUBLE
+
+ ``.length``
+ maximum number of displayable decimal digits (including the decimal point and ``.fractional_digits``)
+
+ ``.fractional_digits``
+ maximum number of displayable decimal digits following the decimal point
+
+ ``value``
+ encoded as Protobuf's 'double'
+
+ FLOAT
+
+ ``.length``
+ maximum number of displayable decimal digits (including the decimal point and ``.fractional_digits``)
+
+ ``.fractional_digits``
+ maximum number of displayable decimal digits following the decimal point
+
+ ``value``
+ encoded as Protobuf's 'float'
+
+ BYTES, ENUM
+ BYTES is used for all opaque byte strings that may have a charset
+
+ * TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
+ * TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
+ * VARCHAR, VARBINARY
+ * CHAR, BINARY
+ * ENUM
+
+ ``.length``
+ the maximum length of characters of the underlying type
+
+ ``.flags & 1`` (rightpad)
+ if the length of the field is less than ``.length``, the receiver is
+ supposed to add padding characters to the right end of the string.
+ If the ``.charset`` is "binary", the padding character is ``0x00``,
+ otherwise it is a space character as defined by that character set.
+
+ ============= ======= ======== =======
+ SQL Type .length .charset .flags
+ ============= ======= ======== =======
+ TINYBLOB 256 binary
+ BLOB 65535 binary
+ VARCHAR(32) 32 utf8
+ VARBINARY(32) 32 utf8_bin
+ BINARY(32) 32 binary rightpad
+ CHAR(32) 32 utf8 rightpad
+ ============= ======= ======== =======
+
+ ``value``
+ sequence of bytes with added one extra '\0' byte at the end. To obtain the
+ original string, the extra '\0' should be removed.
+ .. note:: the length of the string can be acquired with protobuf's field length() method
+ length of sequence-of-bytes = length-of-field - 1
+ .. note:: the extra byte allows to distinguish between a NULL and empty byte sequence
+
+ TIME
+ A time value.
+
+ ``value``
+ the following bytes sequence:
+
+ ``| negate [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]``
+
+ * negate - one byte, should be one of: 0x00 for "+", 0x01 for "-"
+ * hour - optional variable length encoded unsigned64 value for the hour
+ * minutes - optional variable length encoded unsigned64 value for the minutes
+ * seconds - optional variable length encoded unsigned64 value for the seconds
+ * useconds - optional variable length encoded unsigned64 value for the microseconds
+
+ .. seealso:: protobuf encoding in https://developers.google.com/protocol-buffers/docs/encoding
+ .. note:: hour, minutes, seconds, useconds are optional if all the values to the right are 0
+
+ Example: 0x00 -> +00:00:00.000000
+
+ DATETIME
+ A date or date and time value.
+
+ ``value``
+ a sequence of variants, arranged as follows:
+
+ ``| year | month | day | [ | hour | [ | minutes | [ | seconds | [ | useconds | ]]]]``
+
+ * year - variable length encoded unsigned64 value for the year
+ * month - variable length encoded unsigned64 value for the month
+ * day - variable length encoded unsigned64 value for the day
+ * hour - optional variable length encoded unsigned64 value for the hour
+ * minutes - optional variable length encoded unsigned64 value for the minutes
+ * seconds - optional variable length encoded unsigned64 value for the seconds
+ * useconds - optional variable length encoded unsigned64 value for the microseconds
+
+ .. note:: hour, minutes, seconds, useconds are optional if all the values to the right are 0
+
+ ``.flags & 1`` (timestamp)
+
+ ============= =======
+ SQL Type .flags
+ ============= =======
+ DATETIME
+ TIMESTAMP 1
+
+ DECIMAL
+ An arbitrary length number. The number is encoded as a single byte
+ indicating the position of the decimal point followed by the Packed BCD
+ encoded number. Packed BCD is used to simplify conversion to and
+ from strings and other native arbitrary precision math datatypes.
+ .. seealso:: packed BCD in https://en.wikipedia.org/wiki/Binary-coded_decimal
+
+ ``.length``
+ maximum number of displayable decimal digits (*excluding* the decimal point and sign, but including ``.fractional_digits``)
+
+ .. note:: should be in the range of 1 - 65
+
+ ``.fractional_digits``
+ is the decimal digits to display out of length
+
+ .. note:: should be in the range of 0 - 30
+
+ ``value``
+ the following bytes sequence:
+
+ ``| scale | BCD | sign | [0x0] |``
+
+ * scale - 8bit scale value (number of decimal digit after the '.')
+ * BCD - BCD encoded digits (4 bits for each digit)
+ * sign - sign encoded on 4 bits (0xc = "+", 0xd = "-")
+ * 0x0 - last 4bits if length(digits) % 2 == 0
+
+ Example: x04 0x12 0x34 0x01 0xd0 -> -12.3401
+
+ SET
+ A list of strings representing a SET of values.
+
+ ``value``
+ A sequence of 0 or more of protobuf's bytes (length prepended octets) or one of
+ the special sequences with a predefined meaning listed below.
+
+ Example (length of the bytes array shown in brackets):
+ * ``[0]`` - the NULL value
+ * ``[1] 0x00`` - a set containing a blank string ''
+ * ``[1] 0x01`` - this would be an invalid value, but is to be treated as the empty set
+ * ``[2] 0x01 0x00`` - a set with a single item, which is the '\0' character
+ * ``[8] 0x03 F O O 0x03 B A R`` - a set with 2 items: FOO,BAR
+
+ :param name: name of the column
+ :param original_name: name of the column before an alias was applied
+ :param table: name of the table the column orginates from
+ :param original_table: name of the table the column orginates from before an alias was applied
+ :param schema: schema the column originates from
+ :param catalog:
+ catalog the schema originates from
+
+ .. note::
+ as there is current no support for catalogs in MySQL, don't expect this field to be set.
+ In the MySQL C/S protocol the field had the value ``def`` all the time.
+
+ :param fractional_digits: displayed factional decimal digits for floating point and fixed point numbers
+ :param length: maximum count of displayable characters of .type
+ :param flags:
+ ``.type`` specific flags
+
+ ======= ====== ===========
+ type value description
+ ======= ====== ===========
+ UINT 0x0001 zerofill
+ DOUBLE 0x0001 unsigned
+ FLOAT 0x0001 unsigned
+ DECIMAL 0x0001 unsigned
+ BYTES 0x0001 rightpad
+ ======= ====== ===========
+
+ ====== ================
+ value description
+ ====== ================
+ 0x0010 NOT_NULL
+ 0x0020 PRIMARY_KEY
+ 0x0040 UNIQUE_KEY
+ 0x0080 MULTIPLE_KEY
+ 0x0100 AUTO_INCREMENT
+ ====== ================
+
+ default: 0
+ :param content_type:
+ a hint about the higher-level encoding of a BYTES field, for more informations
+ please refer to Mysqlx.Resultset.ContentType_BYTES enum.
+
+
+
+ Field number for the "type" field.
+
+
+
+ datatype of the field in a row
+
+
+
+ Field number for the "name" field.
+
+
+ Field number for the "original_name" field.
+
+
+ Field number for the "table" field.
+
+
+ Field number for the "original_table" field.
+
+
+ Field number for the "schema" field.
+
+
+ Field number for the "catalog" field.
+
+
+ Field number for the "collation" field.
+
+
+ Field number for the "fractional_digits" field.
+
+
+ Field number for the "length" field.
+
+
+ Field number for the "flags" field.
+
+
+ Field number for the "content_type" field.
+
+
+ Container for nested types declared in the ColumnMetaData message type.
+
+
+
+ Row in a Resultset
+
+ a row is represented as a list of fields encoded as byte blobs.
+ Blob of size 0 represents the NULL value. Otherwise, if it contains at least
+ one byte, it encodes a non-null value of the field using encoding appropriate for the
+ type of the value given by ``ColumnMetadata``, as specified
+ in the :protobuf:msg:`Mysqlx.Resultset::ColumnMetaData` description.
+
+
+
+ Field number for the "field" field.
+
+
+ Holder for reflection information generated from mysqlx_session.proto
+
+
+ File descriptor for mysqlx_session.proto
+
+
+
+ the initial message send from the client to the server to start the
+ authentication proccess
+
+ :param mech_name: authentication mechanism name
+ :param auth_data: authentication data
+ :param initial_response: initial response
+ :Returns: :protobuf:msg:`Mysqlx.Session::AuthenticateContinue`
+
+
+
+ Field number for the "mech_name" field.
+
+
+
+ required
+
+
+
+ Field number for the "auth_data" field.
+
+
+ Field number for the "initial_response" field.
+
+
+
+ send by client or server after a :protobuf:msg:`Mysqlx.Session::AuthenticateStart` to
+ exchange more auth data
+
+ :param auth_data: authentication data
+ :Returns: :protobuf:msg:`Mysqlx.Session::AuthenticateContinue`
+
+
+
+ Field number for the "auth_data" field.
+
+
+
+ required
+
+
+
+
+ sent by the server after successful authentication
+
+ :param auth_data: authentication data
+
+
+
+ Field number for the "auth_data" field.
+
+
+
+ reset the current session
+ param keep_open: if is true the session will be reset, but stays authenticated.
+ otherwise, the session will be closed and needs to be authenticated again.
+
+ :Returns: :protobuf:msg:`Mysqlx::Ok`
+
+
+
+ Field number for the "keep_open" field.
+
+
+
+ close the current session
+
+ :Returns: :protobuf:msg:`Mysqlx::Ok`
+
+
+
+ Holder for reflection information generated from mysqlx_sql.proto
+
+
+ File descriptor for mysqlx_sql.proto
+
+
+
+ execute a statement in the given namespace
+
+ .. uml::
+
+ client -> server: StmtExecute
+ ... zero or more Resultsets ...
+ server --> client: StmtExecuteOk
+
+ Notices:
+ This message may generate a notice containing WARNINGs generated by its execution.
+ This message may generate a notice containing INFO messages generated by its execution.
+
+ :param namespace: namespace of the statement to be executed
+ :param stmt: statement that shall be executed.
+ :param args: values for wildcard replacements
+ :param compact_metadata: send only type information for :protobuf:msg:`Mysqlx.Resultset::ColumnMetadata`, skipping names and others
+ :returns:
+ * zero or one :protobuf:msg:`Mysqlx.Resultset::` followed by :protobuf:msg:`Mysqlx.Sql::StmtExecuteOk`
+
+
+
+ Field number for the "namespace" field.
+
+
+
+ optional [ default = "sql" ]
+
+
+
+ Field number for the "stmt" field.
+
+
+
+ required
+
+
+
+ Field number for the "args" field.
+
+
+ Field number for the "compact_metadata" field.
+
+
+
+ optional [ default = false ]
+
+
+
+
+ statement executed successful
+
+
+
+
diff --git a/app/bin/Release/MySqlBackup.dll b/app/bin/Release/MySqlBackup.dll
new file mode 100644
index 0000000..4a631a1
Binary files /dev/null and b/app/bin/Release/MySqlBackup.dll differ
diff --git a/app/bin/Release/Renci.SshNet.dll b/app/bin/Release/Renci.SshNet.dll
new file mode 100644
index 0000000..af89605
Binary files /dev/null and b/app/bin/Release/Renci.SshNet.dll differ
diff --git a/app/bin/Release/Renci.SshNet.xml b/app/bin/Release/Renci.SshNet.xml
new file mode 100644
index 0000000..5c502b6
--- /dev/null
+++ b/app/bin/Release/Renci.SshNet.xml
@@ -0,0 +1,23057 @@
+
+
+
+ Renci.SshNet
+
+
+
+
+ Generates a array of the specified length, and fills it with a
+ cryptographically strong random sequence of values.
+
+ The length of the array generate.
+
+
+
+ Fills an array of bytes with a cryptographically strong random sequence of values.
+
+ The array to fill with cryptographically strong random bytes.
+ is null.
+
+ The length of the byte array determines how many random bytes are produced.
+
+
+
+
+ Returns the Internet Protocol (IP) addresses for the specified host.
+
+ The host name or IP address to resolve
+
+ An array of type that holds the IP addresses for the host that
+ is specified by the parameter.
+
+ is null.
+ An error is encountered when resolving .
+
+
+
+ Returns an enumerable collection of file information that matches a search pattern.
+
+
+ The search string to match against the names of files.
+
+ An enumerable collection of files that matches .
+
+ is null.
+ is null.
+ The path represented by does not exist or is not valid.
+
+
+
+ Returns a value indicating whether the specified can be used
+ to send data.
+
+ The to check.
+
+ true if can be written to; otherwise, false.
+
+
+
+
+ Reads a byte from the specified .
+
+ The to read from.
+ Specifies the amount of time after which the call will time out.
+
+ The byte read, or -1 if the socket was closed.
+
+ The read operation timed out.
+ The read failed.
+
+
+
+ Sends a byte using the specified .
+
+ The to write to.
+ The value to send.
+ The write failed.
+
+
+
+ Receives data from a bound .
+
+
+ The number of bytes to receive.
+ Specifies the amount of time after which the call will time out.
+
+ The bytes received.
+
+
+ If no data is available for reading, the method will
+ block until data is available or the time-out value is exceeded. If the time-out value is exceeded, the
+ call will throw a .
+ If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the
+ method will complete immediately and throw a .
+
+
+
+
+ Receives data from a bound into a receive buffer.
+
+
+ An array of type that is the storage location for the received data.
+ The position in parameter to store the received data.
+ The number of bytes to receive.
+ The maximum time to wait until bytes have been received.
+
+ The number of bytes received.
+
+
+
+ If no data is available for reading, the method will
+ block until data is available or the time-out value is exceeded. If the time-out value is exceeded, the
+ call will throw a .
+
+
+ If you are in non-blocking mode, and there is no data available in the in the protocol stack buffer, the
+ method will complete immediately and throw a .
+
+
+
+
+
+ Suspends the current thread for the specified number of milliseconds.
+
+ The number of milliseconds for which the thread is suspended.
+
+
+
+ Executes the specified action in a separate thread.
+
+ The action to execute.
+
+
+
+ Base class for all supported authentication methods
+
+
+
+
+ Gets the name of the authentication method.
+
+
+ The name of the authentication method.
+
+
+
+
+ Gets connection username.
+
+
+
+
+ Gets list of allowed authentications.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The username.
+ is whitespace or null.
+
+
+
+ Authenticates the specified session.
+
+ The session to authenticate.
+
+ The result of the authentication process.
+
+
+
+
+ Authenticates the specified session.
+
+ The session to authenticate.
+
+ The result of the authentication process.
+
+
+
+
+ Represents possible authentication methods results
+
+
+
+
+ Authentication was successful.
+
+
+
+
+ Authentication completed with partial success.
+
+
+
+
+ Authentication failed.
+
+
+
+
+ Serves as base class for client implementations, provides common client functionality.
+
+
+
+
+ Holds value indicating whether the connection info is owned by this client.
+
+
+
+
+ Gets the current session.
+
+
+ The current session.
+
+
+
+
+ Gets the factory for creating new services.
+
+
+ The factory for creating new services.
+
+
+
+
+ Gets the connection info.
+
+
+ The connection info.
+
+ The method was called after the client was disposed.
+
+
+
+ Gets a value indicating whether this client is connected to the server.
+
+
+ true if this client is connected; otherwise, false.
+
+ The method was called after the client was disposed.
+
+
+
+ Gets or sets the keep-alive interval.
+
+
+ The keep-alive interval. Specify negative one (-1) milliseconds to disable the
+ keep-alive. This is the default value.
+
+ The method was called after the client was disposed.
+
+
+
+ Occurs when an error occurred.
+
+
+
+
+
+
+
+ Occurs when host key received.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ Specified whether this instance owns the connection info.
+ is null.
+
+ If is true, then the
+ connection info will be disposed when this instance is disposed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ Specified whether this instance owns the connection info.
+ The factory to use for creating new services.
+ is null.
+ is null.
+
+ If is true, then the
+ connection info will be disposed when this instance is disposed.
+
+
+
+
+ Connects client to the server.
+
+ The client is already connected.
+ The method was called after the client was disposed.
+ Socket connection to the SSH server or proxy server could not be established, or an error occurred while resolving the hostname.
+ SSH session could not be established.
+ Authentication of SSH session failed.
+ Failed to establish proxy connection.
+
+
+
+ Disconnects client from the server.
+
+ The method was called after the client was disposed.
+
+
+
+ Sends a keep-alive message to the server.
+
+
+ Use to configure the client to send a keep-alive at regular
+ intervals.
+
+ The method was called after the client was disposed.
+
+
+
+ Called when client is connecting to the server.
+
+
+
+
+ Called when client is connected to the server.
+
+
+
+
+ Called when client is disconnecting from the server.
+
+
+
+
+ Called when client is disconnected from the server.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Check if the current instance is disposed.
+
+ THe current instance is disposed.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Stops the keep-alive timer, and waits until all timer callbacks have been
+ executed.
+
+
+
+
+ Starts the keep-alive timer.
+
+
+ When is negative one (-1) milliseconds, then
+ the timer will not be started.
+
+
+
+
+ Creates a with the specified due time and interval.
+
+ The amount of time to delay before the keep-alive message is first sent. Specify negative one (-1) milliseconds to prevent the timer from starting. Specify zero (0) to start the timer immediately.
+ The time interval between attempts to send a keep-alive message. Specify negative one (-1) milliseconds to disable periodic signaling.
+
+ A with the specified due time and interval.
+
+
+
+
+ Disposes the SSH session, and assigns null to .
+
+
+
+
+ Returns a value indicating whether the SSH session is established.
+
+
+ true if the SSH session is established; otherwise, false.
+
+
+
+
+ Represents base class for SSH channel implementations.
+
+
+
+
+ Holds a value indicating whether the SSH_MSG_CHANNEL_CLOSE has been sent to the remote party.
+
+
+ true when a SSH_MSG_CHANNEL_CLOSE message has been sent to the other party;
+ otherwise, false.
+
+
+
+
+ Holds a value indicating whether a SSH_MSG_CHANNEL_CLOSE has been received from the other
+ party.
+
+
+ true when a SSH_MSG_CHANNEL_CLOSE message has been received from the other party;
+ otherwise, false.
+
+
+
+
+ Holds a value indicating whether the SSH_MSG_CHANNEL_EOF has been received from the other party.
+
+
+ true when a SSH_MSG_CHANNEL_EOF message has been received from the other party;
+ otherwise, false.
+
+
+
+
+ Holds a value indicating whether the SSH_MSG_CHANNEL_EOF has been sent to the remote party.
+
+
+ true when a SSH_MSG_CHANNEL_EOF message has been sent to the remote party;
+ otherwise, false.
+
+
+
+
+ Occurs when an exception is thrown when processing channel messages.
+
+
+
+
+ Initializes a new instance.
+
+ The session.
+ The local channel number.
+ Size of the window.
+ Size of the packet.
+
+
+
+ Gets the session.
+
+
+ Thhe session.
+
+
+
+
+ Gets the type of the channel.
+
+
+ The type of the channel.
+
+
+
+
+ Gets the local channel number.
+
+
+ The local channel number.
+
+
+
+
+ Gets the maximum size of a data packet that we can receive using the channel.
+
+
+ The maximum size of a packet.
+
+
+
+ This is the maximum size (in bytes) we support for the data (payload) of a
+ SSH_MSG_CHANNEL_DATA message we receive.
+
+
+ We currently do not enforce this limit.
+
+
+
+
+
+ Gets the size of the local window.
+
+
+ The size of the local window.
+
+
+
+
+ Gets the remote channel number.
+
+
+ The remote channel number.
+
+
+
+
+ Gets the maximum size of a data packet that we can send using the channel.
+
+
+ The maximum size of data that can be sent using a
+ on the current channel.
+
+ The channel has not been opened, or the open has not yet been confirmed.
+
+
+
+ Gets the window size of the remote server.
+
+
+ The size of the server window.
+
+
+
+
+ Gets a value indicating whether this channel is open.
+
+
+ true if this channel is open; otherwise, false.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Gets a value indicating whether the session is connected.
+
+
+ true if the session is connected; otherwise, false.
+
+
+
+
+ Gets the connection info.
+
+ The connection info.
+
+
+
+ Gets the session semaphore to control number of session channels.
+
+ The session semaphore.
+
+
+
+ Sends a SSH_MSG_CHANNEL_DATA message with the specified payload.
+
+ The payload to send.
+
+
+
+ Sends a SSH_MSG_CHANNEL_DATA message with the specified payload.
+
+ An array of containing the payload to send.
+ The zero-based offset in at which to begin taking data from.
+ The number of bytes of to send.
+
+
+ When the size of the data to send exceeds the maximum packet size or the remote window
+ size does not allow the full data to be sent, then this method will send the data in
+ multiple chunks and will wait for the remote window size to be adjusted when it's zero.
+
+
+ This is done to support SSH servers will a small window size that do not agressively
+ increase their window size. We need to take into account that there may be SSH servers
+ that only increase their window size when it has reached zero.
+
+
+
+
+
+ Called when channel window need to be adjust.
+
+ The bytes to add.
+
+
+
+ Called when channel data is received.
+
+ The data.
+
+
+
+ Called when channel extended data is received.
+
+ The data.
+ The data type code.
+
+
+
+ Called when channel has no more data to receive.
+
+
+
+
+ Called when channel is closed by the server.
+
+
+
+
+ Called when channel request received.
+
+ Channel request information.
+
+
+
+ Called when channel request was successful
+
+
+
+
+ Called when channel request failed.
+
+
+
+
+ Raises event.
+
+ The exception.
+
+
+
+ Sends a message to the server.
+
+ The message to send.
+
+ true if the message was sent to the server; otherwise, false.
+
+ The size of the packet exceeds the maximum size defined by the protocol.
+
+ This methods returns false when the attempt to send the message results in a
+ or a .
+
+
+
+
+ Sends SSH message to the server.
+
+ The message.
+
+
+
+ Sends a SSH_MSG_CHANNEL_EOF message to the remote server.
+
+ The channel is closed.
+
+
+
+ Waits for the handle to be signaled or for an error to occurs.
+
+ The wait handle.
+
+
+
+ Closes the channel, waiting for the SSH_MSG_CHANNEL_CLOSE message to be received from the server.
+
+
+
+
+ Called when an occurs while processing a channel message.
+
+ The .
+
+ This method will in turn invoke , and
+ raise the event.
+
+
+
+
+ Determines the length of data that currently can be sent in a single message.
+
+ The length of the message that must be sent.
+
+ The actual data length that currently can be sent.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Implements "direct-tcpip" SSH channel.
+
+
+
+
+ Initializes a new instance.
+
+ The session.
+ The local channel number.
+ Size of the window.
+ Size of the packet.
+
+
+
+ Gets the type of the channel.
+
+
+ The type of the channel.
+
+
+
+
+ Occurs as the forwarded port is being stopped.
+
+
+
+
+ Binds channel to remote host.
+
+
+
+
+ Closes the socket, hereby interrupting the blocking receive in .
+
+
+
+
+ Shuts down the socket.
+
+ One of the values that specifies the operation that will no longer be allowed.
+
+
+
+ Closes the channel, waiting for the SSH_MSG_CHANNEL_CLOSE message to be received from the server.
+
+
+
+
+ Called when channel data is received.
+
+ The data.
+
+
+
+ Called when channel is opened by the server.
+
+ The remote channel number.
+ Initial size of the window.
+ Maximum size of the packet.
+
+
+
+ Called when channel has no more data to receive.
+
+
+
+
+ Called whenever an unhandled occurs in causing
+ the message loop to be interrupted, or when an exception occurred processing a channel message.
+
+
+
+
+ Called when the server wants to terminate the connection immmediately.
+
+
+ The sender MUST NOT send or receive any data after this message, and
+ the recipient MUST NOT accept any data after receiving this message.
+
+
+
+
+ Implements "forwarded-tcpip" SSH channel.
+
+
+
+
+ Initializes a new instance.
+
+ The session.
+ The local channel number.
+ Size of the window.
+ Size of the packet.
+ The remote channel number.
+ The window size of the remote party.
+ The maximum size of a data packet that we can send to the remote party.
+
+
+
+ Gets the type of the channel.
+
+
+ The type of the channel.
+
+
+
+
+ Binds the channel to the specified endpoint.
+
+ The endpoint to connect to.
+ The forwarded port for which the channel is opened.
+
+
+
+ Occurs as the forwarded port is being stopped.
+
+
+
+
+ Shuts down the socket.
+
+ One of the values that specifies the operation that will no longer be allowed.
+
+
+
+ Closes the socket, hereby interrupting the blocking receive in .
+
+
+
+
+ Closes the channel waiting for the SSH_MSG_CHANNEL_CLOSE message to be received from the server.
+
+
+
+
+ Called when channel data is received.
+
+ The data.
+
+
+
+ Implements Session SSH channel.
+
+
+
+
+ Counts failed channel open attempts
+
+
+
+
+ Holds a value indicating whether the session semaphore has been obtained by the current
+ channel.
+
+
+ 0 when the session semaphore has not been obtained or has already been released,
+ and 1 when the session has been obtained and still needs to be released.
+
+
+
+
+ Wait handle to signal when response was received to open the channel
+
+
+
+
+ Initializes a new instance.
+
+ The session.
+ The local channel number.
+ Size of the window.
+ Size of the packet.
+
+
+
+ Gets the type of the channel.
+
+
+ The type of the channel.
+
+
+
+
+ Opens the channel.
+
+
+
+
+ Called when channel is opened by the server.
+
+ The remote channel number.
+ Initial size of the window.
+ Maximum size of the packet.
+
+
+
+ Called when channel failed to open.
+
+ The reason code.
+ The description.
+ The language.
+
+
+
+ Sends the pseudo terminal request.
+
+ The environment variable.
+ The columns.
+ The rows.
+ The width.
+ The height.
+ The terminal mode values.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the X11 forwarding request.
+
+ if set to true the it is single connection.
+ The protocol.
+ The cookie.
+ The screen number.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the environment variable request.
+
+ Name of the variable.
+ The variable value.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the shell request.
+
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the exec request.
+
+ The command.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the exec request.
+
+ Length of the break.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the subsystem request.
+
+ The subsystem.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the window change request.
+
+ The columns.
+ The rows.
+ The width.
+ The height.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the local flow request.
+
+ if set to true [client can do].
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the signal request.
+
+ Name of the signal.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the exit status request.
+
+ The exit status.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the exit signal request.
+
+ Name of the signal.
+ if set to true [core dumped].
+ The error message.
+ The language.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends eow@openssh.com request.
+
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends keepalive@openssh.com request.
+
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Called when channel request was successful
+
+
+
+
+ Called when channel request failed.
+
+
+
+
+ Sends the channel open message.
+
+ The client is not connected.
+ The operation timed out.
+ The size of the packet exceeds the maximum size defined by the protocol.
+
+
+ When a session semaphore for this instance has not yet been obtained by this or any other thread,
+ the thread will block until such a semaphore is available and send a
+ to the remote host.
+
+
+ Note that the session semaphore is released in any of the following cases:
+
+ -
+ A is received for the channel being opened.
+
+ -
+ The remote host does not respond to the within the configured .
+
+ -
+ The remote host closes the channel.
+
+ -
+ The is disposed.
+
+ -
+ A socket error occurs sending a message to the remote host.
+
+
+
+
+ If the session semaphore was already obtained for this instance (and not released), then this method
+ immediately returns control to the caller. This should only happen when another thread has obtain the
+ session semaphore and already sent the , but the remote host did not
+ confirmed or rejected attempt to open the channel.
+
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases the session semaphore.
+
+
+ When the session semaphore has already been released, or was never obtained by
+ this instance, then this method does nothing.
+
+
+
+
+ Lists channel types as defined by the protocol.
+
+
+
+
+ session
+
+
+
+
+ x11
+
+
+
+
+ forwarded-tcpip
+
+
+
+
+ direct-tcpip
+
+
+
+
+ Initializes a new instance.
+
+ The session.
+ The local channel number.
+ Size of the window.
+ Size of the packet.
+
+
+
+ Occurs when is received.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Called when channel is opened by the server.
+
+ The remote channel number.
+ Initial size of the window.
+ Maximum size of the packet.
+
+
+
+ Send message to open a channel.
+
+ Message to send
+ The client is not connected.
+ The operation timed out.
+ The size of the packet exceeds the maximum size defined by the protocol.
+
+
+
+ Called when channel failed to open.
+
+ The reason code.
+ The description.
+ The language.
+
+
+
+ Unsubscribes the current from session events.
+
+ The session.
+
+ Does nothing when is null.
+
+
+
+
+ Represents SSH channel.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Occurs when an exception is thrown when processing channel messages.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Occurs when is received.
+
+
+
+
+ Gets the local channel number.
+
+
+ The local channel number.
+
+
+
+
+ Gets the maximum size of a data packet that we can receive using the channel.
+
+
+ The maximum size of a packet.
+
+
+
+ This is the maximum size (in bytes) we support for the data (payload) of a
+ SSH_MSG_CHANNEL_DATA message we receive.
+
+
+ We currently do not enforce this limit.
+
+
+
+
+
+ Gets the maximum size of a data packet that can be sent using the channel.
+
+
+ The maximum size of data that can be sent using a
+ on the current channel.
+
+ The channel has not been opened, or the open has not yet been confirmed.
+
+
+
+ Gets a value indicating whether this channel is open.
+
+
+ true if this channel is open; otherwise, false.
+
+
+
+
+ Sends a SSH_MSG_CHANNEL_DATA message with the specified payload.
+
+ The payload to send.
+
+
+
+ Sends a SSH_MSG_CHANNEL_DATA message with the specified payload.
+
+ An array of containing the payload to send.
+ The zero-based offset in at which to begin taking data from.
+ The number of bytes of to send.
+
+
+ When the size of the data to send exceeds the maximum packet size or the remote window
+ size does not allow the full data to be sent, then this method will send the data in
+ multiple chunks and will wait for the remote window size to be adjusted when it's zero.
+
+
+ This is done to support SSH servers will a small window size that do not agressively
+ increase their window size. We need to take into account that there may be SSH servers
+ that only increase their window size when it has reached zero.
+
+
+
+
+
+ Sends a SSH_MSG_CHANNEL_EOF message to the remote server.
+
+ The channel is closed.
+
+
+
+ A "direct-tcpip" SSH channel.
+
+
+
+
+ Occurs when an exception is thrown while processing channel messages.
+
+
+
+
+ Gets a value indicating whether this channel is open.
+
+
+ true if this channel is open; otherwise, false.
+
+
+
+
+ Gets the local channel number.
+
+
+ The local channel number.
+
+
+
+
+ Opens a channel for a locally forwarded TCP/IP port.
+
+ The name of the remote host to forward to.
+ The port of the remote hosts to forward to.
+ The forwarded port for which the channel is opened.
+ The socket to receive requests from, and send responses from the remote host to.
+
+
+
+ Binds the channel to the remote host.
+
+
+
+
+ A "forwarded-tcpip" SSH channel.
+
+
+
+
+ Occurs when an exception is thrown while processing channel messages.
+
+
+
+
+ Binds the channel to the specified endpoint.
+
+ The endpoint to connect to.
+ The forwarded port for which the channel is opened.
+
+
+
+ Session SSH channel.
+
+
+
+
+ Opens the channel.
+
+
+
+
+ Sends the pseudo terminal request.
+
+ The environment variable.
+ The columns.
+ The rows.
+ The width.
+ The height.
+ The terminal mode values.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the X11 forwarding request.
+
+ if set to true the it is single connection.
+ The protocol.
+ The cookie.
+ The screen number.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the environment variable request.
+
+ Name of the variable.
+ The variable value.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the shell request.
+
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the exec request.
+
+ The command.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the exec request.
+
+ Length of the break.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the subsystem request.
+
+ The subsystem.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the window change request.
+
+ The columns.
+ The rows.
+ The width.
+ The height.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the local flow request.
+
+ if set to true [client can do].
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the signal request.
+
+ Name of the signal.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the exit status request.
+
+ The exit status.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends the exit signal request.
+
+ Name of the signal.
+ if set to true [core dumped].
+ The error message.
+ The language.
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends eow@openssh.com request.
+
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Sends keepalive@openssh.com request.
+
+
+ true if request was successful; otherwise false.
+
+
+
+
+ Initializes a new instance.
+
+ The session.
+ The local channel number.
+ Size of the window.
+ Size of the packet.
+ The remote channel number.
+ The window size of the remote party.
+ The maximum size of a data packet that we can send to the remote party.
+
+
+
+ Holds information about key size and cipher to use
+
+
+
+
+ Gets the size of the key.
+
+
+ The size of the key.
+
+
+
+
+ Gets the cipher.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Size of the key.
+ The cipher.
+
+
+
+ Initializes a new instance.
+
+ The number of times an authentication attempt with any given can result in before it is disregarded.
+ is less than one.
+
+
+
+ Gets the number of times an authentication attempt with any given can
+ result in before it is disregarded.
+
+
+ The number of times an authentication attempt with any given can result
+ in before it is disregarded.
+
+
+
+
+ Attempts to authentication for a given using the
+ of the specified .
+
+ A to use for authenticating.
+ The for which to perform authentication.
+
+
+
+ Records if a given has been tried, and how many times this resulted
+ in .
+
+
+ When there's no entry for a given , then it was never tried.
+
+
+
+
+ Holds the list of authentications methods that failed.
+
+
+
+
+ Records a authentication attempt for the specified
+ .
+
+ An for which to record the result of an authentication attempt.
+
+
+
+ Records a authentication attempt for the specified
+ .
+
+ An for which to record the result of an authentication attempt.
+
+
+
+ Returns the number of times an authentication attempt with the specified
+ has resulted in .
+
+ An .
+
+ The number of times an authentication attempt with the specified
+ has resulted in .
+
+
+
+
+ Returns a list of supported authentication methods that match one of the specified allowed authentication
+ methods.
+
+ A list of allowed authentication methods.
+
+ A list of supported authentication methods that match one of the specified allowed authentication methods.
+
+
+ The authentication methods are returned in the order in which they were specified in the list that was
+ used to initialize the current instance.
+
+
+
+
+ Returns the authentication methods from the specified list that have not yet failed.
+
+ A list of authentication methods.
+
+ The authentication methods from that have not yet failed.
+
+
+
+ This method first returns the authentication methods that have not yet been executed, and only then
+ returns those for which an authentication attempt resulted in a .
+
+
+ Any that has failed is skipped.
+
+
+
+
+
+ Provides additional information for asynchronous command execution
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets or sets the bytes received. If SFTP only file bytes are counted.
+
+ Total bytes received.
+
+
+
+ Gets or sets the bytes sent by SFTP.
+
+ Total bytes sent.
+
+
+
+ Gets a user-defined object that qualifies or contains information about an asynchronous operation.
+
+ A user-defined object that qualifies or contains information about an asynchronous operation.
+
+
+
+ Gets a that is used to wait for an asynchronous operation to complete.
+
+ A that is used to wait for an asynchronous operation to complete.
+
+
+
+ Gets a value that indicates whether the asynchronous operation completed synchronously.
+
+ true if the asynchronous operation completed synchronously; otherwise, false.
+
+
+
+ Gets a value that indicates whether the asynchronous operation has completed.
+
+ true if the operation is complete; otherwise, false.
+
+
+
+ Gets a value indicating whether was already called for this
+ .
+
+
+ true if was already called for this ;
+ otherwise, false.
+
+
+
+
+ Base class to encapsulates the results of an asynchronous operation.
+
+
+
+
+ Gets or sets a value indicating whether has been called on the current
+ .
+
+
+ true if has been called on the current ;
+ otherwise, false.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async callback.
+ The state.
+
+
+
+ Marks asynchronous operation as completed.
+
+ The exception.
+ if set to true [completed synchronously].
+
+
+
+ Waits until the asynchronous operation completes, and then returns.
+
+
+
+
+ Gets a user-defined object that qualifies or contains information about an asynchronous operation.
+
+ A user-defined object that qualifies or contains information about an asynchronous operation.
+
+
+
+ Gets a value that indicates whether the asynchronous operation completed synchronously.
+
+ true if the asynchronous operation completed synchronously; otherwise, false.
+
+
+
+ Gets a that is used to wait for an asynchronous operation to complete.
+
+ A that is used to wait for an asynchronous operation to complete.
+
+
+
+ Gets a value that indicates whether the asynchronous operation has completed.
+
+
+ true if the operation is complete; otherwise, false.
+
+
+
+ Base class to encapsulates the results of an asynchronous operation that returns result.
+
+ The type of the result.
+
+
+
+ Initializes a new instance of the class.
+
+ The async callback.
+ The state.
+
+
+
+ Marks asynchronous operation as completed.
+
+ The result.
+ if set to true [completed synchronously].
+
+
+
+ Waits until the asynchronous operation completes, and then returns the value generated by the asynchronous operation.
+
+
+ The invocation result.
+
+
+
+
+ Provides data for event.
+
+
+
+
+ Gets banner message.
+
+
+
+
+ Gets banner language.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The username.
+ Banner message.
+ Banner language.
+
+
+
+ Base class for authentication events.
+
+
+
+
+ Gets the username.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The username.
+
+
+
+ Provides data for event.
+
+
+
+
+ Gets or sets the new password.
+
+
+ The new password.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The username.
+
+
+
+ Provides prompt information when is raised
+
+
+
+
+ Gets the prompt sequence id.
+
+
+
+
+ Gets or sets a value indicating whether the user input should be echoed as characters are typed.
+
+
+ true if the user input should be echoed as characters are typed; otherwise, false.
+
+
+
+
+ Gets server information request.
+
+
+
+
+ Gets or sets server information response.
+
+
+ The response.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The sequence id.
+ if set to true the user input should be echoed.
+ The request.
+
+
+
+ Provides data for event.
+
+
+
+
+ Gets prompt language.
+
+
+
+
+ Gets prompt instruction.
+
+
+
+
+ Gets server information request prompts.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The username.
+ The instruction.
+ The language.
+ The information request prompts.
+
+
+
+ Represents an arbitrarily large signed integer.
+
+
+
+
+ Gets number of bits used by the number.
+
+
+ The number of the bit used.
+
+
+
+
+ Mods the inverse.
+
+ The bi.
+ The modulus.
+
+ Modulus inverted number.
+
+
+
+
+ Returns positive remainder that results from division with two specified values.
+
+ The value to be divided.
+ The value to divide by.
+
+ Positive remainder that results from the division.
+
+
+
+
+ Generates a new, random of the specified length.
+
+ The number of bits for the new number.
+ A random number of the specified length.
+
+
+
+ Initializes a new instance of the structure using a 32-bit signed integer value.
+
+ A 32-bit signed integer.
+
+
+
+ Initializes a new instance of the structure using an unsigned 32-bit integer value.
+
+ An unsigned 32-bit integer value.
+
+
+
+ Initializes a new instance of the structure using a 64-bit signed integer value.
+
+ A 64-bit signed integer.
+
+
+
+ Initializes a new instance of the structure with an unsigned 64-bit integer value.
+
+ An unsigned 64-bit integer.
+
+
+
+ Initializes a new instance of the structure using a double-precision floating-point value.
+
+ A double-precision floating-point value.
+
+
+
+ Initializes a new instance of the structure using a single-precision floating-point value.
+
+ A single-precision floating-point value.
+
+
+
+ Initializes a new instance of the structure using a value.
+
+ A decimal number.
+
+
+
+ Initializes a new instance of the structure using the values in a byte array.
+
+ An array of values in little-endian order.
+ is null.
+
+
+
+ Indicates whether the value of the current object is an even number.
+
+
+ true if the value of the BigInteger object is an even number; otherwise, false.
+
+
+
+
+ Indicates whether the value of the current object is .
+
+
+ true if the value of the object is ;
+ otherwise, false.
+
+
+
+
+ Indicates whether the value of the current object is a power of two.
+
+
+ true if the value of the object is a power of two;
+ otherwise, false.
+
+
+
+
+ Indicates whether the value of the current object is .
+
+
+ true if the value of the object is ;
+ otherwise, false.
+
+
+
+
+ Gets a number that indicates the sign (negative, positive, or zero) of the current object.
+
+
+ A number that indicates the sign of the object.
+
+
+
+
+ Gets a value that represents the number negative one (-1).
+
+
+ An integer whose value is negative one (-1).
+
+
+
+
+ Gets a value that represents the number one (1).
+
+
+ An object whose value is one (1).
+
+
+
+
+ Gets a value that represents the number 0 (zero).
+
+
+ An integer whose value is 0 (zero).
+
+
+
+
+ Defines an explicit conversion of a object to a 32-bit signed integer value.
+
+ The value to convert to a 32-bit signed integer.
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to an unsigned 32-bit integer value.
+
+ The value to convert to an unsigned 32-bit integer.
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to a 16-bit signed integer value.
+
+ The value to convert to a 16-bit signed integer.
+
+ An object that contains the value of the parameter.
+
+
+
+
+
+
+
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to an unsigned byte value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to a signed 8-bit value.
+
+ The value to convert to a signed 8-bit value.
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to a 64-bit signed integer value.
+
+ The value to convert to a 64-bit signed integer.
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to an unsigned 64-bit integer value.
+
+ The value to convert to an unsigned 64-bit integer.
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to a single-precision floating-point value.
+
+ The value to convert to a single-precision floating-point value.
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an implicit conversion of a signed 32-bit integer to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an implicit conversion of a 32-bit unsigned integer to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an implicit conversion of a signed 16-bit integer to a BigInteger value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an implicit conversion of a 16-bit unsigned integer to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an implicit conversion of an unsigned byte to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an implicit conversion of a signed 64-bit integer to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an implicit conversion of a 64-bit unsigned integer to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a value to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Defines an explicit conversion of a object to a value.
+
+ The value to convert to a .
+
+ An object that contains the value of the parameter.
+
+
+
+
+ Adds the values of two specified objects.
+
+ The first value to add.
+ The second value to add.
+
+ The sum of and .
+
+
+
+
+ Subtracts a value from another value.
+
+ The value to subtract from (the minuend).
+ The value to subtract (the subtrahend).
+
+ The result of subtracting from .
+
+
+
+
+ Multiplies two specified values.
+
+ The first value to multiply.
+ The second value to multiply.
+
+ The product of left and right.
+
+
+
+
+ Divides a specified value by another specified value by using
+ integer division.
+
+ The value to be divided.
+ The value to divide by.
+
+ The integral result of the division.
+
+
+
+
+ Returns the remainder that results from division with two specified values.
+
+ The value to be divided.
+ The value to divide by.
+
+ The remainder that results from the division.
+
+
+
+
+ Negates a specified value.
+
+ The value to negate.
+
+ The result of the parameter multiplied by negative one (-1).
+
+
+
+
+ Returns the value of the operand.
+
+ An integer value.
+
+ The value of the operand.
+
+
+ The sign of the operand is unchanged.
+
+
+
+
+ Increments a value by 1.
+
+ The value to increment.
+
+ The value of the parameter incremented by 1.
+
+
+
+
+ Decrements a value by 1.
+
+ The value to decrement.
+
+ The value of the parameter decremented by 1.
+
+
+
+
+ Performs a bitwise And operation on two values.
+
+ The first value.
+ The second value.
+
+ The result of the bitwise And operation.
+
+
+
+
+ Performs a bitwise Or operation on two values.
+
+ The first value.
+ The second value.
+
+ The result of the bitwise Or operation.
+
+
+
+
+ Performs a bitwise exclusive Or (XOr) operation on two values.
+
+ The first value.
+ The second value.
+
+ The result of the bitwise Or operation.
+
+
+
+
+ Returns the bitwise one's complement of a value.
+
+ An integer value.
+
+ The bitwise one's complement of .
+
+
+
+
+ Shifts a value a specified number of bits to the left.
+
+ The value whose bits are to be shifted.
+ The number of bits to shift value to the left.
+
+ A value that has been shifted to the left by the specified number of bits.
+
+
+
+
+ Shifts a value a specified number of bits to the right.
+
+ The value whose bits are to be shifted.
+ The number of bits to shift value to the right.
+
+ A value that has been shifted to the right by the specified number of bits.
+
+
+
+
+ Returns a value that indicates whether a value is less than another
+ value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is less than ; otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value is less than a 64-bit signed integer.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if left is than ; otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit signed integer is less than a value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is less than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit signed integer is less than a value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is less than ; otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit unsigned integer is less than a value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is less than ; otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value is less than or equal
+ to another value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is less than or equal to ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value is less than or equal
+ to a 64-bit signed integer.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is less than or equal to ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit signed integer is less than or equal to a value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is less than or equal to ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value is less than or equal to
+ a 64-bit unsigned integer.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is less than or equal to ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit unsigned integer is less than or equal to a
+ value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is less than or equal to ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value is greater than another
+ value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is greater than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a is greater than a 64-bit signed integer value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is greater than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit signed integer is greater than a value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is greater than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value is greater than a 64-bit unsigned integer.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is greater than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit unsigned integer is greater than a value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is greater than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value is greater than or equal
+ to another value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is greater than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value is greater than or equal
+ to a 64-bit signed integer value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is greater than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit signed integer is greater than or equal to a
+ value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is greater than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value is greater than or equal to a
+ 64-bit unsigned integer value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is greater than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit unsigned integer is greater than or equal to a
+ value.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if is greater than ;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether the values of two objects are equal.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if the and parameters have the same value;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value and a signed long integer value are equal.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if the and parameters have the same value;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a signed long integer value and a value are equal.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if the and parameters have the same value;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value and an unsigned long integer value are equal.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if the and parameters have the same value;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether an unsigned long integer value and a value are equal.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if the and parameters have the same value;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether two objects have different values.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if and are not equal;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value and a 64-bit signed integer are not equal.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if and are not equal;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit signed integer and a value are not equal.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if and are not equal;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a value and a 64-bit unsigned integer are not equal.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if and are not equal;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether a 64-bit unsigned integer and a value are not equal.
+
+ The first value to compare.
+ The second value to compare.
+
+ true if and are not equal;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether the current instance and a specified object have the same value.
+
+ The object to compare.
+
+ true if the parameter is a object or a type capable
+ of implicit conversion to a value, and its value is equal to the value of the
+ current object; otherwise, false.
+
+
+
+
+ Returns a value that indicates whether the current instance and a specified object
+ have the same value.
+
+ The object to compare.
+
+ true if this object and have the same value;
+ otherwise, false.
+
+
+
+
+ Returns a value that indicates whether the current instance and a signed 64-bit integer have the same value.
+
+ The signed 64-bit integer value to compare.
+
+ true if the signed 64-bit integer and the current instance have the same value; otherwise, false.
+
+
+
+
+ Converts the numeric value of the current object to its equivalent string representation.
+
+
+ The string representation of the current value.
+
+
+
+
+ Converts the numeric value of the current object to its equivalent string representation
+ by using the specified format.
+
+ A standard or custom numeric format string.
+
+ The string representation of the current value in the format specified by the
+ parameter.
+
+ is not a valid format string.
+
+
+
+ Converts the numeric value of the current object to its equivalent string representation
+ by using the specified culture-specific formatting information.
+
+ An object that supplies culture-specific formatting information.
+
+ The string representation of the current value in the format specified by the
+ parameter.
+
+
+
+
+ Converts the numeric value of the current object to its equivalent string representation
+ by using the specified format and culture-specific format information.
+
+ A standard or custom numeric format string.
+ An object that supplies culture-specific formatting information.
+
+ The string representation of the current value as specified by the
+ and parameters.
+
+
+
+
+ Converts the string representation of a number to its equivalent.
+
+ A string that contains the number to convert.
+
+ A value that is equivalent to the number specified in the parameter.
+
+ is null.
+ is not in the correct format.
+
+
+
+ Converts the string representation of a number in a specified style to its equivalent.
+
+ A string that contains a number to convert.
+ A bitwise combination of the enumeration values that specify the permitted format of .
+
+ A value that is equivalent to the number specified in the parameter.
+
+
+ is not a value.
+ -or-
+ includes the or flag along with another value.
+
+ is null.
+ does not comply with the input pattern specified by .
+
+
+
+ Converts the string representation of a number in a specified style to its equivalent.
+
+ A string that contains a number to convert.
+ An object that provides culture-specific formatting information about .
+
+ A value that is equivalent to the number specified in the parameter.
+
+ is null.
+ is not in the correct format.
+
+
+
+ Converts the string representation of a number in a specified style and culture-specific format to its equivalent.
+
+ A string that contains a number to convert.
+ A bitwise combination of the enumeration values that specify the permitted format of .
+ An object that provides culture-specific formatting information about .
+
+ A value that is equivalent to the number specified in the parameter.
+
+
+ is not a value.
+ -or-
+ includes the or flag along with another value.
+
+ is null.
+ does not comply with the input pattern specified by .
+
+
+
+ Tries to convert the string representation of a number to its equivalent, and
+ returns a value that indicates whether the conversion succeeded.
+
+ The string representation of a number.
+ When this method returns, contains the equivalent to the number that is contained in value, or zero (0) if the conversion fails. The conversion fails if the parameter is null or is not of the correct format. This parameter is passed uninitialized.
+
+ true if was converted successfully; otherwise, false.
+
+ is null.
+
+
+
+ Tries to convert the string representation of a number in a specified style and culture-specific format to its
+ equivalent, and returns a value that indicates whether the conversion succeeded.
+
+ The string representation of a number.
+ A bitwise combination of enumeration values that indicates the style elements that can be present in .
+ An object that supplies culture-specific formatting information about .
+ When this method returns, contains the equivalent to the number that is contained in value, or if the conversion fails. The conversion fails if the parameter is null or is not of the correct format. This parameter is passed uninitialized.
+
+ true if was converted successfully; otherwise, false.
+
+
+ is not a value.
+ -or-
+ includes the or flag along with another value.
+
+
+
+
+ Returns the smaller of two values.
+
+ The first value to compare.
+ The second value to compare.
+
+ The or parameter, whichever is smaller.
+
+
+
+
+ Returns the larger of two values.
+
+ The first value to compare.
+ The second value to compare.
+
+ The or parameter, whichever is larger.
+
+
+
+
+ Gets the absolute value of a object.
+
+ A number.
+
+ The absolute value of .
+
+
+
+
+ Divides one value by another, returns the result, and returns the remainder in
+ an output parameter.
+
+ The value to be divided.
+ The value to divide by.
+ When this method returns, contains a value that represents the remainder from the division. This parameter is passed uninitialized.
+
+ The quotient of the division.
+
+
+
+
+ Raises a value to the power of a specified value.
+
+ The number to raise to the power.
+ The exponent to raise by.
+
+ The result of raising to the power.
+
+
+
+
+ Performs modulus division on a number raised to the power of another number.
+
+ The number to raise to the power.
+ The exponent to raise by.
+ The number by which to divide raised to the power.
+
+ The remainder after dividing raised by by
+ .
+
+ is negative.
+
+
+
+ Finds the greatest common divisor of two values.
+
+ The first value.
+ The second value.
+
+ The greatest common divisor of and .
+
+
+
+
+ Returns the logarithm of a specified number in a specified base.
+
+ A number whose logarithm is to be found.
+ The base of the logarithm.
+
+ The base logarithm of value,
+
+ The log of is out of range of the data type.
+
+
+
+ Returns the natural (base e) logarithm of a specified number.
+
+ The number whose logarithm is to be found.
+
+ The natural (base e) logarithm of .
+
+ The base 10 log of value is out of range of the data type.
+
+
+
+ Returns the base 10 logarithm of a specified number.
+
+ A number whose logarithm is to be found.
+
+ The base 10 logarithm of .
+
+ The base 10 log of value is out of range of the data type.
+
+
+
+ Returns a value that indicates whether the current instance and an unsigned 64-bit integer have the same value.
+
+ The unsigned 64-bit integer to compare.
+
+ true if the current instance and the unsigned 64-bit integer have the same value; otherwise, false.
+
+
+
+
+ Returns the hash code for the current object.
+
+
+ A 32-bit signed integer hash code.
+
+
+
+
+ Adds two values and returns the result.
+
+ The first value to add.
+ The second value to add.
+
+ The sum of and .
+
+
+
+
+ Subtracts one value from another and returns the result.
+
+ The value to subtract from (the minuend).
+ The value to subtract (the subtrahend).
+
+ The result of subtracting from .
+
+
+
+
+ Returns the product of two values.
+
+ The first number to multiply.
+ The second number to multiply.
+
+ The product of the and parameters.
+
+
+
+
+ Divides one value by another and returns the result.
+
+ The value to be divided.
+ The value to divide by.
+
+ The quotient of the division.
+
+
+
+
+ Performs integer division on two values and returns the remainder.
+
+ The value to be divided.
+ The value to divide by.
+
+ The remainder after dividing by .
+
+
+
+
+ Negates a specified value.
+
+ The value to negate.
+
+ The result of the parameter multiplied by negative one (-1).
+
+
+
+
+ Compares this instance to a specified object and returns an integer that indicates whether the value of
+ this instance is less than, equal to, or greater than the value of the specified object.
+
+ The object to compare.
+
+ A signed integer that indicates the relationship of the current instance to the parameter,
+ as shown in the following table.
+
+
+ Value
+ Condition
+
+ -
+ Less than zero
+ The current instance is less than .
+
+ -
+ Zero
+ The current instance equals .
+
+ -
+ Greater than zero
+ The current instance is greater than .
+
+
+
+ is not a .
+
+
+
+ Compares this instance to a second and returns an integer that indicates whether the
+ value of this instance is less than, equal to, or greater than the value of the specified object.
+
+ The object to compare.
+
+ A signed integer value that indicates the relationship of this instance to , as
+ shown in the following table.
+
+
+ Value
+ Condition
+
+ -
+ Less than zero
+ The current instance is less than .
+
+ -
+ Zero
+ The current instance equals .
+
+ -
+ Greater than zero
+ The current instance is greater than .
+
+
+
+
+
+
+ Compares this instance to an unsigned 64-bit integer and returns an integer that indicates whether the value of this
+ instance is less than, equal to, or greater than the value of the unsigned 64-bit integer.
+
+ The unsigned 64-bit integer to compare.
+
+ A signed integer that indicates the relative value of this instance and , as shown
+ in the following table.
+
+
+ Value
+ Condition
+
+ -
+ Less than zero
+ The current instance is less than .
+
+ -
+ Zero
+ The current instance equals .
+
+ -
+ Greater than zero
+ The current instance is greater than .
+
+
+
+
+
+
+ Compares this instance to a signed 64-bit integer and returns an integer that indicates whether the value of this
+ instance is less than, equal to, or greater than the value of the signed 64-bit integer.
+
+ The signed 64-bit integer to compare.
+
+ A signed integer that indicates the relative value of this instance and , as shown
+ in the following table.
+
+
+ Value
+ Condition
+
+ -
+ Less than zero
+ The current instance is less than .
+
+ -
+ Zero
+ The current instance equals .
+
+ -
+ Greater than zero
+ The current instance is greater than .
+
+
+
+
+
+
+ Compares two values and returns an integer that indicates whether the first value is less than, equal to, or greater than the second value.
+
+ The first value to compare.
+ The second value to compare.
+
+ A signed integer that indicates the relative values of left and right, as shown in the following table.
+
+
+ Value
+ Condition
+
+ -
+ Less than zero
+ is less than .
+
+ -
+ Zero
+ equals .
+
+ -
+ Greater than zero
+ is greater than .
+
+
+
+
+
+
+ Converts a value to a byte array.
+
+
+ The value of the current object converted to an array of bytes.
+
+
+
+
+ Provides data for event.
+
+
+
+
+ Gets channel data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Channel number.
+ Channel data.
+
+
+
+ Base class for all channel related events.
+
+
+
+
+ Gets the channel number.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The channel number.
+
+
+
+ Provides data for events.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Channel number.
+ Channel data.
+ Channel data type code.
+
+
+
+ Gets the data type code.
+
+
+
+
+ Provides data for event.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The remote channel number.
+ The initial window size.
+ The maximum packet size.
+
+
+
+ Gets the initial size of the window.
+
+
+ The initial size of the window.
+
+
+
+
+ Gets the maximum size of the packet.
+
+
+ The maximum size of the packet.
+
+
+
+
+ Provides data for event.
+
+
+
+
+ Gets failure reason code.
+
+
+
+
+ Gets failure description.
+
+
+
+
+ Gets failure language.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Channel number.
+ Failure reason code.
+ Failure description.
+ Failure language.
+
+
+
+ Provides data for event.
+
+
+
+
+ Gets request information.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Request information.
+
+
+
+ Base class for DER encoded data.
+
+
+
+
+ Gets a value indicating whether end of data is reached.
+
+
+ true if end of data is reached; otherwise, false.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ DER encoded data.
+ its a construct
+
+
+
+ Encodes written data as DER byte array.
+
+ DER Encoded array.
+
+
+
+ Reads next mpint data type from internal buffer.
+
+ mpint read.
+
+
+
+ Reads next int data type from internal buffer.
+
+ int read.
+
+
+
+ Reads next octetstring data type from internal buffer.
+
+ data read.
+
+
+
+ Reads next bitstring data type from internal buffer.
+
+ data read.
+
+
+
+ Reads next object data type from internal buffer.
+
+ data read.
+
+
+
+ Writes BOOLEAN data into internal buffer.
+
+ UInt32 data to write.
+
+
+
+ Writes UInt32 data into internal buffer.
+
+ UInt32 data to write.
+
+
+
+ Writes INTEGER data into internal buffer.
+
+ BigInteger data to write.
+
+
+
+ Writes OCTETSTRING data into internal buffer.
+
+ The data.
+
+
+
+ Writes BITSTRING data into internal buffer.
+
+ The data.
+
+
+
+ Writes OBJECTIDENTIFIER data into internal buffer.
+
+ The identifier.
+
+
+
+ Writes OBJECTIDENTIFIER data into internal buffer.
+
+ The bytes.
+
+
+
+ Writes NULL data into internal buffer.
+
+
+
+
+ Writes DerData data into internal buffer.
+
+ DerData data to write.
+
+
+
+ Gets Data Length
+
+ length
+
+
+
+ Write Byte data into internal buffer.
+
+
+
+
+ Reads Byte data into internal buffer.
+
+ data read
+
+
+
+ Reads lengths Bytes data into internal buffer.
+
+ data read
+ amount of data to read.
+
+
+
+ Provides data for the ErrorOccured events.
+
+
+
+
+ Gets the System.Exception that represents the error that occurred.
+
+
+
+
+ Initializes a new instance of the class.
+
+ An System.Exception that represents the error that occurred.
+
+
+
+ Collection of different extension method
+
+
+
+
+ Determines whether the specified value is null or white space.
+
+ The value.
+
+ true if is null or white space; otherwise, false.
+
+
+
+
+ Initializes a new instance of the structure using the SSH BigNum2 Format
+
+
+
+
+ Reverses the sequence of the elements in the entire one-dimensional .
+
+ The one-dimensional to reverse.
+
+ The with its elements reversed.
+
+
+
+
+ Prints out
+
+ The bytes.
+
+
+
+ Creates an instance of the specified type using that type's default constructor.
+
+ The type to create.
+ Type of the instance to create.
+ A reference to the newly created object.
+
+
+
+ Returns a specified number of contiguous bytes from a given offset.
+
+ The array to return a number of bytes from.
+ The zero-based offset in at which to begin taking bytes.
+ The number of bytes to take from .
+
+ A array that contains the specified number of bytes at the specified offset
+ of the input array.
+
+ is null.
+
+ When is zero and equals the length of ,
+ then is returned.
+
+
+
+
+ Returns a specified number of contiguous bytes from the start of the specified byte array.
+
+ The array to return a number of bytes from.
+ The number of bytes to take from .
+
+ A array that contains the specified number of bytes at the start of the input array.
+
+ is null.
+
+ When equals the length of , then
+ is returned.
+
+
+
+
+ Trims the leading zero from a byte array.
+
+ The value.
+
+ without leading zeros.
+
+
+
+
+ Pads with leading zeros if needed.
+
+ The data.
+ The length to pad to.
+
+
+
+ Provides data for the HostKeyReceived event.
+
+
+
+
+ Gets or sets a value indicating whether host key can be trusted.
+
+
+ true if host key can be trusted; otherwise, false.
+
+
+
+
+ Gets the host key.
+
+
+
+
+ Gets the host key name.
+
+
+
+
+ Gets the finger print.
+
+
+
+
+ Gets the length of the key in bits.
+
+
+ The length of the key in bits.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The host.
+
+
+
+ The exception that is thrown when there is something wrong with the server capabilities.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Describes object identifier for DER encoding
+
+
+
+
+ Gets the object identifier.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The identifiers.
+
+
+
+ Provides convenience methods for conversion to and from both Big Endian and Little Endian.
+
+
+
+
+ Converts little endian bytes into number.
+
+ The buffer.
+ Converted .
+
+
+
+ Converts little endian bytes into number.
+
+ The buffer.
+ The buffer offset.
+ Converted .
+
+
+
+ Converts little endian bytes into number.
+
+ The buffer.
+ Converted .
+
+
+
+ Converts little endian bytes into number.
+
+ The buffer.
+ Converted .
+
+
+
+ Populates buffer with little endian number representation.
+
+ The number to convert.
+
+
+
+ Populates buffer with little endian number representation.
+
+ The number to convert.
+ The buffer.
+
+
+
+ Populates buffer with little endian number representation.
+
+ The number to convert.
+
+
+
+ Populates buffer with little endian number representation.
+
+ The number to convert.
+ The buffer.
+
+
+
+ Populates buffer with little endian number representation.
+
+ The number to convert.
+ The buffer.
+ The buffer offset.
+
+
+
+ Populates buffer with little endian number representation.
+
+ The number to convert.
+
+
+
+ Populates buffer with little endian number representation.
+
+ The number to convert.
+ The buffer.
+
+
+
+ Returns the specified 64-bit unsigned integer value as an array of bytes.
+
+ The number to convert.
+ An array of bytes with length 8.
+
+
+
+ Converts big endian bytes into number.
+
+ The buffer.
+ Converted .
+
+
+
+ Converts big endian bytes into number.
+
+ The buffer.
+ The buffer offset.
+ Converted .
+
+
+
+ Converts big endian bytes into number.
+
+ The buffer.
+ Converted .
+
+
+
+ Converts big endian bytes into number.
+
+ The buffer.
+ Converted .
+
+
+
+ PipeStream is a thread-safe read/write data stream for use between two threads in a
+ single-producer/single-consumer type problem.
+
+ 2006/10/13 1.0
+ Update on 2008/10/9 1.1 - uses Monitor instead of Manual Reset events for more elegant synchronicity.
+
+ Copyright (c) 2006 James Kolpack (james dot kolpack at google mail)
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+ associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
+ OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+
+ Queue of bytes provides the datastructure for transmitting from an
+ input stream to an output stream.
+
+ Possible more effecient ways to accomplish this.
+
+
+
+ Indicates that the input stream has been flushed and that
+ all remaining data should be written to the output stream.
+
+
+
+
+ Maximum number of bytes to store in the buffer.
+
+
+
+
+ Setting this to true will cause Read() to block if it appears
+ that it will run out of data.
+
+
+
+
+ Indicates whether the current is disposed.
+
+
+
+
+ Gets or sets the maximum number of bytes to store in the buffer.
+
+ The length of the max buffer.
+
+
+
+ Gets or sets a value indicating whether to block last read method before the buffer is empty.
+ When true, Read() will block until it can fill the passed in buffer and count.
+ When false, Read() will not block, returning all the available buffer data.
+
+
+ Setting to true will remove the possibility of ending a stream reader prematurely.
+
+
+ true if block last read method before the buffer is empty; otherwise, false.
+
+ Methods were called after the stream was closed.
+
+
+
+ When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device.
+
+ An I/O error occurs.
+ Methods were called after the stream was closed.
+
+ Once flushed, any subsequent read operations no longer block until requested bytes are available. Any write operation reactivates blocking
+ reads.
+
+
+
+
+ When overridden in a derived class, sets the position within the current stream.
+
+
+ The new position within the current stream.
+
+ A byte offset relative to the origin parameter.
+ A value of type indicating the reference point used to obtain the new position.
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+
+
+
+ When overridden in a derived class, sets the length of the current stream.
+
+ The desired length of the current stream in bytes.
+ The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.
+
+
+
+ When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
+
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero if the stream is closed or end of the stream has been reached.
+
+ The zero-based byte offset in buffer at which to begin storing the data read from the current stream.
+ The maximum number of bytes to be read from the current stream.
+ An array of bytes. When this method returns, the buffer contains the specified byte array with the values between offset and (offset + count - 1) replaced by the bytes read from the current source.
+ The sum of offset and count is larger than the buffer length.
+ Methods were called after the stream was closed.
+ The stream does not support reading.
+ is null.
+ An I/O error occurs.
+ offset or count is negative.
+
+
+
+ Returns true if there are
+
+ The count.
+ True if data available; otherwisefalse.
+
+
+
+ When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ The zero-based byte offset in buffer at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+ An array of bytes. This method copies count bytes from buffer to the current stream.
+ An I/O error occurs.
+ The stream does not support writing.
+ Methods were called after the stream was closed.
+ is null.
+ The sum of offset and count is greater than the buffer length.
+ offset or count is negative.
+
+
+
+ Releases the unmanaged resources used by the Stream and optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+ Disposing a will interrupt blocking read and write operations.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports reading.
+
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports seeking.
+
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets a value indicating whether the current stream supports writing.
+
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+
+ When overridden in a derived class, gets the length in bytes of the stream.
+
+
+ A long value representing the length of the stream in bytes.
+
+ A class derived from Stream does not support seeking.
+ Methods were called after the stream was closed.
+
+
+
+ When overridden in a derived class, gets or sets the position within the current stream.
+
+
+ The current position within the stream.
+
+ The stream does not support seeking.
+
+
+
+ Provides data for event.
+
+
+
+
+ Gets request originator host.
+
+
+
+
+ Gets request originator port.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The host.
+ The port.
+ is null.
+ is not within and .
+
+
+
+ Gets the file name part of a given POSIX path.
+
+ The POSIX path to get the file name for.
+
+ The file name part of .
+
+ is null.
+
+
+ If contains no forward slash, then
+ is returned.
+
+
+ If path has a trailing slash, return a zero-length string.
+
+
+
+
+
+ Gets the directory name part of a given POSIX path.
+
+ The POSIX path to get the directory name for.
+
+ The directory part of the specified , or . if
+ does not contain any directory information.
+
+ is null.
+
+
+
+ The exception that is thrown when a proxy connection cannot be established.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Provides data for the Downloading event.
+
+
+
+
+ Gets the downloaded filename.
+
+
+
+
+ Gets the downloaded file size.
+
+
+
+
+ Gets number of downloaded bytes so far.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The downloaded filename.
+ The downloaded file size.
+ The number of downloaded bytes so far.
+
+
+
+ The exception that is thrown when SCP error occurred.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Provides data for the Uploading event.
+
+
+
+
+ Gets the uploaded filename.
+
+
+
+
+ Gets the uploaded file size.
+
+
+
+
+ Gets number of uploaded bytes so far.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The uploaded filename.
+ The uploaded file size.
+ The number of uploaded bytes so far.
+
+
+
+ Light implementation of SemaphoreSlim.
+
+
+
+
+ Initializes a new instance of the class, specifying
+ the initial number of requests that can be granted concurrently.
+
+ The initial number of requests for the semaphore that can be granted concurrently.
+ is a negative number.
+
+
+
+ Gets the current count of the .
+
+
+
+
+ Returns a that can be used to wait on the semaphore.
+
+
+ A that can be used to wait on the semaphore.
+
+
+ A successful wait on the does not imply a successful
+ wait on the itself. It should be followed by a true wait
+ on the semaphore.
+
+
+
+
+ Exits the once.
+
+ The previous count of the .
+
+
+
+ Exits the a specified number of times.
+
+ The number of times to exit the semaphore.
+
+ The previous count of the .
+
+
+
+
+ Blocks the current thread until it can enter the .
+
+
+
+
+ Blocks the current thread until it can enter the , using a 32-bit signed
+ integer that specifies the timeout.
+
+ The number of milliseconds to wait, or Infinite(-1) to wait indefinitely.
+
+ true if the current thread successfully entered the ; otherwise, false.
+
+
+
+
+ Blocks the current thread until it can enter the , using a
+ to specify the timeout.
+
+ A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely.
+
+ true if the current thread successfully entered the ; otherwise, false.
+
+
+
+
+ Finalizes the current .
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ The exception that is thrown when file or directory is not found.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ The exception that is thrown when operation permission is denied.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Provides data for Shell DataReceived event
+
+
+
+
+ Gets the data.
+
+
+
+
+ Gets the line data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data.
+
+
+
+ Initializes a new instance of the class.
+
+ The line.
+
+
+
+ The exception that is thrown when authentication failed.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ The exception that is thrown when connection was terminated.
+
+
+
+
+ Gets the disconnect reason if provided by the server or client. Otherwise None.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The disconnect reason code.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The disconnect reason code.
+ The inner.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Base ssh data serialization type
+
+
+
+
+ Gets the underlying that is used for reading and writing SSH data.
+
+
+ The underlying that is used for reading and writing SSH data.
+
+
+
+
+ Gets a value indicating whether all data from the buffer has been read.
+
+
+ true if this instance is end of data; otherwise, false.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets data bytes array.
+
+
+ A array representation of data structure.
+
+
+
+
+ Writes the current message to the specified .
+
+ The to write the message to.
+
+
+
+ Loads data from specified bytes.
+
+ Bytes array.
+ is null.
+
+
+
+ Loads data from the specified buffer.
+
+ Bytes array.
+ The zero-based offset in at which to begin reading SSH data.
+ The number of bytes to load.
+ is null.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Reads all data left in internal buffer at current position.
+
+ An array of bytes containing the remaining data in the internal buffer.
+
+
+
+ Reads next specified number of bytes data type from internal buffer.
+
+ Number of bytes to read.
+ An array of bytes that was read from the internal buffer.
+ is greater than the internal buffer size.
+
+
+
+ Reads next byte data type from internal buffer.
+
+ Byte read.
+
+
+
+ Reads next boolean data type from internal buffer.
+
+ Boolean read.
+
+
+
+ Reads next uint16 data type from internal buffer.
+
+ uint16 read
+
+
+
+ Reads next uint32 data type from internal buffer.
+
+ uint32 read
+
+
+
+ Reads next uint64 data type from internal buffer.
+
+ uint64 read
+
+
+
+ Reads next string data type from internal buffer using the specific encoding.
+
+
+ The read.
+
+
+
+
+ Reads next data type as byte array from internal buffer.
+
+
+ The bytes read.
+
+
+
+
+ Reads next name-list data type from internal buffer.
+
+
+ String array or read data.
+
+
+
+
+ Reads next extension-pair data type from internal buffer.
+
+ Extensions pair dictionary.
+
+
+
+ Writes bytes array data into internal buffer.
+
+ Byte array data to write.
+ is null.
+
+
+
+ Writes a sequence of bytes to the current SSH data stream and advances the current position
+ within this stream by the number of bytes written.
+
+ An array of bytes. This method write bytes from buffer to the current SSH data stream.
+ The zero-based offset in at which to begin writing bytes to the SSH data stream.
+ The number of bytes to be written to the current SSH data stream.
+ is null.
+ The sum of and is greater than the buffer length.
+ or is negative.
+
+
+
+ Writes data into internal buffer.
+
+ data to write.
+
+
+
+ Writes into internal buffer.
+
+ data to write.
+
+
+
+ Writes data into internal buffer.
+
+ data to write.
+
+
+
+ Writes data into internal buffer.
+
+ data to write.
+
+
+
+ Writes data into internal buffer using default encoding.
+
+ data to write.
+ is null.
+
+
+
+ Writes data into internal buffer using the specified encoding.
+
+ data to write.
+ The character encoding to use.
+ is null.
+ is null.
+
+
+
+ Writes data into internal buffer.
+
+ The data to write.
+ is null.
+
+
+
+ Writes data into internal buffer.
+
+ An array of bytes. This method write bytes from buffer to the current SSH data stream.
+ The zero-based byte offset in at which to begin writing bytes to the SSH data stream.
+ The number of bytes to be written to the current SSH data stream.
+ is null.
+ The sum of and is greater than the buffer length.
+ or is negative.
+
+
+
+ Writes mpint data into internal buffer.
+
+ mpint data to write.
+
+
+
+ Writes name-list data into internal buffer.
+
+ name-list data to write.
+
+
+
+ Writes extension-pair data into internal buffer.
+
+ extension-pair data to write.
+
+
+
+ Specialized for reading and writing data SSH data.
+
+
+
+
+ Initializes a new instance of the class with an expandable capacity initialized
+ as specified.
+
+ The initial size of the internal array in bytes.
+
+
+
+ Initializes a new non-resizable instance of the class based on the specified byte array.
+
+ The array of unsigned bytes from which to create the current stream.
+ is null.
+
+
+
+ Initializes a new non-resizable instance of the class based on the specified byte array.
+
+ The array of unsigned bytes from which to create the current stream.
+ The zero-based offset in at which to begin reading SSH data.
+ The number of bytes to load.
+ is null.
+
+
+
+ Gets a value indicating whether all data from the SSH data stream has been read.
+
+
+ true if this instance is end of data; otherwise, false.
+
+
+
+
+ Writes an to the SSH data stream.
+
+ data to write.
+
+
+
+ Writes an to the SSH data stream.
+
+ data to write.
+
+
+
+ Writes a into the SSH data stream.
+
+ The to write.
+
+
+
+ Writes bytes array data into the SSH data stream.
+
+ Byte array data to write.
+ is null.
+
+
+
+ Reads a byte array from the SSH data stream.
+
+
+ The byte array read from the SSH data stream.
+
+
+
+
+ Writes a buffer preceded by its length into the SSH data stream.
+
+ The data to write.
+ is null.
+
+
+
+ Writes a buffer preceded by its length into the SSH data stream.
+
+ An array of bytes. This method write bytes from buffer to the current SSH data stream.
+ The zero-based byte offset in at which to begin writing bytes to the SSH data stream.
+ The number of bytes to be written to the current SSH data stream.
+ is null.
+ The sum of and is greater than the buffer length.
+ or is negative.
+
+
+
+ Writes string data to the SSH data stream using the specified encoding.
+
+ The string data to write.
+ The character encoding to use.
+ is null.
+ is null.
+
+
+
+ Reads a from the SSH datastream.
+
+
+ The read from the SSH data stream.
+
+
+
+
+ Reads the next data type from the SSH data stream.
+
+
+ The read from the SSH data stream.
+
+
+
+
+ Reads the next data type from the SSH data stream.
+
+
+ The read from the SSH data stream.
+
+
+
+
+ Reads the next data type from the SSH data stream.
+
+
+ The read from the SSH data stream.
+
+
+
+
+ Reads next specified number of bytes data type from internal buffer.
+
+ Number of bytes to read.
+
+ An array of bytes that was read from the internal buffer.
+
+ is greater than the internal buffer size.
+
+
+
+ Writes the stream contents to a byte array, regardless of the .
+
+
+ This method returns the contents of the as a byte array.
+
+
+ If the current instance was constructed on a provided byte array, a copy of the section of the array
+ to which this instance has access is returned.
+
+
+
+
+ The exception that is thrown when SSH exception occurs.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ The exception that is thrown when operation is timed out.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ The exception that is thrown when pass phrase for key file is empty or null
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+ The that holds the serialized object data about the exception being thrown.
+ The that contains contextual information about the source or destination.
+ The parameter is null.
+ The class name is null or is zero (0).
+
+
+
+ Specifies the initial assignments of the opcode values that are used in the 'encoded terminal modes' valu
+
+
+
+
+ Indicates end of options.
+
+
+
+
+ Interrupt character; 255 if none. Similarly for the other characters. Not all of these characters are supported on all systems.
+
+
+
+
+ The quit character (sends SIGQUIT signal on POSIX systems).
+
+
+
+
+ Erase the character to left of the cursor.
+
+
+
+
+ Kill the current input line.
+
+
+
+
+ End-of-file character (sends EOF from the terminal).
+
+
+
+
+ End-of-line character in addition to carriage return and/or linefeed.
+
+
+
+
+ Additional end-of-line character.
+
+
+
+
+ Continues paused output (normally control-Q).
+
+
+
+
+ Pauses output (normally control-S).
+
+
+
+
+ Suspends the current program.
+
+
+
+
+ Another suspend character.
+
+
+
+
+ Reprints the current input line.
+
+
+
+
+ Erases a word left of cursor.
+
+
+
+
+ Enter the next character typed literally, even if it is a special character
+
+
+
+
+ Character to flush output.
+
+
+
+
+ Switch to a different shell layer.
+
+
+
+
+ Prints system status line (load, command, pid, etc).
+
+
+
+
+ Toggles the flushing of terminal output.
+
+
+
+
+ The ignore parity flag. The parameter SHOULD be 0 if this flag is FALSE, and 1 if it is TRUE.
+
+
+
+
+ Mark parity and framing errors.
+
+
+
+
+ Enable checking of parity errors.
+
+
+
+
+ Strip 8th bit off characters.
+
+
+
+
+ Map NL into CR on input.
+
+
+
+
+ Ignore CR on input.
+
+
+
+
+ Map CR to NL on input.
+
+
+
+
+ Translate uppercase characters to lowercase.
+
+
+
+
+ Enable output flow control.
+
+
+
+
+ Any char will restart after stop.
+
+
+
+
+ Enable input flow control.
+
+
+
+
+ Ring bell on input queue full.
+
+
+
+
+ Terminal input and output is assumed to be encoded in UTF-8.
+
+
+
+
+ Enable signals INTR, QUIT, [D]SUSP.
+
+
+
+
+ Canonicalize input lines.
+
+
+
+
+ Enable input and output of uppercase characters by preceding their lowercase equivalents with "\".
+
+
+
+
+ Enable echoing.
+
+
+
+
+ Visually erase chars.
+
+
+
+
+ Kill character discards current line.
+
+
+
+
+ Echo NL even if ECHO is off.
+
+
+
+
+ Don't flush after interrupt.
+
+
+
+
+ Stop background jobs from output.
+
+
+
+
+ Enable extensions.
+
+
+
+
+ Echo control characters as ^(Char).
+
+
+
+
+ Visual erase for line kill.
+
+
+
+
+ Retype pending input.
+
+
+
+
+ Enable output processing.
+
+
+
+
+ Convert lowercase to uppercase.
+
+
+
+
+ Map NL to CR-NL.
+
+
+
+
+ Translate carriage return to newline (output).
+
+
+
+
+ Translate newline to carriage return-newline (output).
+
+
+
+
+ Newline performs a carriage return (output).
+
+
+
+
+ 7 bit mode.
+
+
+
+
+ 8 bit mode.
+
+
+
+
+ Parity enable.
+
+
+
+
+ Odd parity, else even.
+
+
+
+
+ Specifies the input baud rate in bits per second.
+
+
+
+
+ Specifies the output baud rate in bits per second.
+
+
+
+
+ Specifies compression modes
+
+
+
+
+ Specifies that content should be compressed.
+
+
+
+
+ Specifies that content should be decompressed.
+
+
+
+
+ Represents base class for compression algorithm implementation
+
+
+
+
+ Gets or sets a value indicating whether compression is active.
+
+
+ true if compression is active; otherwise, false.
+
+
+
+
+ Gets the session.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes the algorithm
+
+ The session.
+
+
+
+ Compresses the specified data.
+
+ Data to compress.
+ Compressed data
+
+
+
+ Compresses the specified data.
+
+ Data to compress.
+ The zero-based byte offset in at which to begin reading the data to compress.
+ The number of bytes to be compressed.
+
+ The compressed data.
+
+
+
+
+ Decompresses the specified data.
+
+ Compressed data.
+
+ The decompressed data.
+
+
+
+
+ Decompresses the specified data.
+
+ Compressed data.
+ The zero-based byte offset in at which to begin reading the data to decompress.
+ The number of bytes to be read from the compressed data.
+
+ The decompressed data.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the is reclaimed
+ by garbage collection.
+
+
+
+
+ Represents "zlib" compression implementation
+
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Initializes the algorithm
+
+ The session.
+
+
+
+ Represents "zlib@openssh.org" compression implementation
+
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Initializes the algorithm
+
+ The session.
+
+
+
+ Implements Zlib compression algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The stream.
+ The mode.
+
+
+
+ Writes the specified buffer.
+
+ The buffer.
+ The offset.
+ The count.
+
+
+
+ Represents remote connection information class.
+
+
+ This class is NOT thread-safe. Do not use the same with multiple
+ client instances.
+
+
+
+
+ The default connection timeout.
+
+
+ 30 seconds.
+
+
+
+
+ The default channel close timeout.
+
+
+ 1 second.
+
+
+
+
+ Gets supported key exchange algorithms for this connection.
+
+
+
+
+ Gets supported encryptions for this connection.
+
+
+
+
+ Gets supported hash algorithms for this connection.
+
+
+
+
+ Gets supported host key algorithms for this connection.
+
+
+
+
+ Gets supported authentication methods for this connection.
+
+
+
+
+ Gets supported compression algorithms for this connection.
+
+
+
+
+ Gets the supported channel requests for this connection.
+
+
+ The supported channel requests for this connection.
+
+
+
+
+ Gets a value indicating whether connection is authenticated.
+
+
+ true if connection is authenticated; otherwise, false.
+
+
+
+
+ Gets connection host.
+
+
+ The connection host.
+
+
+
+
+ Gets connection port.
+
+
+ The connection port. The default value is 22.
+
+
+
+
+ Gets connection username.
+
+
+
+
+ Gets proxy type.
+
+
+ The type of the proxy.
+
+
+
+
+ Gets proxy connection host.
+
+
+
+
+ Gets proxy connection port.
+
+
+
+
+ Gets proxy connection username.
+
+
+
+
+ Gets proxy connection password.
+
+
+
+
+ Gets or sets connection timeout.
+
+
+ The connection timeout. The default value is 30 seconds.
+
+
+
+
+
+
+
+ Gets or sets the timeout to use when waiting for a server to acknowledge closing a channel.
+
+
+ The channel close timeout. The default value is 1 second.
+
+
+ If a server does not send a SSH_MSG_CHANNEL_CLOSE message before the specified timeout
+ elapses, the channel will be closed immediately.
+
+
+
+
+ Gets or sets the character encoding.
+
+
+ The character encoding. The default is .
+
+
+
+
+ Gets or sets number of retry attempts when session channel creation failed.
+
+
+ The number of retry attempts when session channel creation failed. The default
+ value is 10.
+
+
+
+
+ Gets or sets maximum number of session channels to be open simultaneously.
+
+
+ The maximum number of session channels to be open simultaneously. The default
+ value is 10.
+
+
+
+
+ Occurs when authentication banner is sent by the server.
+
+
+
+
+
+
+
+ Gets the current key exchange algorithm.
+
+
+
+
+ Gets the current server encryption.
+
+
+
+
+ Gets the current client encryption.
+
+
+
+
+ Gets the current server hash algorithm.
+
+
+
+
+ Gets the current client hash algorithm.
+
+
+
+
+ Gets the current host key algorithm.
+
+
+
+
+ Gets the current server compression algorithm.
+
+
+
+
+ Gets the server version.
+
+
+
+
+ Get the client version.
+
+
+
+
+ Gets the current client compression algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The host.
+ The username.
+ The authentication methods.
+ is null.
+ is a zero-length string.
+ is null, a zero-length string or contains only whitespace characters.
+ is null.
+ No specified.
+
+
+
+ Initializes a new instance of the class.
+
+ The host.
+ The port.
+ The username.
+ The authentication methods.
+ is null.
+ is null, a zero-length string or contains only whitespace characters.
+ is not within and .
+ is null.
+ No specified.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+ The proxy password.
+ The authentication methods.
+ is null.
+ is null, a zero-length string or contains only whitespace characters.
+ is not within and .
+ is not and is null.
+ is not and is not within and .
+ is null.
+ No specified.
+
+
+
+ Authenticates the specified session.
+
+ The session to be authenticated.
+ The factory to use for creating new services.
+ is null.
+ is null.
+ No suitable authentication method found to complete authentication, or permission denied.
+
+
+
+ Signals that an authentication banner message was received from the server.
+
+ The session in which the banner message was received.
+ The banner message.{
+
+
+
+ Establishes a socket connection to the specified host and port.
+
+ The host name of the server to connect to.
+ The port to connect to.
+ The maximum time to wait for the connection to be established.
+ The connection failed to establish within the configured .
+ An error occurred trying to establish the connection.
+
+
+
+ Performs a blocking read on the socket until bytes are received.
+
+ The to read from.
+ An array of type that is the storage location for the received data.
+ The position in parameter to store the received data.
+ The number of bytes to read.
+
+ The number of bytes read.
+
+ The socket is closed.
+ The read failed.
+
+
+
+ Performs a blocking read on the socket until bytes are received.
+
+ The to read from.
+ An array of type that is the storage location for the received data.
+ The position in parameter to store the received data.
+ The number of bytes to read.
+ The maximum time to wait until bytes have been received.
+
+ The number of bytes read.
+
+ The socket is closed.
+ The read has timed-out.
+ The read failed.
+
+
+
+ Establishes a tunnel via an HTTP proxy server.
+
+
+
+
+ Specification
+ URL
+
+ -
+ HTTP CONNECT method
+ https://tools.ietf.org/html/rfc7231#section-4.3.6
+
+ -
+ HTTP Authentication: Basic and Digest Access Authentication
+ https://tools.ietf.org/html/rfc2617
+
+
+
+
+
+
+ Performs a blocking read on the socket until a line is read.
+
+ The to read from.
+ A that represents the time to wait until a line is read.
+ The read has timed-out.
+ An error occurred when trying to access the socket.
+
+ The line read from the socket, or null when the remote server has shutdown and all data has been received.
+
+
+
+
+ Handles the SSH protocol version exchange.
+
+
+
+
+ Performs the SSH protocol version exchange.
+
+ The identification string of the SSH client.
+ A connected to the server.
+ The maximum time to wait for the server to respond.
+
+ The SSH identification of the server.
+
+
+
+
+ Handles the SSH protocol version exchange.
+
+
+ https://tools.ietf.org/html/rfc4253#section-4.2
+
+
+
+
+ Performs the SSH protocol version exchange.
+
+ The identification string of the SSH client.
+ A connected to the server.
+ The maximum time to wait for the server to respond.
+
+ The SSH identification of the server.
+
+
+
+
+ Performs a blocking read on the socket until a line is read.
+
+ The to read from.
+ A that represents the time to wait until a line is read.
+ A to which read bytes will be added.
+ The read has timed-out.
+ An error occurred when trying to access the socket.
+
+ The line read from the socket, or null when the remote server has shutdown and all data has been received.
+
+
+
+
+ Establishes a tunnel via a SOCKS4 proxy server.
+
+
+ https://www.openssh.com/txt/socks4.protocol
+
+
+
+
+ Establishes a connection to the server via a SOCKS5 proxy.
+
+ The connection information.
+ The .
+
+
+
+ Establishes a tunnel via a SOCKS5 proxy server.
+
+
+ https://en.wikipedia.org/wiki/SOCKS#SOCKS5
+
+
+
+
+ Establishes a connection to the server via a SOCKS5 proxy.
+
+ The connection information.
+ The .
+
+
+
+ https://tools.ietf.org/html/rfc1929
+
+
+
+
+ Represents an SSH identification.
+
+
+
+
+ Initializes a new instance with the specified protocol version
+ and software version.
+
+ The SSH protocol version.
+ The software version of the implementation
+ is .
+ is .
+
+
+
+ Initializes a new instance with the specified protocol version,
+ software version and comments.
+
+ The SSH protocol version.
+ The software version of the implementation
+ The comments.
+ is .
+ is .
+
+
+
+ Gets or sets the software version of the implementation.
+
+
+ The software version of the implementation.
+
+
+ This is primarily used to trigger compatibility extensions and to indicate
+ the capabilities of an implementation.
+
+
+
+
+ Gets or sets the SSH protocol version.
+
+
+ The SSH protocol version.
+
+
+
+
+ Gets or sets the comments.
+
+
+ The comments, or if there are no comments.
+
+
+ should contain additional information that might be useful
+ in solving user problems.
+
+
+
+
+ Returns the SSH identification string.
+
+
+ The SSH identification string.
+
+
+
+
+ Specifies behavior for expected expression
+
+
+
+
+ Gets the expected regular expression.
+
+
+
+
+ Gets the action to perform when expected expression is found.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The expect regular expression.
+ The action to perform.
+ or is null.
+
+
+
+ Initializes a new instance of the class.
+
+ The expect expression.
+ The action to perform.
+ or is null.
+
+
+
+ Provides additional information for asynchronous command execution
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async callback.
+ The state.
+
+
+
+ Base class for port forwarding functionality.
+
+
+
+
+ Gets or sets the session.
+
+
+ The session.
+
+
+
+
+ The event occurs as the forwarded port is being stopped.
+
+
+
+
+ The event occurs as the forwarded port is being stopped.
+
+
+
+
+ Gets a value indicating whether port forwarding is started.
+
+
+ true if port forwarding is started; otherwise, false.
+
+
+
+
+ Occurs when an exception is thrown.
+
+
+
+
+ Occurs when a port forwarding request is received.
+
+
+
+
+ Starts port forwarding.
+
+
+
+
+ Stops port forwarding.
+
+
+
+
+ Starts port forwarding.
+
+
+
+
+ Stops port forwarding, and waits for the specified timeout until all pending
+ requests are processed.
+
+ The maximum amount of time to wait for pending requests to finish processing.
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Ensures the current instance is not disposed.
+
+ The current instance is disposed.
+
+
+
+ Raises event.
+
+ The exception.
+
+
+
+ Raises event.
+
+ Request originator host.
+ Request originator port.
+
+
+
+ Raises the event.
+
+
+
+
+ Handles session ErrorOccured event.
+
+ The source of the event.
+ The instance containing the event data.
+
+
+
+ Provides functionality for forwarding connections from the client to destination servers via the SSH server,
+ also known as dynamic port forwarding.
+
+
+
+
+ Gets the bound host.
+
+
+
+
+ Gets the bound port.
+
+
+
+
+ Gets a value indicating whether port forwarding is started.
+
+
+ true if port forwarding is started; otherwise, false.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The port.
+
+
+
+ Initializes a new instance of the class.
+
+ The host.
+ The port.
+
+
+
+ Starts local port forwarding.
+
+
+
+
+ Stops local port forwarding, and waits for the specified timeout until all pending
+ requests are processed.
+
+ The maximum amount of time to wait for pending requests to finish processing.
+
+
+
+ Ensures the current instance is not disposed.
+
+ The current instance is disposed.
+
+
+
+ Interrupts the listener, and unsubscribes from events.
+
+
+
+
+ Waits for pending channels to close.
+
+ The maximum time to wait for the pending channels to close.
+
+
+
+ Holds a value indicating whether the current instance is disposed.
+
+
+ true if the current instance is disposed; otherwise, false.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Initializes the .
+
+
+
+ When the port is started for the first time, a is created with an initial count
+ of 1.
+
+
+ On subsequent (re)starts, we'll dispose the current and create a new one with
+ initial count of 1.
+
+
+
+
+
+ Reads a null terminated string from a socket.
+
+ The to read from.
+ The timeout to apply to individual reads.
+
+ The read, or null when the socket was closed.
+
+
+
+
+ Provides functionality for local port forwarding
+
+
+
+
+ Gets the bound host.
+
+
+
+
+ Gets the bound port.
+
+
+
+
+ Gets the forwarded host.
+
+
+
+
+ Gets the forwarded port.
+
+
+
+
+ Gets a value indicating whether port forwarding is started.
+
+
+ true if port forwarding is started; otherwise, false.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The bound port.
+ The host.
+ The port.
+ is greater than .
+ is null.
+ is greater than .
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The bound host.
+ The host.
+ The port.
+ is null.
+ is null.
+ is greater than .
+
+
+
+ Initializes a new instance of the class.
+
+ The bound host.
+ The bound port.
+ The host.
+ The port.
+ is null.
+ is null.
+ is greater than .
+ is greater than .
+
+
+
+ Starts local port forwarding.
+
+
+
+
+ Stops local port forwarding, and waits for the specified timeout until all pending
+ requests are processed.
+
+ The maximum amount of time to wait for pending requests to finish processing.
+
+
+
+ Ensures the current instance is not disposed.
+
+ The current instance is disposed.
+
+
+
+ Interrupts the listener, and unsubscribes from events.
+
+
+
+
+ Waits for pending channels to close.
+
+ The maximum time to wait for the pending channels to close.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Initializes the .
+
+
+
+ When the port is started for the first time, a is created with an initial count
+ of 1.
+
+
+ On subsequent (re)starts, we'll dispose the current and create a new one with
+ initial count of 1.
+
+
+
+
+
+ Provides functionality for remote port forwarding
+
+
+
+
+ Gets a value indicating whether port forwarding is started.
+
+
+ true if port forwarding is started; otherwise, false.
+
+
+
+
+ Gets the bound host.
+
+
+
+
+ Gets the bound host.
+
+
+
+
+ Gets the bound port.
+
+
+
+
+ Gets the forwarded host.
+
+
+
+
+ Gets the forwarded host.
+
+
+
+
+ Gets the forwarded port.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The bound host address.
+ The bound port.
+ The host address.
+ The port.
+ is null.
+ is null.
+ is greater than .
+ is greater than .
+
+
+
+ Initializes a new instance of the class.
+
+ The bound port.
+ The host.
+ The port.
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The bound host.
+ The bound port.
+ The host.
+ The port.
+
+
+
+ Starts remote port forwarding.
+
+
+
+
+ Stops remote port forwarding.
+
+ The maximum amount of time to wait for the port to stop.
+
+
+
+ Ensures the current instance is not disposed.
+
+ The current instance is disposed.
+
+
+
+ Initializes the .
+
+
+
+ When the port is started for the first time, a is created with an initial count
+ of 1.
+
+
+ On subsequent (re)starts, we'll dispose the current and create a new one with
+ initial count of 1.
+
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Returns a value indicating whether has been changed to .
+
+ The status to transition from.
+
+ true if has been changed to ; otherwise, false.
+
+ Cannot transition to .
+
+ While a transition from to is not possible, this method will
+ return false for any such attempts. This is related to concurrency.
+
+
+
+
+ Returns a value indicating whether has been changed to .
+
+ The status to transition from.
+
+ true if has been changed to ; otherwise, false.
+
+ Cannot transition to .
+
+ While a transition from to is not possible, this method will
+ return false for any such attempts. This is related to concurrency.
+
+
+
+
+ Holds information about key size and cipher to use
+
+
+
+
+ Gets the size of the key.
+
+
+ The size of the key.
+
+
+
+
+ Gets the cipher.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Size of the key.
+ The hash algorithm to use for a given key.
+
+
+
+ Base interface for authentication of a session using a given method.
+
+
+
+
+ Authenticates the specified session.
+
+ The session to authenticate.
+
+ The result of the authentication process.
+
+
+
+
+ Gets the list of allowed authentications.
+
+
+ The list of allowed authentications.
+
+
+
+
+ Gets the name of the authentication method.
+
+
+ The name of the authentication method.
+
+
+
+
+ Signals that an authentication banner message was received from the server.
+
+ The session in which the banner message was received.
+ The banner message.{
+
+
+
+ Gets the supported authentication methods for this connection.
+
+
+ The supported authentication methods for this connection.
+
+
+
+
+ Creates a for the credentials represented
+ by the current .
+
+
+ A for the credentials represented by the
+ current .
+
+
+
+
+ Represents remote connection information.
+
+
+
+
+ Gets or sets the timeout to used when waiting for a server to acknowledge closing a channel.
+
+
+ The channel close timeout. The default value is 1 second.
+
+
+ If a server does not send a SSH2_MSG_CHANNEL_CLOSE message before the specified timeout
+ elapses, the channel will be closed immediately.
+
+
+
+
+ Gets the supported channel requests for this connection.
+
+
+ The supported channel requests for this connection.
+
+
+
+
+ Gets the character encoding.
+
+
+ The character encoding.
+
+
+
+
+ Gets connection host.
+
+
+ The connection host.
+
+
+
+
+ Gets connection port.
+
+
+ The connection port. The default value is 22.
+
+
+
+
+ Gets proxy type.
+
+
+ The type of the proxy.
+
+
+
+
+ Gets proxy connection host.
+
+
+
+
+ Gets proxy connection port.
+
+
+
+
+ Gets proxy connection username.
+
+
+
+
+ Gets proxy connection password.
+
+
+
+
+ Gets the number of retry attempts when session channel creation failed.
+
+
+ The number of retry attempts when session channel creation failed.
+
+
+
+
+ Gets or sets connection timeout.
+
+
+ The connection timeout. The default value is 30 seconds.
+
+
+
+
+
+
+
+ Occurs when authentication banner is sent by the server.
+
+
+
+
+ Supports port forwarding functionality.
+
+
+
+
+ The event occurs as the forwarded port is being stopped.
+
+
+
+
+ Represents a transformation that can be applied to a remote path.
+
+
+
+
+ Transforms the specified remote path.
+
+ The path to transform.
+
+ The transformed path.
+
+
+
+
+ Factory for creating new services.
+
+
+
+
+ Creates a new with the specified and
+ .
+
+ The to use for creating a new session.
+ A factory to create instances.
+
+ An for the specified .
+
+ is null.
+ is null.
+
+
+
+ Creates a new in a given and with
+ the specified operation timeout and encoding.
+
+ The to create the in.
+ The number of milliseconds to wait for an operation to complete, or -1 to wait indefinitely.
+ The encoding.
+ The factory to use for creating SFTP messages.
+
+ An .
+
+
+
+
+ Create a new .
+
+
+ A .
+
+
+
+
+ Negotiates a key exchange algorithm, and creates a for the negotiated
+ algorithm.
+
+ A of the key exchange algorithms supported by the client where the key is the name of the algorithm, and the value is the type implementing this algorithm.
+ The names of the key exchange algorithms supported by the SSH server.
+
+ A that was negotiated between client and server.
+
+ is null.
+ is null.
+ No key exchange algorithm is supported by both client and server.
+
+
+
+ Creates a shell stream.
+
+ The SSH session.
+ The TERM environment variable.
+ The terminal width in columns.
+ The terminal width in rows.
+ The terminal height in pixels.
+ The terminal height in pixels.
+ Size of the buffer.
+ The terminal mode values.
+
+ The created instance.
+
+ Client is not connected.
+
+
+ The TERM environment variable contains an identifier for the text window's capabilities.
+ You can get a detailed list of these cababilities by using the ‘infocmp’ command.
+
+
+ The column/row dimensions override the pixel dimensions(when non-zero). Pixel dimensions refer
+ to the drawable area of the window.
+
+
+
+
+
+ Creates an that encloses a path in double quotes, and escapes
+ any embedded double quote with a backslash.
+
+
+ An that encloses a path in double quotes, and escapes any
+ embedded double quote with a backslash.
+ with a shell.
+
+
+
+
+ Creates an that can be used to establish a connection
+ to the server identified by the specified .
+
+ A detailing the server to establish a connection to.
+ A factory to create instances.
+
+ An that can be used to establish a connection to the
+ server identified by the specified .
+
+ is .
+ is .
+ The value of is not supported.
+
+
+
+ Creates an that deals with the SSH protocol
+ version exchange.
+
+
+ An .
+
+
+
+
+ Creates a factory to create instances.
+
+
+ An .
+
+
+
+
+ Creates a new in a given
+ and with the specified operation timeout.
+
+ The to create the in.
+ The number of milliseconds to wait for an operation to complete, or -1 to wait indefinitely.
+
+ An .
+
+
+
+
+ Provides functionality to connect and interact with SSH server.
+
+
+
+
+ Gets or sets the connection info.
+
+ The connection info.
+
+
+
+ Gets a value indicating whether the session is connected.
+
+
+ true if the session is connected; otherwise, false.
+
+
+
+
+ Gets the session semaphore that controls session channels.
+
+
+ The session semaphore.
+
+
+
+
+ Gets a that can be used to wait for the message listener loop to complete.
+
+
+ A that can be used to wait for the message listener loop to complete, or
+ null when the session has not been connected.
+
+
+
+
+ Connects to the server.
+
+ Socket connection to the SSH server or proxy server could not be established, or an error occurred while resolving the hostname.
+ SSH session could not be established.
+ Authentication of SSH session failed.
+ Failed to establish proxy connection.
+
+
+
+ Create a new SSH session channel.
+
+
+ A new SSH session channel.
+
+
+
+
+ Create a new channel for a locally forwarded TCP/IP port.
+
+
+ A new channel for a locally forwarded TCP/IP port.
+
+
+
+
+ Creates a "forwarded-tcpip" SSH channel.
+
+
+ A new "forwarded-tcpip" SSH channel.
+
+
+
+
+ Disconnects from the server.
+
+
+ This sends a SSH_MSG_DISCONNECT message to the server, waits for the
+ server to close the socket on its end and subsequently closes the client socket.
+
+
+
+
+ Called when client is disconnecting from the server.
+
+
+
+
+ Registers SSH message with the session.
+
+ The name of the message to register with the session.
+
+
+
+ Sends a message to the server.
+
+ The message to send.
+ The client is not connected.
+ The operation timed out.
+ The size of the packet exceeds the maximum size defined by the protocol.
+
+
+
+ Sends a message to the server.
+
+ The message to send.
+
+ true if the message was sent to the server; otherwise, false.
+
+ The size of the packet exceeds the maximum size defined by the protocol.
+
+ This methods returns false when the attempt to send the message results in a
+ or a .
+
+
+
+
+ Unregister SSH message from the session.
+
+ The name of the message to unregister with the session.
+
+
+
+ Waits for the specified handle or the exception handle for the receive thread
+ to signal within the connection timeout.
+
+ The wait handle.
+ A received package was invalid or failed the message integrity check.
+ None of the handles are signaled in time and the session is not disconnecting.
+ A socket error was signaled while receiving messages from the server.
+
+ When neither handles are signaled in time and the session is not closing, then the
+ session is disconnected.
+
+
+
+
+ Waits for the specified handle or the exception handle for the receive thread
+ to signal within the specified timeout.
+
+ The wait handle.
+ The time to wait for any of the handles to become signaled.
+ A received package was invalid or failed the message integrity check.
+ None of the handles are signaled in time and the session is not disconnecting.
+ A socket error was signaled while receiving messages from the server.
+
+ When neither handles are signaled in time and the session is not closing, then the
+ session is disconnected.
+
+
+
+
+ Waits for the specified to receive a signal, using a
+ to specify the time interval.
+
+ The that should be signaled.
+ A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely.
+ When this method returns , contains the .
+
+ A .
+
+
+
+
+ Waits for the specified to receive a signal, using a
+ to specify the time interval.
+
+ The that should be signaled.
+ A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely.
+
+ A .
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when session has been disconnected from the server.
+
+
+
+
+ Occurs when an error occurred.
+
+
+
+
+ Occurs when host key received.
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message is received from the server.
+
+
+
+
+ Implementation of the SSH File Transfer Protocol (SFTP) over SSH.
+
+
+
+
+ Gets or sets the maximum size of the buffer in bytes.
+
+
+ The size of the buffer. The default buffer size is 32768 bytes (32 KB).
+
+
+
+ For write operations, this limits the size of the payload for
+ individual SSH_FXP_WRITE messages. The actual size is always
+ capped at the maximum packet size supported by the peer
+ (minus the size of protocol fields).
+
+
+ For read operations, this controls the size of the payload which
+ is requested from the peer in a SSH_FXP_READ message. The peer
+ will send the requested number of bytes in a SSH_FXP_DATA message,
+ possibly split over multiple SSH_MSG_CHANNEL_DATA messages.
+
+
+ To optimize the size of the SSH packets sent by the peer,
+ the actual requested size will take into account the size of the
+ SSH_FXP_DATA protocol fields.
+
+
+ The size of the each indivual SSH_FXP_DATA message is limited to the
+ local maximum packet size of the channel, which is set to 64 KB
+ for SSH.NET. However, the peer can limit this even further.
+
+
+ The method was called after the client was disposed.
+
+
+
+ Gets or sets the operation timeout.
+
+
+ The timeout to wait until an operation completes. The default value is negative
+ one (-1) milliseconds, which indicates an infinite timeout period.
+
+ The method was called after the client was disposed.
+ represents a value that is less than -1 or greater than milliseconds.
+
+
+
+ Gets sftp protocol version.
+
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Gets remote working directory.
+
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Appends lines to a file, creating the file if it does not already exist.
+
+ The file to append the lines to. The file is created if it does not already exist.
+ The lines to append to the file.
+ isnull -or- is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+ The characters are written to the file using UTF-8 encoding without a Byte-Order Mark (BOM)
+
+
+
+
+ Appends lines to a file by using a specified encoding, creating the file if it does not already exist.
+
+ The file to append the lines to. The file is created if it does not already exist.
+ The lines to append to the file.
+ The character encoding to use.
+ is null. -or- is null. -or- is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Appends the specified string to the file, creating the file if it does not already exist.
+
+ The file to append the specified string to.
+ The string to append to the file.
+ is null. -or- is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+ The characters are written to the file using UTF-8 encoding without a Byte-Order Mark (BOM).
+
+
+
+
+ Appends the specified string to the file, creating the file if it does not already exist.
+
+ The file to append the specified string to.
+ The string to append to the file.
+ The character encoding to use.
+ is null. -or- is null. -or- is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Creates a that appends UTF-8 encoded text to the specified file,
+ creating the file if it does not already exist.
+
+ The path to the file to append to.
+
+ A that appends text to a file using UTF-8 encoding without a
+ Byte-Order Mark (BOM).
+
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Creates a that appends text to a file using the specified
+ encoding, creating the file if it does not already exist.
+
+ The path to the file to append to.
+ The character encoding to use.
+
+ A that appends text to a file using the specified encoding.
+
+ is null. -or- is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Begins an asynchronous file downloading into the stream.
+
+ The path.
+ The output.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to perform the operation was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Begins an asynchronous file downloading into the stream.
+
+ The path.
+ The output.
+ The method to be called when the asynchronous write operation is completed.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to perform the operation was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Begins an asynchronous file downloading into the stream.
+
+ The path.
+ The output.
+ The method to be called when the asynchronous write operation is completed.
+ A user-provided object that distinguishes this particular asynchronous write request from other requests.
+ The download callback.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Begins an asynchronous operation of retrieving list of files in remote directory.
+
+ The path.
+ The method to be called when the asynchronous write operation is completed.
+ A user-provided object that distinguishes this particular asynchronous write request from other requests.
+ The list callback.
+
+ An that references the asynchronous operation.
+
+ The method was called after the client was disposed.
+
+
+
+ Begins the synchronize directories.
+
+ The source path.
+ The destination path.
+ The search pattern.
+ The async callback.
+ The state.
+
+ An that represents the asynchronous directory synchronization.
+
+ is null.
+ is null or contains only whitespace.
+
+
+
+ Begins an asynchronous uploading the stream into remote file.
+
+ Data input stream.
+ Remote file path.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to list the contents of the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+ If the remote file already exists, it is overwritten and truncated.
+
+
+
+
+
+ Begins an asynchronous uploading the stream into remote file.
+
+ Data input stream.
+ Remote file path.
+ The method to be called when the asynchronous write operation is completed.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to list the contents of the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+ If the remote file already exists, it is overwritten and truncated.
+
+
+
+
+
+ Begins an asynchronous uploading the stream into remote file.
+
+ Data input stream.
+ Remote file path.
+ The method to be called when the asynchronous write operation is completed.
+ A user-provided object that distinguishes this particular asynchronous write request from other requests.
+ The upload callback.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to list the contents of the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+ If the remote file already exists, it is overwritten and truncated.
+
+
+
+
+
+ Begins an asynchronous uploading the stream into remote file.
+
+ Data input stream.
+ Remote file path.
+ Specified whether an existing file can be overwritten.
+ The method to be called when the asynchronous write operation is completed.
+ A user-provided object that distinguishes this particular asynchronous write request from other requests.
+ The upload callback.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ The method was called after the client was disposed.
+
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+ When refers to an existing file, set to true to overwrite and truncate that file.
+ If is false, the upload will fail and will throw an
+ .
+
+
+
+
+
+ Changes remote directory to path.
+
+ New directory path.
+ is null.
+ Client is not connected.
+ Permission to change directory denied by remote host. -or- A SSH command was denied by the server.
+ was not found on the remote host.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Changes permissions of file(s) to specified mode.
+
+ File(s) path, may match multiple files.
+ The mode.
+ is null.
+ Client is not connected.
+ Permission to change permission on the path(s) was denied by the remote host. -or- A SSH command was denied by the server.
+ was not found on the remote host.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Creates or overwrites a file in the specified path.
+
+ The path and name of the file to create.
+
+ A that provides read/write access to the file specified in path.
+
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+ If the target file already exists, it is first truncated to zero bytes.
+
+
+
+
+ Creates or overwrites the specified file.
+
+ The path and name of the file to create.
+ The maximum number of bytes buffered for reads and writes to the file.
+
+ A that provides read/write access to the file specified in path.
+
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+ If the target file already exists, it is first truncated to zero bytes.
+
+
+
+
+ Creates remote directory specified by path.
+
+ Directory path to create.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to create the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Creates or opens a file for writing UTF-8 encoded text.
+
+ The file to be opened for writing.
+
+ A that writes text to a file using UTF-8 encoding without
+ a Byte-Order Mark (BOM).
+
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Creates or opens a file for writing text using the specified encoding.
+
+ The file to be opened for writing.
+ The character encoding to use.
+
+ A that writes to a file using the specified encoding.
+
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Deletes the specified file or directory.
+
+ The name of the file or directory to be deleted. Wildcard characters are not supported.
+ is null.
+ Client is not connected.
+ was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Deletes remote directory specified by path.
+
+ Directory to be deleted path.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ was not found on the remote host.
+ Permission to delete the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Deletes remote file specified by path.
+
+ File to be deleted path.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ was not found on the remote host.
+ Permission to delete the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Downloads remote file specified by the path into the stream.
+
+ File to download.
+ Stream to write the file into.
+ The download callback.
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to perform the operation was denied by the remote host. -or- A SSH command was denied by the server.
+ was not found on the remote host.///
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Ends an asynchronous file downloading into the stream.
+
+ The pending asynchronous SFTP request.
+ The object did not come from the corresponding async method on this type.-or- was called multiple times with the same .
+ Client is not connected.
+ Permission to perform the operation was denied by the remote host. -or- A SSH command was denied by the server.
+ The path was not found on the remote host.
+ A SSH error where is the message from the remote host.
+
+
+
+ Ends an asynchronous operation of retrieving list of files in remote directory.
+
+ The pending asynchronous SFTP request.
+
+ A list of files.
+
+ The object did not come from the corresponding async method on this type.-or- was called multiple times with the same .
+
+
+
+ Ends the synchronize directories.
+
+ The async result.
+
+ A list of uploaded files.
+
+ The object did not come from the corresponding async method on this type.-or- was called multiple times with the same .
+ The destination path was not found on the remote host.
+
+
+
+ Ends an asynchronous uploading the stream into remote file.
+
+ The pending asynchronous SFTP request.
+ The object did not come from the corresponding async method on this type.-or- was called multiple times with the same .
+ Client is not connected.
+ The directory of the file was not found on the remote host.
+ Permission to upload the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+
+
+
+ Checks whether file or directory exists;
+
+ The path.
+
+ true if directory or file exists; otherwise false.
+
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to perform the operation was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Gets reference to remote file or directory.
+
+ The path.
+
+ A reference to file object.
+
+ Client is not connected.
+ was not found on the remote host.
+ is null.
+ The method was called after the client was disposed.
+
+
+
+ Gets the of the file on the path.
+
+ The path to the file.
+
+ The of the file on the path.
+
+ is null.
+ Client is not connected.
+ was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Returns the date and time the specified file or directory was last accessed.
+
+ The file or directory for which to obtain access date and time information.
+
+ A structure set to the date and time that the specified file or directory was last accessed.
+ This value is expressed in local time.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last accessed.
+
+ The file or directory for which to obtain access date and time information.
+
+ A structure set to the date and time that the specified file or directory was last accessed.
+ This value is expressed in UTC time.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Returns the date and time the specified file or directory was last written to.
+
+ The file or directory for which to obtain write date and time information.
+
+ A structure set to the date and time that the specified file or directory was last written to.
+ This value is expressed in local time.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last written to.
+
+ The file or directory for which to obtain write date and time information.
+
+ A structure set to the date and time that the specified file or directory was last written to.
+ This value is expressed in UTC time.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Gets status using statvfs@openssh.com request.
+
+ The path.
+
+ A instance that contains file status information.
+
+ Client is not connected.
+ is null.
+ The method was called after the client was disposed.
+
+
+
+ Retrieves list of files in remote directory.
+
+ The path.
+ The list callback.
+
+ A list of files.
+
+ is null.
+ Client is not connected.
+ Permission to list the contents of the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Opens a on the specified path with read/write access.
+
+ The file to open.
+ A value that specifies whether a file is created if one does not exist, and determines whether the contents of existing files are retained or overwritten.
+
+ An unshared that provides access to the specified file, with the specified mode and read/write access.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a on the specified path, with the specified mode and access.
+
+ The file to open.
+ A value that specifies whether a file is created if one does not exist, and determines whether the contents of existing files are retained or overwritten.
+ A value that specifies the operations that can be performed on the file.
+
+ An unshared that provides access to the specified file, with the specified mode and access.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens an existing file for reading.
+
+ The file to be opened for reading.
+
+ A read-only on the specified path.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens an existing UTF-8 encoded text file for reading.
+
+ The file to be opened for reading.
+
+ A on the specified path.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a file for writing.
+
+ The file to be opened for writing.
+
+ An unshared object on the specified path with access.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+ If the file does not exist, it is created.
+
+
+
+
+ Opens a binary file, reads the contents of the file into a byte array, and closes the file.
+
+ The file to open for reading.
+
+ A byte array containing the contents of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a text file, reads all lines of the file using UTF-8 encoding, and closes the file.
+
+ The file to open for reading.
+
+ A string array containing all lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a file, reads all lines of the file with the specified encoding, and closes the file.
+
+ The file to open for reading.
+ The encoding applied to the contents of the file.
+
+ A string array containing all lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a text file, reads all lines of the file with the UTF-8 encoding, and closes the file.
+
+ The file to open for reading.
+
+ A string containing all lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a file, reads all lines of the file with the specified encoding, and closes the file.
+
+ The file to open for reading.
+ The encoding applied to the contents of the file.
+
+ A string containing all lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Reads the lines of a file with the UTF-8 encoding.
+
+ The file to read.
+
+ The lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Read the lines of a file that has a specified encoding.
+
+ The file to read.
+ The encoding that is applied to the contents of the file.
+
+ The lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Renames remote file from old path to new path.
+
+ Path to the old file location.
+ Path to the new file location.
+ is null. -or- or is null.
+ Client is not connected.
+ Permission to rename the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Renames remote file from old path to new path.
+
+ Path to the old file location.
+ Path to the new file location.
+ if set to true then perform a posix rename.
+ is null. -or- or is null.
+ Client is not connected.
+ Permission to rename the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Sets the specified of the file on the specified path.
+
+ The path to the file.
+ The desired .
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Creates a symbolic link from old path to new path.
+
+ The old path.
+ The new path.
+ is null. -or- is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to create the symbolic link was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Synchronizes the directories.
+
+ The source path.
+ The destination path.
+ The search pattern.
+
+ A list of uploaded files.
+
+ is null.
+ is null or contains only whitespace.
+ was not found on the remote host.
+
+
+
+ Uploads stream into remote file.
+
+ Data input stream.
+ Remote file path.
+ The upload callback.
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to upload the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Uploads stream into remote file.
+
+ Data input stream.
+ Remote file path.
+ if set to true then existing file will be overwritten.
+ The upload callback.
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to upload the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Writes the specified byte array to the specified file, and closes the file.
+
+ The file to write to.
+ The bytes to write to the file.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Writes a collection of strings to the file using the UTF-8 encoding, and closes the file.
+
+ The file to write to.
+ The lines to write to the file.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ The characters are written to the file using UTF-8 encoding without a Byte-Order Mark (BOM).
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Writes a collection of strings to the file using the specified encoding, and closes the file.
+
+ The file to write to.
+ The lines to write to the file.
+ The character encoding to use.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Write the specified string array to the file using the UTF-8 encoding, and closes the file.
+
+ The file to write to.
+ The string array to write to the file.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ The characters are written to the file using UTF-8 encoding without a Byte-Order Mark (BOM).
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Writes the specified string array to the file by using the specified encoding, and closes the file.
+
+ The file to write to.
+ The string array to write to the file.
+ An object that represents the character encoding applied to the string array.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Writes the specified string to the file using the UTF-8 encoding, and closes the file.
+
+ The file to write to.
+ The string to write to the file.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ The characters are written to the file using UTF-8 encoding without a Byte-Order Mark (BOM).
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Writes the specified string to the file using the specified encoding, and closes the file.
+
+ The file to write to.
+ The string to write to the file.
+ The encoding to apply to the string.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Base interface for SSH subsystem implementations.
+
+
+
+
+ Gets or set the number of seconds to wait for an operation to complete.
+
+
+ The number of seconds to wait for an operation to complete, or -1 to wait indefinitely.
+
+
+
+
+ Gets a value indicating whether this session is open.
+
+
+ true if this session is open; otherwise, false.
+
+
+
+
+ Connects the subsystem using a new SSH channel session.
+
+ The session is already connected.
+ The method was called after the session was disposed.
+
+
+
+ Disconnects the subsystem channel.
+
+
+
+
+ Waits a specified time for a given to get signaled.
+
+ The handle to wait for.
+ The number of millieseconds wait for to get signaled, or -1 to wait indefinitely.
+ The connection was closed by the server.
+ The channel was closed.
+ The handle did not get signaled within the specified timeout.
+
+
+
+ Blocks the current thread until the specified gets signaled, using a
+ 32-bit signed integer to specify the time interval in milliseconds.
+
+ The handle to wait for.
+ To number of milliseconds to wait for to get signaled, or -1 to wait indefinitely.
+
+ true if received a signal within the specified timeout;
+ otherwise, false.
+
+ The connection was closed by the server.
+ The channel was closed.
+
+ The blocking wait is also interrupted when either the established channel is closed, the current
+ session is disconnected or an unexpected occurred while processing a channel
+ or session event.
+
+
+
+
+ Blocks the current thread until the specified gets signaled, using a
+ 32-bit signed integer to specify the time interval in milliseconds.
+
+ The first handle to wait for.
+ The second handle to wait for.
+ To number of milliseconds to wait for a to get signaled, or -1 to wait indefinitely.
+
+ 0 if received a signal within the specified timeout and 1
+ if received a signal within the specified timeout, or
+ if no object satisfied the wait.
+
+ The connection was closed by the server.
+ The channel was closed.
+
+
+ The blocking wait is also interrupted when either the established channel is closed, the current
+ session is disconnected or an unexpected occurred while processing a channel
+ or session event.
+
+
+ When both and are signaled during the call,
+ then 0 is returned.
+
+
+
+
+
+ Waits for any of the elements in the specified array to receive a signal, using a 32-bit signed
+ integer to specify the time interval.
+
+ A array - constructed using - containing the objects to wait for.
+ To number of milliseconds to wait for a to get signaled, or -1 to wait indefinitely.
+
+ The array index of the first non-system object that satisfied the wait.
+
+ The connection was closed by the server.
+ The channel was closed.
+ No object satified the wait and a time interval equivalent to has passed.
+
+ For the return value, the index of the first non-system object is considered to be zero.
+
+
+
+
+ Creates a array that is composed of system objects and the specified
+ elements.
+
+ A array containing the objects to wait for.
+
+ A array that is composed of system objects and the specified elements.
+
+
+
+
+ Creates a array that is composed of system objects and the specified
+ elements.
+
+ The first to wait for.
+ The second to wait for.
+
+ A array that is composed of system objects and the specified elements.
+
+
+
+
+ Provides functionality to perform keyboard interactive authentication.
+
+
+
+
+ Gets authentication method name
+
+
+
+
+ Occurs when server prompts for more authentication information.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The username.
+ is whitespace or null.
+
+
+
+ Authenticates the specified session.
+
+ The session to authenticate.
+ Result of authentication process.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Provides connection information when keyboard interactive authentication method is used
+
+
+
+
+
+
+
+ Occurs when server prompts for more authentication information.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The host.
+ The username.
+
+
+
+ Initializes a new instance of the class.
+
+ The host.
+ The port.
+ The username.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+ The proxy password.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+ The proxy password.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Provides data for message events.
+
+ Message type
+
+
+
+ Gets the message.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The message.
+ is null.
+
+
+
+ Represents SSH_MSG_USERAUTH_BANNER message.
+
+
+
+
+ Gets banner message.
+
+
+
+
+ Gets banner language.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_USERAUTH_FAILURE message.
+
+
+
+
+ Gets or sets the allowed authentications if available.
+
+
+ The allowed authentications.
+
+
+
+
+ Gets failure message.
+
+
+
+
+ Gets a value indicating whether authentication is partially successful.
+
+
+ true if partially successful; otherwise, false.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_USERAUTH_INFO_REQUEST message.
+
+
+
+
+ Gets information request name.
+
+
+
+
+ Gets information request instruction.
+
+
+
+
+ Gets information request language.
+
+
+
+
+ Gets information request prompts.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_USERAUTH_INFO_RESPONSE message.
+
+
+
+
+ Gets authentication responses.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ -1 to indicate that the size of the message cannot be determined,
+ or is too costly to calculate.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_USERAUTH_PASSWD_CHANGEREQ message.
+
+
+
+
+ Gets password change request message as UTF-8 encoded byte array.
+
+
+
+
+ Gets message language as UTF-8 encoded byte array.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_USERAUTH_PK_OK message.
+
+
+
+
+ Gets the name of the public key algorithm as ASCII encoded byte array.
+
+
+ The name of the public key algorithm.
+
+
+
+
+ Gets the public key data.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_USERAUTH_REQUEST message. Server as a base message for other user authentication requests.
+
+
+
+
+ Returns the authentication message code for SSH_MSG_USERAUTH_REQUEST.
+
+
+
+
+ Gets authentication username as UTF-8 encoded byte array.
+
+
+
+
+ Gets the name of the service as ASCII encoded byte array.
+
+
+ The name of the service.
+
+
+
+
+ Gets the name of the authentication method.
+
+
+ The name of the method.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the service.
+ Authentication username.
+ The name of the authentication method.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "hostbased" SSH_MSG_USERAUTH_REQUEST message.
+
+
+
+
+ Gets the public key algorithm for host key as ASCII encoded byte array.
+
+
+
+
+ Gets or sets the public host key and certificates for client host.
+
+
+ The public host key.
+
+
+
+
+ Gets or sets the name of the client host as ASCII encoded byte array.
+
+
+ The name of the client host.
+
+
+
+
+ Gets or sets the client username on the client host as UTF-8 encoded byte array.
+
+
+ The client username.
+
+
+
+
+ Gets or sets the signature.
+
+
+ The signature.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the service.
+ Authentication username.
+ The public key algorithm.
+ The public host key.
+ Name of the client host.
+ The client username.
+ The signature.
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "keyboard-interactive" SSH_MSG_USERAUTH_REQUEST message.
+
+
+
+
+ Gets message language.
+
+
+
+
+ Gets authentication sub methods.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the service.
+ Authentication username.
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "none" SSH_MSG_USERAUTH_REQUEST message.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the service.
+ Authentication username.
+
+
+
+ Represents "password" SSH_MSG_USERAUTH_REQUEST message.
+
+
+
+
+ Gets authentication password.
+
+
+
+
+ Gets new authentication password.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the service.
+ Authentication username.
+ Authentication password.
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the service.
+ Authentication username.
+ Authentication password.
+ New authentication password.
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "publickey" SSH_MSG_USERAUTH_REQUEST message.
+
+
+
+
+ Gets the name of the public key algorithm as ASCII encoded byte array.
+
+
+ The name of the public key algorithm.
+
+
+
+
+ Gets the public key data.
+
+
+
+
+ Gets or sets public key signature.
+
+
+ The signature.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the service.
+ Authentication username.
+ Name of private key algorithm.
+ Private key data.
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the service.
+ Authentication username.
+ Name of private key algorithm.
+ Private key data.
+ Private key signature.
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_USERAUTH_SUCCESS message.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Gets the address to bind to.
+
+
+
+
+ Gets port number to bind to.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_CHANNEL_CLOSE message.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+
+
+
+ Represents SSH_MSG_CHANNEL_DATA message.
+
+
+
+
+ Gets or sets message data.
+
+
+ The data.
+
+
+ The actual data to read or write depends on the and .
+
+
+
+
+ Gets the zero-based offset in at which the data begins.
+
+
+ The zero-based offset in at which the data begins.
+
+
+
+
+ Gets the number of bytes of to read or write.
+
+
+ The number of bytes of to read or write.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+ Message data.
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+ The message data.
+ The zero-based byte offset in at which to begin reading or writing data from.
+ The number of bytes of to read or write.
+
+
+
+ Loads the data.
+
+
+
+
+ Saves the data.
+
+
+
+
+ Represents SSH_MSG_CHANNEL_EOF message.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+
+
+
+ Represents SSH_MSG_CHANNEL_EXTENDED_DATA message.
+
+
+
+
+ Gets message data type code.
+
+
+
+
+ Gets message data.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+ The message data type code.
+ The message data.
+
+
+
+ Loads the data.
+
+
+
+
+ Saves the data.
+
+
+
+
+ Represents SSH_MSG_CHANNEL_FAILURE message.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+
+
+
+ Base class for all channel specific SSH messages.
+
+
+
+
+ Gets or sets the local channel number.
+
+
+ The local channel number.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new .
+
+
+
+
+ Initializes a new with the specified local channel number.
+
+ The local channel number.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Represents SSH_MSG_CHANNEL_OPEN_CONFIRMATION message.
+
+
+
+
+ Gets the remote channel number.
+
+
+
+
+ Gets the initial size of the window.
+
+
+ The initial size of the window.
+
+
+
+
+ Gets the maximum size of the packet.
+
+
+ The maximum size of the packet.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+ Initial size of the window.
+ Maximum size of the packet.
+ The remote channel number.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_CHANNEL_OPEN_FAILURE message.
+
+
+
+
+ Gets failure reason code.
+
+
+
+
+ Gets description for failure.
+
+
+
+
+ Gets message language.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+ The description.
+ The reason code.
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+ The description.
+ The reason code.
+ The language (RFC3066).
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ List channel open failure reasons defined by the protocol.
+
+
+
+
+ SSH_OPEN_ADMINISTRATIVELY_PROHIBITED
+
+
+
+
+ SSH_OPEN_CONNECT_FAILED
+
+
+
+
+ SSH_OPEN_UNKNOWN_CHANNEL_TYPE
+
+
+
+
+ SSH_OPEN_RESOURCE_SHORTAGE
+
+
+
+
+ Base class for open channel messages
+
+
+
+
+ Gets the type of the channel to open.
+
+
+ The type of the channel to open.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_CHANNEL_OPEN message.
+
+
+
+
+ Gets the type of the channel as ASCII encoded byte array.
+
+
+ The type of the channel.
+
+
+
+
+ Gets or sets the local channel number.
+
+
+ The local channel number.
+
+
+
+
+ Gets the initial size of the window.
+
+
+ The initial size of the window.
+
+
+
+
+ Gets the maximum size of the packet.
+
+
+ The maximum size of the packet.
+
+
+
+
+ Gets channel specific open information.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The channel number.
+ Initial size of the window.
+ Maximum size of the packet.
+ Information specific to the type of the channel to open.
+ is null.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Used to open "direct-tcpip" channel type
+
+
+
+
+ Specifies channel open type
+
+
+
+
+ Gets the type of the channel to open.
+
+
+ The type of the channel to open.
+
+
+
+
+ Gets the host to connect.
+
+
+
+
+ Gets the port to connect.
+
+
+
+
+ Gets the originator address.
+
+
+
+
+ Gets the originator port.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class from the
+ specified data.
+
+ is null.
+
+
+
+ Initializes a new instance of the class.
+
+ The host to connect.
+ The port to connect.
+ The originator address.
+ The originator port.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Used to open "forwarded-tcpip" channel type
+
+
+
+
+ Initializes a new instance of the class from the
+ specified data.
+
+ is null.
+
+
+
+ Initializes a new instance with the specified connector
+ address and port, and originator address and port.
+
+
+
+
+ Specifies channel open type
+
+
+
+
+ Gets the type of the channel to open.
+
+
+ The type of the channel to open.
+
+
+
+
+ Gets the connected address.
+
+
+
+
+ Gets the connected port.
+
+
+
+
+ Gets the originator address.
+
+
+
+
+ Gets the originator port.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Used to open "session" channel type
+
+
+
+
+ Specifies channel open type
+
+
+
+
+ Gets the type of the channel to open.
+
+
+ The type of the channel to open.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class from the
+ specified data.
+
+ is null.
+
+
+
+ Used to open "x11" channel type
+
+
+
+
+ Specifies channel open type
+
+
+
+
+ Gets the type of the channel to open.
+
+
+ The type of the channel to open.
+
+
+
+
+ Gets the originator address.
+
+
+
+
+ Gets the originator port.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class from the
+ specified data.
+
+ is null.
+
+
+
+ Initializes a new instance of the class with the
+ specified originator address and port.
+
+ The originator address.
+ The originator port.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "break" type channel request information
+
+
+
+
+ Channel request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets break length in milliseconds.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Length of the break.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_CHANNEL_REQUEST message.
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets channel request data.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+ The info.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "eow@openssh.com" type channel request information
+
+
+
+
+ Channel request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Represents "env" type channel request information
+
+
+
+
+ Channel request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets or sets the name of the variable.
+
+
+ The name of the variable.
+
+
+
+
+ Gets or sets the variable value.
+
+
+ The variable value.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the variable.
+ The variable value.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "exec" type channel request information
+
+
+
+
+ Channel request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets command to execute.
+
+
+ The command.
+
+
+
+
+ Gets the encoding.
+
+
+ The encoding.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The command.
+ The character encoding to use.
+ or is null.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "exit-signal" type channel request information
+
+
+
+
+ Channel request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets the name of the signal.
+
+
+ The name of the signal.
+
+
+
+
+ Gets a value indicating whether core is dumped.
+
+
+ true if core is dumped; otherwise, false.
+
+
+
+
+ Gets the error message.
+
+
+
+
+ Gets message language.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the signal.
+ if set to true then core is dumped.
+ The error message.
+ The language.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "exit-status" type channel request information
+
+
+
+
+ Channel request name.
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets the exit status number.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The exit status number.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "keepalive@openssh.com" type channel request information
+
+
+
+
+ Channel request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Represents "pty-req" type channel request information
+
+
+
+
+ Channel request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets or sets the value of the TERM environment variable (e.g., vt100).
+
+
+ The value of the TERM environment variable.
+
+
+
+
+ Gets or sets the terminal width in columns (e.g., 80).
+
+
+ The terminal width in columns.
+
+
+
+
+ Gets or sets the terminal width in rows (e.g., 24).
+
+
+ The terminal width in rows.
+
+
+
+
+ Gets or sets the terminal width in pixels (e.g., 640).
+
+
+ The terminal width in pixels.
+
+
+
+
+ Gets or sets the terminal height in pixels (e.g., 480).
+
+
+ The terminal height in pixels.
+
+
+
+
+ Gets or sets the terminal mode.
+
+
+ The terminal mode.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ -1 to indicate that the size of the message cannot be determined,
+ or is too costly to calculate.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The TERM environment variable which a identifier for the text window’s capabilities.
+ The terminal width in columns.
+ The terminal width in rows.
+ The terminal height in pixels.
+ The terminal height in pixels.
+ The terminal mode values.
+
+
+ The TERM environment variable contains an identifier for the text window's capabilities.
+ You can get a detailed list of these cababilities by using the ‘infocmp’ command.
+
+
+ The column/row dimensions override the pixel dimensions(when nonzero). Pixel dimensions refer
+ to the drawable area of the window.
+
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents type specific information for channel request.
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets or sets a value indicating whether reply message is needed.
+
+
+ true if reply message is needed; otherwise, false.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "shell" type channel request information
+
+
+
+
+ Channel request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Represents "signal" type channel request information
+
+
+
+
+ Channel request name.
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets the name of the signal.
+
+
+ The name of the signal.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the signal.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "subsystem" type channel request information
+
+
+
+
+ Channel request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets the name of the subsystem.
+
+
+ The name of the subsystem.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The subsystem.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "window-change" type channel request information
+
+
+
+
+ Channe request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets the columns.
+
+
+
+
+ Gets the rows.
+
+
+
+
+ Gets the width.
+
+
+
+
+ Gets the height.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The columns.
+ The rows.
+ The width.
+ The height.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "x11-req" type channel request information
+
+
+
+
+ Channel request name
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets or sets a value indicating whether it is a single connection.
+
+
+ true if it is a single connection; otherwise, false.
+
+
+
+
+ Gets or sets the authentication protocol.
+
+
+ The authentication protocol.
+
+
+
+
+ Gets or sets the authentication cookie.
+
+
+ The authentication cookie.
+
+
+
+
+ Gets or sets the screen number.
+
+
+ The screen number.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true it is a single connection.
+ The protocol.
+ The cookie.
+ The screen number.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents "xon-xoff" type channel request information
+
+
+
+
+ Channel request type
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets or sets a value indicating whether client can do.
+
+
+ true if client can do; otherwise, false.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ if set to true [client can do].
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_CHANNEL_SUCCESS message.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+
+
+
+ Represents SSH_MSG_CHANNEL_SUCCESS message.
+
+
+
+
+ Gets number of bytes to add to the window.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The local channel number.
+ The bytes to add.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_GLOBAL_REQUEST message.
+
+
+
+
+ Gets the name of the request.
+
+
+ The name of the request.
+
+
+
+
+ Gets a value indicating whether message reply should be sent..
+
+
+ true if message reply should be sent; otherwise, false.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the request.
+ if set to true [want reply].
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Specifies supported request names.
+
+
+
+
+ tcpip-forward
+
+
+
+
+ cancel-tcpip-forward
+
+
+
+
+ Represents SSH_MSG_REQUEST_FAILURE message.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_REQUEST_SUCCESS message.
+
+
+
+
+ Gets the bound port.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The bound port.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Gets the address to bind to.
+
+
+
+
+ Gets port number to bind to.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Base class for all SSH protocol messages
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Writes the message to the specified .
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Process the current message for the specified .
+
+ The for which to process the current message.
+
+
+
+ Indicates that a class represents SSH message. This class cannot be inherited.
+
+
+
+
+ Gets or sets message name as defined in RFC 4250.
+
+
+ The name.
+
+
+
+
+ Gets or sets message number as defined in RFC 4250.
+
+
+ The number.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The name.
+ The number.
+
+
+
+ Specifies list of supported services
+
+
+
+
+ ssh-userauth
+
+
+
+
+ ssh-connection
+
+
+
+
+ Represents SSH_MSG_DEBUG message.
+
+
+
+
+ Gets a value indicating whether the message to be always displayed.
+
+
+ true if the message always to be displayed; otherwise, false.
+
+
+
+
+ Gets debug message.
+
+
+
+
+ Gets message language.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_DISCONNECT message.
+
+
+
+
+ Gets disconnect reason code.
+
+
+
+
+ Gets disconnect description.
+
+
+
+
+ Gets message language.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The reason code.
+ The message.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Provides list of disconnect reason as specified by the protocol.
+
+
+
+
+ Disconnect reason is not provided.
+
+
+
+
+ SSH_DISCONNECT_HOST_NOT_ALLOWED_TO_CONNECT
+
+
+
+
+ SSH_DISCONNECT_PROTOCOL_ERROR
+
+
+
+
+ SSH_DISCONNECT_KEY_EXCHANGE_FAILED
+
+
+
+
+ SSH_DISCONNECT_RESERVED
+
+
+
+
+ SSH_DISCONNECT_MAC_ERROR
+
+
+
+
+ SSH_DISCONNECT_COMPRESSION_ERROR
+
+
+
+
+ SSH_DISCONNECT_SERVICE_NOT_AVAILABLE
+
+
+
+
+ SSH_DISCONNECT_PROTOCOL_VERSION_NOT_SUPPORTED
+
+
+
+
+ SSH_DISCONNECT_HOST_KEY_NOT_VERIFIABLE
+
+
+
+
+ SSH_DISCONNECT_CONNECTION_LOST
+
+
+
+
+ SSH_DISCONNECT_BY_APPLICATION
+
+
+
+
+ SSH_DISCONNECT_TOO_MANY_CONNECTIONS
+
+
+
+
+ SSH_DISCONNECT_AUTH_CANCELLED_BY_USER
+
+
+
+
+ SSH_DISCONNECT_NO_MORE_AUTH_METHODS_AVAILABLE
+
+
+
+
+ SSH_DISCONNECT_ILLEGAL_USER_NAME
+
+
+
+
+ Represents SSH_MSG_IGNORE message.
+
+
+
+
+ Gets ignore message data if any.
+
+
+
+
+ Initializes a new instance of the class
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The data.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Indicates that message that implement this interface is allowed during key exchange phase
+
+
+
+
+ Represents SSH_MSG_KEX_DH_GEX_GROUP message.
+
+
+
+
+ Gets or sets the safe prime.
+
+
+ The safe prime.
+
+
+
+
+ Gets or sets the generator for subgroup in GF(p).
+
+
+ The sub group.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_KEX_DH_GEX_INIT message.
+
+
+
+
+ Gets the E value.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The client exchange value.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_KEX_DH_GEX_REPLY message.
+
+
+
+
+ Gets server public host key and certificates
+
+ The host key.
+
+
+
+ Gets the F value.
+
+
+
+
+ Gets the signature of H.
+
+ The signature.
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_KEX_DH_GEX_REQUEST message.
+
+
+
+
+ Gets or sets the minimal size in bits of an acceptable group.
+
+
+ The minimum.
+
+
+
+
+ Gets or sets the preferred size in bits of the group the server will send.
+
+
+ The preferred.
+
+
+
+
+ Gets or sets the maximal size in bits of an acceptable group.
+
+
+ The maximum.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The minimum.
+ The preferred.
+ The maximum.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_KEXDH_INIT message.
+
+
+
+
+ Gets the E value.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The client exchange value.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_KEXDH_REPLY message.
+
+
+
+
+ Gets server public host key and certificates
+
+ The host key.
+
+
+
+ Gets the F value.
+
+
+
+
+ Gets the signature of H.
+
+ The signature.
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_KEXECDH_INIT message.
+
+
+
+
+ Gets the client's ephemeral contribution to the ECDH exchange, encoded as an octet string
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_KEXECDH_REPLY message.
+
+
+
+
+ Gets a string encoding an X.509v3 certificate containing the server's ECDSA public host key
+
+ The host key.
+
+
+
+ Gets the server's ephemeral contribution to the ECDH exchange, encoded as an octet string.
+
+
+
+
+ Gets an octet string containing the server's signature of the newly established exchange hash value.
+
+ The signature.
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_KEXINIT message.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Gets session cookie.
+
+
+
+
+ Gets or sets supported key exchange algorithms.
+
+
+ Supported key exchange algorithms.
+
+
+
+
+ Gets or sets supported server host key algorithms.
+
+
+ Supported server host key algorithms.
+
+
+
+
+ Gets or sets supported encryption algorithms client to server.
+
+
+ Supported encryption algorithms client to server.
+
+
+
+
+ Gets or sets supported encryption algorithms server to client.
+
+
+ Supported encryption algorithms server to client.
+
+
+
+
+ Gets or sets supported hash algorithms client to server.
+
+
+ Supported hash algorithms client to server.
+
+
+
+
+ Gets or sets supported hash algorithms server to client.
+
+
+ Supported hash algorithms server to client.
+
+
+
+
+ Gets or sets supported compression algorithms client to server.
+
+
+ Supported compression algorithms client to server.
+
+
+
+
+ Gets or sets supported compression algorithms server to client.
+
+
+ Supported compression algorithms server to client.
+
+
+
+
+ Gets or sets supported languages client to server.
+
+
+ Supported languages client to server.
+
+
+
+
+ Gets or sets supported languages server to client.
+
+
+ The languages server to client.
+
+
+
+
+ Gets or sets a value indicating whether first key exchange packet follows.
+
+
+ true if first key exchange packet follows; otherwise, false.
+
+
+
+
+ Gets or sets the reserved value.
+
+
+ The reserved value.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ -1 to indicate that the size of the message cannot be determined,
+ or is too costly to calculate.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_NEWKEYS message.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_SERVICE_ACCEPT message.
+
+
+
+
+ Gets the name of the service.
+
+
+ The name of the service.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_SERVICE_REQUEST message.
+
+
+
+
+ Gets the name of the service.
+
+
+ The name of the service.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the service.
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Represents SSH_MSG_UNIMPLEMENTED message.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Contains operation for working with NetConf server.
+
+
+
+
+ Holds instance that used to communicate to the server
+
+
+
+
+ Gets or sets the operation timeout.
+
+
+ The timeout to wait until an operation completes. The default value is negative
+ one (-1) milliseconds, which indicates an infinite time-out period.
+
+ represents a value that is less than -1 or greater than milliseconds.
+
+
+
+ Gets the current NetConf session.
+
+
+ The current NetConf session.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ is null.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Authentication username.
+ Authentication password.
+ is null.
+ is invalid, or is null or contains only whitespace characters.
+ is not within and .
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Authentication username.
+ Authentication password.
+ is null.
+ is invalid, or is null or contains only whitespace characters.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Authentication username.
+ Authentication private key file(s) .
+ is null.
+ is invalid, -or- is null or contains only whitespace characters.
+ is not within and .
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Authentication username.
+ Authentication private key file(s) .
+ is null.
+ is invalid, -or- is null or contains only whitespace characters.
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ Specified whether this instance owns the connection info.
+ is null.
+
+ If is true, then the
+ connection info will be disposed when this instance is disposed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ Specified whether this instance owns the connection info.
+ The factory to use for creating new services.
+ is null.
+ is null.
+
+ If is true, then the
+ connection info will be disposed when this instance is disposed.
+
+
+
+
+ Gets the NetConf server capabilities.
+
+
+ The NetConf server capabilities.
+
+
+
+
+ Gets the NetConf client capabilities.
+
+
+ The NetConf client capabilities.
+
+
+
+
+ Gets or sets a value indicating whether automatic message id handling is
+ enabled.
+
+
+ true if automatic message id handling is enabled; otherwise, false.
+ The default value is true.
+
+
+
+
+ Sends the receive RPC.
+
+ The RPC.
+ Reply message to RPC request
+ Client is not connected.
+
+
+
+ Sends the receive RPC.
+
+ The XML.
+ Reply message to RPC request
+
+
+
+ Sends the close RPC.
+
+ Reply message to closing RPC request
+ Client is not connected.
+
+
+
+ Called when client is connected to the server.
+
+
+
+
+ Called when client is disconnecting from the server.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Gets the NetConf server capabilities.
+
+
+ The NetConf server capabilities.
+
+
+
+
+ Gets the NetConf client capabilities.
+
+
+ The NetConf client capabilities.
+
+
+
+
+ Gets NetConf server capabilities.
+
+
+
+
+ Gets NetConf client capabilities.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The session.
+ The number of milliseconds to wait for an operation to complete, or -1 to wait indefinitely.
+
+
+
+ Provides functionality for "none" authentication method
+
+
+
+
+ Gets connection name
+
+
+
+
+ Initializes a new instance of the class.
+
+ The username.
+ is whitespace or null.
+
+
+
+ Authenticates the specified session.
+
+ The session.
+
+ Result of authentication process.
+
+ is null.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Provides functionality to perform password authentication.
+
+
+
+
+ Gets authentication method name
+
+
+
+
+ Gets the password as a sequence of bytes.
+
+
+ The password as a sequence of bytes.
+
+
+
+
+ Occurs when user's password has expired and needs to be changed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The username.
+ The password.
+ is whitespace or null.
+ is null.
+
+
+
+ Initializes a new instance of the class.
+
+ The username.
+ The password.
+ is whitespace or null.
+ is null.
+
+
+
+ Authenticates the specified session.
+
+ The session to authenticate.
+
+ Result of authentication process.
+
+ is null.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Provides connection information when password authentication method is used
+
+
+
+
+
+
+
+
+
+ Occurs when user's password has expired and needs to be changed.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Connection password.
+
+
+
+ is null.
+ is invalid, or is null or contains only whitespace characters.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Connection username.
+ Connection password.
+ is null.
+ is invalid, or is null or contains only whitespace characters.
+ is not within and .
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ The port.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ The port.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+ The proxy password.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Connection password.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Connection username.
+ Connection password.
+ is null.
+ is invalid, or is null or contains only whitespace characters.
+ is not within and .
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ The port.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ The port.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+ The proxy password.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ The port.
+ Connection username.
+ Connection password.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+ The proxy password.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Provides functionality to perform private key authentication.
+
+
+
+
+ Gets authentication method name
+
+
+
+
+ Gets the key files used for authentication.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The username.
+ The key files.
+ is whitespace or null.
+
+
+
+ Authenticates the specified session.
+
+ The session to authenticate.
+
+ Result of authentication process.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Provides connection information when private key authentication method is used
+
+
+
+
+
+
+
+ Gets the key files used for authentication.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Connection key files.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Connection username.
+ Connection key files.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ The port.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The key files.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ The port.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+ The key files.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The key files.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+ The key files.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+ The proxy password.
+ The key files.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ The port.
+ Connection username.
+ Type of the proxy.
+ The proxy host.
+ The proxy port.
+ The proxy username.
+ The proxy password.
+ The key files.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Represents private key information.
+
+
+
+
+
+
+ The following private keys are supported:
+
+ -
+ RSA in OpenSSL PEM and ssh.com format
+
+ -
+ DSA in OpenSSL PEM and ssh.com format
+
+ -
+ ECDSA 256/384/521 in OpenSSL PEM format
+
+ -
+ ED25519 in OpenSSH key format
+
+
+
+
+ The following encryption algorithms are supported:
+
+ -
+ DES-EDE3-CBC
+
+ -
+ DES-EDE3-CFB
+
+ -
+ DES-CBC
+
+ -
+ AES-128-CBC
+
+ -
+ AES-192-CBC
+
+ -
+ AES-256-CBC
+
+
+
+
+
+
+
+ Gets the host key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The private key.
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the file.
+ is null or empty.
+ This method calls internally, this method does not catch exceptions from .
+
+
+
+ Initializes a new instance of the class.
+
+ Name of the file.
+ The pass phrase.
+ is null or empty, or is null.
+ This method calls internally, this method does not catch exceptions from .
+
+
+
+ Initializes a new instance of the class.
+
+ The private key.
+ The pass phrase.
+ or is null.
+
+
+
+ Opens the specified private key.
+
+ The private key.
+ The pass phrase.
+
+
+
+ Decrypts encrypted private key file data.
+
+ The cipher info.
+ Encrypted data.
+ Decryption pass phrase.
+ Decryption binary salt.
+ Decrypted byte array.
+ , , or is null.
+
+
+
+ Parses an OpenSSH V1 key file (i.e. ED25519 key) according to the the key spec:
+ https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key.
+
+ the key file data (i.e. base64 encoded data between the header/footer)
+ passphrase or null if there isn't one
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Reads next mpint data type from internal buffer where length specified in bits.
+
+ mpint read.
+
+
+
+ Specifies the type of proxy client will use to connect to server.
+
+
+
+ No proxy server.
+
+
+ A SOCKS4 proxy server.
+
+
+ A SOCKS5 proxy server.
+
+
+ A HTTP proxy server.
+
+
+
+ Encloses a path in double quotes, and escapes any embedded double quote with a backslash.
+
+
+
+
+ Encloses a path in double quotes, and escapes any embedded double quote with a backslash.
+
+ The path to transform.
+
+ The transformed path.
+
+ is null.
+
+
+
+ Original
+ Transformed
+
+ -
+ /var/log/auth.log
+ "/var/log/auth.log"
+
+ -
+ /var/mp3/Guns N' Roses
+ "/var/mp3/Guns N' Roses"
+
+ -
+ /var/garbage!/temp
+ "/var/garbage!/temp"
+
+ -
+ /var/would be 'kewl'!/not?
+ "/var/would be 'kewl'!, not?"
+
+ -
+
+ ""
+
+ -
+ Hello "World"
+ "Hello \"World"
+
+
+
+
+
+
+ Performs no transformation.
+
+
+
+
+ Returns the specified path without applying a transformation.
+
+ The path to transform.
+
+ The specified path as is.
+
+ is null.
+
+ This transformation is recommended for servers that do not require any quoting to preserve the
+ literal value of metacharacters, or when paths are guaranteed to never contain any such characters.
+
+
+
+
+ Quotes a path in a way to be suitable to be used with a shell-based server.
+
+
+
+
+ Quotes a path in a way to be suitable to be used with a shell-based server.
+
+ The path to transform.
+
+ A quoted path.
+
+ is null.
+
+
+ If contains a single-quote, that character is embedded
+ in quotation marks (eg. "'"). Sequences of single-quotes are grouped in a single
+ pair of quotation marks.
+
+
+ An exclamation mark in is escaped with a backslash. This is
+ necessary because C Shell interprets it as a meta-character for history substitution
+ even when enclosed in single quotes or quotation marks.
+
+
+ All other characters are enclosed in single quotes. Sequences of such characters are grouped
+ in a single pair of single quotes.
+
+
+ References:
+
+ -
+ Shell Command Language
+
+ -
+ Unix C-Shell special characters and their uses
+
+ -
+ Differences Between Bourne and C Shell Quoting
+
+
+
+
+
+
+
+ Original
+ Transformed
+
+ -
+ /var/log/auth.log
+ '/var/log/auth.log'
+
+ -
+ /var/mp3/Guns N' Roses
+ '/var/mp3/Guns N'"'"' Roses'
+
+ -
+ /var/garbage!/temp
+ '/var/garbage'\!'/temp'
+
+ -
+ /var/would be 'kewl'!, not?
+ '/var/would be '"'"'kewl'"'"\!', not?'
+
+ -
+
+ ''
+
+ -
+ Hello "World"
+ 'Hello "World"'
+
+
+
+
+
+
+ Provides access to built-in remote path transformations.
+
+
+ References:
+
+ -
+ Shell Command Language
+
+ -
+ Unix C-Shell special characters and their uses
+
+ -
+ Differences Between Bourne and C Shell Quoting
+
+ -
+ Everyone quotes command line arguments the wrong way
+
+
+
+
+
+
+ Quotes a path in a way to be suitable to be used with a shell-based server.
+
+
+ A quoted path.
+
+
+
+ If a path contains a single-quote, that character is embedded in quotation marks (eg. "'").
+ Sequences of single-quotes are grouped in a single pair of quotation marks.
+
+
+ An exclamation mark in a path is escaped with a backslash. This is necessary because C Shell
+ interprets it as a meta-character for history substitution even when enclosed in single quotes
+ or quotation marks.
+
+
+ All other characters are enclosed in single quotes. Sequences of such characters are grouped
+ in a single pair of single quotes.
+
+
+
+
+
+ Original
+ Transformed
+
+ -
+ /var/log/auth.log
+ '/var/log/auth.log'
+
+ -
+ /var/mp3/Guns N' Roses
+ '/var/mp3/Guns N'"'"' Roses'
+
+ -
+ /var/garbage!/temp
+ '/var/garbage'\!'/temp'
+
+ -
+ /var/would be 'kewl'!, not?
+ '/var/would be '"'"'kewl'"'"\!', not?'
+
+ -
+
+ ''
+
+ -
+ Hello "World"
+ 'Hello "World"'
+
+
+
+
+
+
+ Performs no transformation.
+
+
+ Recommended for servers that do not require any character to be escaped or enclosed in quotes,
+ or when paths are guaranteed to never contain any special characters (such as #, ", ', $, ...).
+
+
+
+
+ Encloses a path in double quotes, and escapes any embedded double quote with a backslash.
+
+
+ A transformation that encloses a path in double quotes, and escapes any embedded double quote with
+ a backslash.
+
+
+
+
+ Original
+ Transformed
+
+ -
+ /var/log/auth.log
+ "/var/log/auth.log"
+
+ -
+ /var/mp3/Guns N' Roses
+ "/var/mp3/Guns N' Roses"
+
+ -
+ /var/garbage!/temp
+ "/var/garbage!/temp"
+
+ -
+ /var/would be 'kewl'!, not?
+ "/var/would be 'kewl'!, not?"
+
+ -
+
+ ""
+
+ -
+ Hello "World"
+ "Hello \"World"
+
+
+
+
+
+
+ Provides SCP client functionality.
+
+
+
+ More information on the SCP protocol is available here:
+ https://github.com/net-ssh/net-scp/blob/master/lib/net/scp.rb
+
+
+ Known issues in OpenSSH:
+
+ -
+ Recursive download (-prf) does not deal well with specific UTF-8 and newline characters.
+ Recursive update does not support empty path for uploading to home directory.
+
+
+
+
+
+ Provides SCP client functionality.
+
+
+
+
+ Gets or sets the operation timeout.
+
+
+ The timeout to wait until an operation completes. The default value is negative
+ one (-1) milliseconds, which indicates an infinite time-out period.
+
+
+
+
+ Gets or sets the size of the buffer.
+
+
+ The size of the buffer. The default buffer size is 16384 bytes.
+
+
+
+
+ Gets or sets the transformation to apply to remote paths.
+
+
+ The transformation to apply to remote paths. The default is .
+
+ is null.
+
+
+ This transformation is applied to the remote file or directory path that is passed to the
+ scp command.
+
+
+ See for the transformations that are supplied
+ out-of-the-box with SSH.NET.
+
+
+
+
+
+ Occurs when downloading file.
+
+
+
+
+ Occurs when uploading file.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ is null.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Authentication username.
+ Authentication password.
+ is null.
+ is invalid, or is null or contains only whitespace characters.
+ is not within and .
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Authentication username.
+ Authentication password.
+ is null.
+ is invalid, or is null or contains only whitespace characters.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Authentication username.
+ Authentication private key file(s) .
+ is null.
+ is invalid, -or- is null or contains only whitespace characters.
+ is not within and .
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Authentication username.
+ Authentication private key file(s) .
+ is null.
+ is invalid, -or- is null or contains only whitespace characters.
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ Specified whether this instance owns the connection info.
+ is null.
+
+ If is true, then the
+ connection info will be disposed when this instance is disposed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ Specified whether this instance owns the connection info.
+ The factory to use for creating new services.
+ is null.
+ is null.
+
+ If is true, then the
+ connection info will be disposed when this instance is disposed.
+
+
+
+
+ Uploads the specified stream to the remote host.
+
+ The to upload.
+ A relative or absolute path for the remote file.
+ is null.
+ is a zero-length .
+ A directory with the specified path exists on the remote host.
+ The secure copy execution request was rejected by the server.
+
+
+
+ Downloads the specified file from the remote host to the stream.
+
+ A relative or absolute path for the remote file.
+ The to download the remote file to.
+ is null or contains only whitespace characters.
+ is null.
+ exists on the remote host, and is not a regular file.
+ The secure copy execution request was rejected by the server.
+
+
+
+ Sets mode, size and name of file being upload.
+
+ The channel to perform the upload in.
+ A from which any feedback from the server can be read.
+ The size of the content to upload.
+ The name of the file, without path, to which the content is to be uploaded.
+
+
+ When the SCP transfer is already initiated for a file, a zero-length should
+ be specified for . This prevents the server from uploading the
+ content to a file with path <file path>/ if there's
+ already a directory with this path, and allows us to receive an error response.
+
+
+
+
+
+ Uploads the content of a file.
+
+ The channel to perform the upload in.
+ A from which any feedback from the server can be read.
+ The content to upload.
+ The name of the remote file, without path, to which the content is uploaded.
+
+ is only used for raising the event.
+
+
+
+
+ Checks the return code.
+
+ The output stream.
+
+
+
+ Read a LF-terminated string from the .
+
+ The to read from.
+
+ The string without trailing LF.
+
+
+
+
+ Uploads the specified file to the remote host.
+
+ The file system info.
+ A relative or absolute path for the remote file.
+ is null.
+ is null.
+ is a zero-length .
+ A directory with the specified path exists on the remote host.
+ The secure copy execution request was rejected by the server.
+
+
+
+ Uploads the specified directory to the remote host.
+
+ The directory info.
+ A relative or absolute path for the remote directory.
+ is null.
+ is null.
+ is a zero-length string.
+ does not exist on the remote host, is not a directory or the user does not have the required permission.
+ The secure copy execution request was rejected by the server.
+
+
+
+ Downloads the specified file from the remote host to local file.
+
+ Remote host file name.
+ Local file information.
+ is null.
+ is null or empty.
+ exists on the remote host, and is not a regular file.
+ The secure copy execution request was rejected by the server.
+
+
+
+ Downloads the specified directory from the remote host to local directory.
+
+ Remote host directory name.
+ Local directory information.
+ is null or empty.
+ is null.
+ File or directory with the specified path does not exist on the remote host.
+ The secure copy execution request was rejected by the server.
+
+
+
+ Uploads the and
+ of the next file or directory to upload.
+
+ The channel to perform the upload in.
+ A from which any feedback from the server can be read.
+ The file or directory to upload.
+
+
+
+ Upload the files and subdirectories in the specified directory.
+
+ The channel to perform the upload in.
+ A from which any feedback from the server can be read.
+ The directory to upload.
+
+
+
+ Sets mode and name of the directory being upload.
+
+
+
+
+ Return a value indicating whether the specified path is a valid SCP file path.
+
+ The path to verify.
+
+ if is a valid SCP file path; otherwise, .
+
+
+ To match OpenSSH behavior (introduced as a result of CVE-2018-20685), a file path is considered
+ invalid in any of the following conditions:
+
+ -
+ is a zero-length string.
+
+ -
+ is ".".
+
+ -
+ is "..".
+
+ -
+ contains a forward slash (/).
+
+
+
+
+
+
+ Represents the abstract base class from which all implementations of algorithms must inherit.
+
+
+
+
+ Gets algorithm name.
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ interface that a message digest conforms to.
+
+
+ return the algorithm name
+
+ @return the algorithm name
+
+
+ return the size, in bytes, of the digest produced by this message digest.
+
+ @return the size, in bytes, of the digest produced by this message digest.
+
+
+ return the size, in bytes, of the internal buffer used by this digest.
+
+ @return the size, in bytes, of the internal buffer used by this digest.
+
+
+ update the message digest with a single byte.
+
+ @param inByte the input byte to be entered.
+
+
+ update the message digest with a block of bytes.
+
+ @param input the byte array containing the data.
+ @param inOff the offset into the byte array where the data starts.
+ @param len the length of the data.
+
+
+ Close the digest, producing the final digest value. The doFinal
+ call leaves the digest reset.
+
+ @param output the array the digest is to be copied into.
+ @param outOff the offset into the out array the digest is to start at.
+
+
+ reset the digest back to it's initial state.
+
+
+ The base class for parameters to key generators.
+
+
+ initialise the generator with a source of randomness
+ and a strength (in bits).
+
+ @param random the random byte source.
+ @param strength the size, in bits, of the keys we want to produce.
+
+
+ return the random source associated with this
+ generator.
+
+ @return the generators random source.
+
+
+ return the bit strength for keys produced by this generator,
+
+ @return the strength of the keys this generator produces (in bits).
+
+
+ Generic interface for objects generating random bytes.
+
+
+ Add more seed material to the generator.
+ A byte array to be mixed into the generator's state.
+
+
+ Add more seed material to the generator.
+ A long value to be mixed into the generator's state.
+
+
+ Fill byte array with random values.
+ Array to be filled.
+
+
+ Fill byte array with random values.
+ Array to receive bytes.
+ Index to start filling at.
+ Length of segment to fill.
+
+
+ return a = a + b - b preserved.
+
+
+ unsigned comparison on two arrays - note the arrays may
+ start with leading zeros.
+
+
+ return z = x / y - done in place (z value preserved, x contains the
+ remainder)
+
+
+ return whether or not a BigInteger is probably prime with a
+ probability of 1 - (1/2)**certainty.
+ From Knuth Vol 2, pg 395.
+
+
+ Calculate the numbers u1, u2, and u3 such that:
+
+ u1 * a + u2 * b = u3
+
+ where u3 is the greatest common divider of a and b.
+ a and b using the extended Euclid algorithm (refer p. 323
+ of The Art of Computer Programming vol 2, 2nd ed).
+ This also seems to have the side effect of calculating
+ some form of multiplicative inverse.
+
+ @param a First number to calculate gcd for
+ @param b Second number to calculate gcd for
+ @param u1Out the return object for the u1 value
+ @return The greatest common divisor of a and b
+
+
+ return w with w = x * x - w is assumed to have enough space.
+
+
+ return x with x = y * z - x is assumed to have enough space.
+
+
+ Calculate mQuote = -m^(-1) mod b with b = 2^32 (32 = word size)
+
+
+ Montgomery multiplication: a = x * y * R^(-1) mod m
+
+ Based algorithm 14.36 of Handbook of Applied Cryptography.
+
+ m, x, y should have length n
+ a should have length (n + 1)
+ b = 2^32, R = b^n
+
+ The result is put in x
+
+ NOTE: the indices of x, y, m, a different in HAC and in Java
+
+
+ return x = x % y - done in place (y value preserved)
+
+
+ do a left shift - this returns a new array.
+
+
+ do a right shift - this does it in place.
+
+
+ do a right shift by one - this does it in place.
+
+
+ returns x = x - y - we assume x is >= y
+
+
+ Class representing a simple version of a big decimal. A
+ SimpleBigDecimal
is basically a
+ {@link java.math.BigInteger BigInteger} with a few digits on the right of
+ the decimal point. The number of (binary) digits on the right of the decimal
+ point is called the scale
of the SimpleBigDecimal
.
+ Unlike in {@link java.math.BigDecimal BigDecimal}, the scale is not adjusted
+ automatically, but must be set manually. All SimpleBigDecimal
s
+ taking part in the same arithmetic operation must have equal scale. The
+ result of a multiplication of two SimpleBigDecimal
s returns a
+ SimpleBigDecimal
with double scale.
+
+
+ Returns a SimpleBigDecimal
representing the same numerical
+ value as value
.
+ @param value The value of the SimpleBigDecimal
to be
+ created.
+ @param scale The scale of the SimpleBigDecimal
to be
+ created.
+ @return The such created SimpleBigDecimal
.
+
+
+ Constructor for SimpleBigDecimal
. The value of the
+ constructed SimpleBigDecimal
Equals bigInt /
+ 2scale
.
+ @param bigInt The bigInt
value parameter.
+ @param scale The scale of the constructed SimpleBigDecimal
.
+
+
+ Class holding methods for point multiplication based on the window
+ τ-adic nonadjacent form (WTNAF). The algorithms are based on the
+ paper "Improved Algorithms for Arithmetic on Anomalous Binary Curves"
+ by Jerome A. Solinas. The paper first appeared in the Proceedings of
+ Crypto 1997.
+
+
+ The window width of WTNAF. The standard value of 4 is slightly less
+ than optimal for running time, but keeps space requirements for
+ precomputation low. For typical curves, a value of 5 or 6 results in
+ a better running time. When changing this value, the
+ αu
's must be computed differently, see
+ e.g. "Guide to Elliptic Curve Cryptography", Darrel Hankerson,
+ Alfred Menezes, Scott Vanstone, Springer-Verlag New York Inc., 2004,
+ p. 121-122
+
+
+ 24
+
+
+ The αu
's for a=0
as an array
+ of ZTauElement
s.
+
+
+ The αu
's for a=0
as an array
+ of TNAFs.
+
+
+ The αu
's for a=1
as an array
+ of ZTauElement
s.
+
+
+ The αu
's for a=1
as an array
+ of TNAFs.
+
+
+ Computes the norm of an element λ
of
+ Z[τ]
.
+ @param mu The parameter μ
of the elliptic curve.
+ @param lambda The element λ
of
+ Z[τ]
.
+ @return The norm of λ
.
+
+
+ Computes the norm of an element λ
of
+ R[τ]
, where λ = u + vτ
+ and u
and u
are real numbers (elements of
+ R
).
+ @param mu The parameter μ
of the elliptic curve.
+ @param u The real part of the element λ
of
+ R[τ]
.
+ @param v The τ
-adic part of the element
+ λ
of R[τ]
.
+ @return The norm of λ
.
+
+
+ Rounds an element λ
of R[τ]
+ to an element of Z[τ]
, such that their difference
+ has minimal norm. λ
is given as
+ λ = λ0 + λ1τ
.
+ @param lambda0 The component λ0
.
+ @param lambda1 The component λ1
.
+ @param mu The parameter μ
of the elliptic curve. Must
+ equal 1 or -1.
+ @return The rounded element of Z[τ]
.
+ @throws ArgumentException if lambda0
and
+ lambda1
do not have same scale.
+
+
+ Approximate division by n
. For an integer
+ k
, the value λ = s k / n
is
+ computed to c
bits of accuracy.
+ @param k The parameter k
.
+ @param s The curve parameter s0
or
+ s1
.
+ @param vm The Lucas Sequence element Vm
.
+ @param a The parameter a
of the elliptic curve.
+ @param m The bit length of the finite field
+ Fm
.
+ @param c The number of bits of accuracy, i.e. the scale of the returned
+ SimpleBigDecimal
.
+ @return The value λ = s k / n
computed to
+ c
bits of accuracy.
+
+
+ Computes the τ
-adic NAF (non-adjacent form) of an
+ element λ
of Z[τ]
.
+ @param mu The parameter μ
of the elliptic curve.
+ @param lambda The element λ
of
+ Z[τ]
.
+ @return The τ
-adic NAF of λ
.
+
+
+ Applies the operation τ()
to an
+ AbstractF2mPoint
.
+ @param p The AbstractF2mPoint to which τ()
is applied.
+ @return τ(p)
+
+
+ Returns the parameter μ
of the elliptic curve.
+ @param curve The elliptic curve from which to obtain μ
.
+ The curve must be a Koblitz curve, i.e. a
Equals
+ 0
or 1
and b
Equals
+ 1
.
+ @return μ
of the elliptic curve.
+ @throws ArgumentException if the given ECCurve is not a Koblitz
+ curve.
+
+
+ Calculates the Lucas Sequence elements Uk-1
and
+ Uk
or Vk-1
and
+ Vk
.
+ @param mu The parameter μ
of the elliptic curve.
+ @param k The index of the second element of the Lucas Sequence to be
+ returned.
+ @param doV If set to true, computes Vk-1
and
+ Vk
, otherwise Uk-1
and
+ Uk
.
+ @return An array with 2 elements, containing Uk-1
+ and Uk
or Vk-1
+ and Vk
.
+
+
+ Computes the auxiliary value tw
. If the width is
+ 4, then for mu = 1
, tw = 6
and for
+ mu = -1
, tw = 10
+ @param mu The parameter μ
of the elliptic curve.
+ @param w The window width of the WTNAF.
+ @return the auxiliary value tw
+
+
+ Computes the auxiliary values s0
and
+ s1
used for partial modular reduction.
+ @param curve The elliptic curve for which to compute
+ s0
and s1
.
+ @throws ArgumentException if curve
is not a
+ Koblitz curve (Anomalous Binary Curve, ABC).
+
+
+ Partial modular reduction modulo
+ (τm - 1)/(τ - 1)
.
+ @param k The integer to be reduced.
+ @param m The bitlength of the underlying finite field.
+ @param a The parameter a
of the elliptic curve.
+ @param s The auxiliary values s0
and
+ s1
.
+ @param mu The parameter μ of the elliptic curve.
+ @param c The precision (number of bits of accuracy) of the partial
+ modular reduction.
+ @return ρ := k partmod (τm - 1)/(τ - 1)
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by a BigInteger
using the reduced τ
-adic
+ NAF (RTNAF) method.
+ @param p The AbstractF2mPoint to Multiply.
+ @param k The BigInteger
by which to Multiply p
.
+ @return k * p
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
+ using the τ
-adic NAF (TNAF) method.
+ @param p The AbstractF2mPoint to Multiply.
+ @param lambda The element λ
of
+ Z[τ]
.
+ @return λ * p
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
+ using the τ
-adic NAF (TNAF) method, given the TNAF
+ of λ
.
+ @param p The AbstractF2mPoint to Multiply.
+ @param u The the TNAF of λ
..
+ @return λ * p
+
+
+ Computes the [τ]
-adic window NAF of an element
+ λ
of Z[τ]
.
+ @param mu The parameter μ of the elliptic curve.
+ @param lambda The element λ
of
+ Z[τ]
of which to compute the
+ [τ]
-adic NAF.
+ @param width The window width of the resulting WNAF.
+ @param pow2w 2width.
+ @param tw The auxiliary value tw
.
+ @param alpha The αu
's for the window width.
+ @return The [τ]
-adic window NAF of
+ λ
.
+
+
+ Does the precomputation for WTNAF multiplication.
+ @param p The ECPoint
for which to do the precomputation.
+ @param a The parameter a
of the elliptic curve.
+ @return The precomputation array for p
.
+
+
+ Class representing an element of Z[τ]
. Let
+ λ
be an element of Z[τ]
. Then
+ λ
is given as λ = u + vτ
. The
+ components u
and v
may be used directly, there
+ are no accessor methods.
+ Immutable class.
+
+
+ The "real" part of λ
.
+
+
+ The "τ
-adic" part of λ
.
+
+
+ Constructor for an element λ
of
+ Z[τ]
.
+ @param u The "real" part of λ
.
+ @param v The "τ
-adic" part of
+ λ
.
+
+
+ Simple shift-and-add multiplication. Serves as reference implementation
+ to verify (possibly faster) implementations, and for very small scalars.
+
+ @param p
+ The point to multiply.
+ @param k
+ The multiplier.
+ @return The result of the point multiplication kP
.
+
+
+ Base class for an elliptic curve.
+
+
+ Compute a PreCompInfo
for a point on this curve, under a given name. Used by
+ ECMultiplier
s to save the precomputation for this ECPoint
for use
+ by subsequent multiplication.
+
+ @param point
+ The ECPoint
to store precomputations for.
+ @param name
+ A String
used to index precomputations of different types.
+ @param callback
+ Called to calculate the PreCompInfo
.
+
+
+ Normalization ensures that any projective coordinate is 1, and therefore that the x, y
+ coordinates reflect those of the equivalent point in an affine coordinate system. Where more
+ than one point is to be normalized, this method will generally be more efficient than
+ normalizing each point separately.
+
+ @param points
+ An array of points that will be updated in place with their normalized versions,
+ where necessary
+
+
+ Normalization ensures that any projective coordinate is 1, and therefore that the x, y
+ coordinates reflect those of the equivalent point in an affine coordinate system. Where more
+ than one point is to be normalized, this method will generally be more efficient than
+ normalizing each point separately. An (optional) z-scaling factor can be applied; effectively
+ each z coordinate is scaled by this value prior to normalization (but only one
+ actual multiplication is needed).
+
+ @param points
+ An array of points that will be updated in place with their normalized versions,
+ where necessary
+ @param off
+ The start of the range of points to normalize
+ @param len
+ The length of the range of points to normalize
+ @param iso
+ The (optional) z-scaling factor - can be null
+
+
+ Create a cache-safe lookup table for the specified sequence of points. All the points MUST
+ belong to this ECCurve
instance, and MUST already be normalized.
+
+
+ Sets the default ECMultiplier
, unless already set.
+
+
+ Decode a point on this curve from its ASN.1 encoding. The different
+ encodings are taken account of, including point compression for
+ Fp
(X9.62 s 4.2.1 pg 17).
+ @return The decoded point.
+
+
+ Elliptic curve over Fp
+
+
+ The auxiliary values s0
and
+ s1
used for partial modular reduction for
+ Koblitz curves.
+
+
+ Solves a quadratic equation z2 + z = beta
(X9.62
+ D.1.6) The other solution is z + 1
.
+
+ @param beta
+ The value to solve the quadratic equation for.
+ @return the solution for z2 + z = beta
or
+ null
if no solution exists.
+
+
+ @return the auxiliary values s0
and
+ s1
used for partial modular reduction for
+ Koblitz curves.
+
+
+ Returns true if this is a Koblitz curve (ABC curve).
+ @return true if this is a Koblitz curve (ABC curve), false otherwise
+
+
+ Elliptic curves over F2m. The Weierstrass equation is given by
+ y2 + xy = x3 + ax2 + b
.
+
+
+ The exponent m
of F2m
.
+
+
+ TPB: The integer k
where xm +
+ xk + 1
represents the reduction polynomial
+ f(z)
.
+ PPB: The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ TPB: Always set to 0
+ PPB: The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ TPB: Always set to 0
+ PPB: The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ The point at infinity on this curve.
+
+
+ Constructor for Trinomial Polynomial Basis (TPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k The integer k
where xm +
+ xk + 1
represents the reduction
+ polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+
+
+ Constructor for Trinomial Polynomial Basis (TPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k The integer k
where xm +
+ xk + 1
represents the reduction
+ polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param order The order of the main subgroup of the elliptic curve.
+ @param cofactor The cofactor of the elliptic curve, i.e.
+ #Ea(F2m) = h * n
.
+
+
+ Constructor for Pentanomial Polynomial Basis (PPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+
+
+ Constructor for Pentanomial Polynomial Basis (PPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param order The order of the main subgroup of the elliptic curve.
+ @param cofactor The cofactor of the elliptic curve, i.e.
+ #Ea(F2m) = h * n
.
+
+
+ Return true if curve uses a Trinomial basis.
+
+ @return true if curve Trinomial, false otherwise.
+
+
+ return the field name for this field.
+
+ @return the string "Fp".
+
+
+ return a sqrt root - the routine verifies that the calculation
+ returns the right value - if none exists it returns null.
+
+
+ Class representing the Elements of the finite field
+ F2m
in polynomial basis (PB)
+ representation. Both trinomial (Tpb) and pentanomial (Ppb) polynomial
+ basis representations are supported. Gaussian normal basis (GNB)
+ representation is not supported.
+
+
+ Indicates gaussian normal basis representation (GNB). Number chosen
+ according to X9.62. GNB is not implemented at present.
+
+
+ Indicates trinomial basis representation (Tpb). Number chosen
+ according to X9.62.
+
+
+ Indicates pentanomial basis representation (Ppb). Number chosen
+ according to X9.62.
+
+
+ Tpb or Ppb.
+
+
+ The exponent m
of F2m
.
+
+
+ The LongArray
holding the bits.
+
+
+ Constructor for Ppb.
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param x The BigInteger representing the value of the field element.
+
+
+ Constructor for Tpb.
+ @param m The exponent m
of
+ F2m
.
+ @param k The integer k
where xm +
+ xk + 1
represents the reduction
+ polynomial f(z)
.
+ @param x The BigInteger representing the value of the field element.
+
+
+ Checks, if the ECFieldElements a
and b
+ are elements of the same field F2m
+ (having the same representation).
+ @param a field element.
+ @param b field element to be compared.
+ @throws ArgumentException if a
and b
+ are not elements of the same field
+ F2m
(having the same
+ representation).
+
+
+ @return the representation of the field
+ F2m
, either of
+ {@link F2mFieldElement.Tpb} (trinomial
+ basis representation) or
+ {@link F2mFieldElement.Ppb} (pentanomial
+ basis representation).
+
+
+ @return the degree m
of the reduction polynomial
+ f(z)
.
+
+
+ @return Tpb: The integer k
where xm +
+ xk + 1
represents the reduction polynomial
+ f(z)
.
+ Ppb: The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ @return Tpb: Always returns 0
+ Ppb: The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ @return Tpb: Always set to 0
+ Ppb: The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ base class for points on elliptic curves.
+
+
+ Returns the affine x-coordinate after checking that this point is normalized.
+
+ @return The affine x-coordinate of this point
+ @throws IllegalStateException if the point is not normalized
+
+
+ Returns the affine y-coordinate after checking that this point is normalized
+
+ @return The affine y-coordinate of this point
+ @throws IllegalStateException if the point is not normalized
+
+
+ Returns the x-coordinate.
+
+ Caution: depending on the curve's coordinate system, this may not be the same value as in an
+ affine coordinate system; use Normalize() to get a point where the coordinates have their
+ affine values, or use AffineXCoord if you expect the point to already have been normalized.
+
+ @return the x-coordinate of this point
+
+
+ Returns the y-coordinate.
+
+ Caution: depending on the curve's coordinate system, this may not be the same value as in an
+ affine coordinate system; use Normalize() to get a point where the coordinates have their
+ affine values, or use AffineYCoord if you expect the point to already have been normalized.
+
+ @return the y-coordinate of this point
+
+
+ Normalization ensures that any projective coordinate is 1, and therefore that the x, y
+ coordinates reflect those of the equivalent point in an affine coordinate system.
+
+ @return a new ECPoint instance representing the same point, but with normalized coordinates
+
+
+ return the field element encoded with point compression. (S 4.3.6)
+
+
+ Multiplies this ECPoint
by the given number.
+ @param k The multiplicator.
+ @return k * this
.
+
+
+ Elliptic curve points over Fp
+
+
+ Create a point which encodes without point compression.
+
+ @param curve the curve to use
+ @param x affine x co-ordinate
+ @param y affine y co-ordinate
+
+
+ Create a point that encodes with or without point compression.
+
+ @param curve the curve to use
+ @param x affine x co-ordinate
+ @param y affine y co-ordinate
+ @param withCompression if true encode with point compression
+
+
+ Elliptic curve points over F2m
+
+
+ @param curve base curve
+ @param x x point
+ @param y y point
+
+
+ @param curve base curve
+ @param x x point
+ @param y y point
+ @param withCompression true if encode with point compression.
+
+
+ Interface for classes encapsulating a point multiplication algorithm
+ for ECPoint
s.
+
+
+ Multiplies the ECPoint p
by k
, i.e.
+ p
is added k
times to itself.
+ @param p The ECPoint
to be multiplied.
+ @param k The factor by which p
is multiplied.
+ @return p
multiplied by k
.
+
+
+ Class holding precomputation data for fixed-point multiplications.
+
+
+ Lookup table for the precomputed ECPoint
s used for a fixed point multiplication.
+
+
+ The width used for the precomputation. If a larger width precomputation
+ is already available this may be larger than was requested, so calling
+ code should refer to the actual width.
+
+
+ Interface for classes storing precomputation data for multiplication
+ algorithms. Used as a Memento (see GOF patterns) for
+ WNafMultiplier
.
+
+
+ Class implementing the WNAF (Window Non-Adjacent Form) multiplication
+ algorithm.
+
+
+ Multiplies this
by an integer k
using the
+ Window NAF method.
+ @param k The integer by which this
is multiplied.
+ @return A new ECPoint
which equals this
+ multiplied by k
.
+
+
+ Determine window width to use for a scalar multiplication of the given size.
+
+ @param bits the bit-length of the scalar to multiply by
+ @return the window size to use
+
+
+ Class holding precomputation data for the WNAF (Window Non-Adjacent Form)
+ algorithm.
+
+
+ Array holding the precomputed ECPoint
s used for a Window
+ NAF multiplication.
+
+
+ Array holding the negations of the precomputed ECPoint
s used
+ for a Window NAF multiplication.
+
+
+ Holds an ECPoint
representing Twice(this). Used for the
+ Window NAF multiplication to create or extend the precomputed values.
+
+
+ Computes the Window NAF (non-adjacent Form) of an integer.
+ @param width The width w
of the Window NAF. The width is
+ defined as the minimal number w
, such that for any
+ w
consecutive digits in the resulting representation, at
+ most one is non-zero.
+ @param k The integer of which the Window NAF is computed.
+ @return The Window NAF of the given width, such that the following holds:
+ k = ∑i=0l-1 ki2i
+
, where the ki
denote the elements of the
+ returned byte[]
.
+
+
+ Determine window width to use for a scalar multiplication of the given size.
+
+ @param bits the bit-length of the scalar to multiply by
+ @return the window size to use
+
+
+ Determine window width to use for a scalar multiplication of the given size.
+
+ @param bits the bit-length of the scalar to multiply by
+ @param windowSizeCutoffs a monotonically increasing list of bit sizes at which to increment the window width
+ @return the window size to use
+
+
+ Class implementing the WTNAF (Window
+ τ
-adic Non-Adjacent Form) algorithm.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by k
using the reduced τ
-adic NAF (RTNAF)
+ method.
+ @param p The AbstractF2mPoint to multiply.
+ @param k The integer by which to multiply k
.
+ @return p
multiplied by k
.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
using
+ the τ
-adic NAF (TNAF) method.
+ @param p The AbstractF2mPoint to multiply.
+ @param lambda The element λ
of
+ Z[τ]
of which to compute the
+ [τ]
-adic NAF.
+ @return p
multiplied by λ
.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
+ using the window τ
-adic NAF (TNAF) method, given the
+ WTNAF of λ
.
+ @param p The AbstractF2mPoint to multiply.
+ @param u The the WTNAF of λ
..
+ @return λ * p
+
+
+ Class holding precomputation data for the WTNAF (Window
+ τ
-adic Non-Adjacent Form) algorithm.
+
+
+ Array holding the precomputed AbstractF2mPoint
s used for the
+ WTNAF multiplication in
+ {@link org.bouncycastle.math.ec.multiplier.WTauNafMultiplier.multiply()
+ WTauNafMultiplier.multiply()}
.
+
+
+
+ Utility class for creating IDigest objects from their names/Oids
+
+
+
+ Use the specified instance of IRandomGenerator as random source.
+
+ This constructor performs no seeding of either the IRandomGenerator or the
+ constructed SecureRandom. It is the responsibility of the client to provide
+ proper seed material as necessary/appropriate for the given IRandomGenerator
+ implementation.
+
+ The source to generate all random bytes from.
+
+
+ base constructor.
+
+
+ create a SecurityUtilityException with the given message.
+
+ @param message the message to be carried with the exception.
+
+
+ General array utilities.
+
+
+
+ Are two arrays equal.
+
+ Left side.
+ Right side.
+ True if equal.
+
+
+
+ A constant time equals comparison - does not terminate early if
+ test will fail.
+
+ first array
+ second array
+ true if arrays equal, false otherwise.
+
+
+ Make a copy of a range of bytes from the passed in data array. The range can
+ extend beyond the end of the input array, in which case the return array will
+ be padded with zeroes.
+
+ @param data the array from which the data is to be copied.
+ @param from the start index at which the copying should take place.
+ @param to the final index of the range (exclusive).
+
+ @return a new byte array containing the range given.
+
+
+ BigInteger utilities.
+
+
+ Return the passed in value as an unsigned byte array.
+
+ @param value value to be converted.
+ @return a byte array without a leading zero byte if present in the signed encoding.
+
+
+ Return the passed in value as an unsigned byte array of specified length, zero-extended as necessary.
+
+ @param length desired length of result array.
+ @param n value to be converted.
+ @return a byte array of specified length, with leading zeroes as necessary given the size of n.
+
+
+ Return a random BigInteger not less than 'min' and not greater than 'max'
+
+ @param min the least value that may be generated
+ @param max the greatest value that may be generated
+ @param random the source of randomness
+ @return a random BigInteger value in the range [min,max]
+
+
+
+ Class to decode and encode Hex.
+
+
+
+ encode the input data producing a Hex encoded byte array.
+
+ @return a byte array containing the Hex encoded data.
+
+
+ encode the input data producing a Hex encoded byte array.
+
+ @return a byte array containing the Hex encoded data.
+
+
+ Hex encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ Hex encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded input data. It is assumed the input data is valid.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the Hex encoded string data - whitespace will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the Hex encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ encode the input data producing a Hex output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded byte data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+
+ Produce a copy of this object with its configuration and in its current state.
+
+
+ The returned object may be used simply to store the state, or may be used as a similar object
+ starting from the copied state.
+
+
+
+
+ Restore a copied object state into this object.
+
+
+ Implementations of this method should try to avoid or minimise memory allocation to perform the reset.
+
+ an object originally {@link #copy() copied} from an object of the same type as this instance.
+ if the provided object is not of the correct type.
+ if the other parameter is in some other way invalid.
+
+
+ Exception to be thrown on a failure to reset an object implementing Memoable.
+
+ The exception extends InvalidCastException to enable users to have a single handling case,
+ only introducing specific handling of this one if required.
+
+
+
+ Basic Constructor.
+
+ @param msg message to be associated with this exception.
+
+
+
+ Implements certificate support for host algorithm.
+
+
+
+
+ Gets the host key data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The host key name.
+
+
+
+ Signs the specified data.
+
+ The data.
+ Signed data.
+
+
+
+
+ Verifies the signature.
+
+ The data.
+ The signature.
+ true if signature was successfully verified; otherwise false.
+
+
+
+
+ Base class for asymmetric cipher implementations.
+
+
+
+
+ Gets the minimum data size.
+
+
+ The minimum data size.
+
+
+
+ BCrypt implementation.
+
+
+ BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in
+ "A Future-
+ Adaptable Password Scheme" by Niels Provos and David Mazieres.
+
+
+ This password hashing system tries to thwart off-line password cracking using a
+ computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.
+ The work factor of the algorithm is parameterised, so it can be increased as computers
+ get faster.
+
+
+ Usage is really simple. To hash a password for the first time, call the method with a random salt, like this:
+
+ string pw_hash = BCrypt.HashPassword(plain_password);
+
+ To check whether a plaintext password matches one that has been hashed previously,
+ use the method:
+
+
+ if (BCrypt.Verify(candidate_password, stored_hash))
+ Console.WriteLine("It matches");
+ else
+ Console.WriteLine("It does not match");
+
+
+ The method takes an optional parameter (workFactor) that
+ determines the computational complexity of the hashing:
+
+
+ string strong_salt = BCrypt.GenerateSalt(10);
+ string stronger_salt = BCrypt.GenerateSalt(12);
+
+
+ The amount of work increases exponentially (2^workFactor), so each increment is twice
+ as much work. The default workFactor is 10, and the valid range is 4 to 31.
+
+
+
+
+
+ Hash a string using the OpenBSD bcrypt scheme and a salt generated by .
+
+ Just an alias for HashPassword.
+ The string to hash.
+ The hashed string.
+
+
+
+ Hash a string using the OpenBSD bcrypt scheme and a salt generated by .
+
+ Just an alias for HashPassword.
+ The string to hash.
+ The log2 of the number of rounds of hashing to apply - the work
+ factor therefore increases as 2^workFactor.
+ The hashed string.
+
+
+
+ Hash a password using the OpenBSD bcrypt scheme and a salt generated by .
+
+ The password to hash.
+ The hashed password.
+
+
+
+ Hash a password using the OpenBSD bcrypt scheme and a salt generated by using the given .
+
+ The password to hash.
+ The log2 of the number of rounds of hashing to apply - the work
+ factor therefore increases as 2^workFactor.
+ The hashed password.
+
+
+ Hash a password using the OpenBSD bcrypt scheme.
+ Thrown when one or more arguments have unsupported or
+ illegal values.
+ The password to hash.
+ the salt to hash with (perhaps generated using BCrypt.gensalt).
+ The hashed password
+
+
+
+ Generate a salt for use with the method.
+
+ The log2 of the number of rounds of hashing to apply - the work
+ factor therefore increases as 2**workFactor.
+ A base64 encoded salt value.
+
+
+
+ Generate a salt for use with the method
+ selecting a reasonable default for the number of hashing rounds to apply.
+
+ A base64 encoded salt value.
+
+
+
+ Verifies that the hash of the given matches the provided
+
+
+ The text to verify.
+ The previously-hashed password.
+ true if the passwords match, false otherwise.
+
+
+
+ Encode a byte array using bcrypt's slightly-modified base64 encoding scheme. Note that this
+ is *not* compatible with the standard MIME-base64 encoding.
+
+ Thrown when one or more arguments have unsupported or
+ illegal values.
+ The byte array to encode.
+ The number of bytes to encode.
+ Base64-encoded string.
+
+
+
+ Decode a string encoded using bcrypt's base64 scheme to a byte array. Note that this is *not*
+ compatible with the standard MIME-base64 encoding.
+
+ Thrown when one or more arguments have unsupported or
+ illegal values.
+ The string to decode.
+ The maximum bytes to decode.
+ The decoded byte array.
+
+
+
+ Look up the 3 bits base64-encoded by the specified character, range-checking against
+ conversion table.
+
+ The base64-encoded value.
+ The decoded value of x.
+
+
+ Blowfish encipher a single 64-bit block encoded as two 32-bit halves.
+ An array containing the two 32-bit half blocks.
+ The position in the array of the blocks.
+
+
+ Cycically extract a word of key material.
+ The string to extract the data from.
+ [in,out] The current offset.
+ The next word of material from data.
+
+
+ Initializes the Blowfish key schedule.
+
+
+ Key the Blowfish cipher.
+ The key byte array.
+
+
+
+ Perform the "enhanced key schedule" step described by Provos and Mazieres in "A Future-
+ Adaptable Password Scheme" http://www.openbsd.org/papers/bcrypt-paper.ps.
+
+ Salt byte array.
+ Input byte array.
+
+
+ Perform the central hashing step in the bcrypt scheme.
+ Thrown when one or more arguments have unsupported or
+ illegal values.
+ The input byte array to hash.
+ The salt byte array to hash with.
+ The binary logarithm of the number of rounds of hashing to apply.
+ A byte array containing the hashed result.
+
+
+ Compatibility with new OpenBSD function.
+ Ported from SSHJ library (https://github.com/hierynomus/sshj)
+
+
+
+ Applies the Bcrypt kdf to derive a key and iv from the passphrase,
+ the key/iv are returned in the output variable.
+ Ported from the SSHJ library. https://github.com/hierynomus/sshj
+
+
+
+
+
+
+
+
+ Appends multiple byte arrays into one array.
+
+
+
+
+
+
+ Exception for signalling parse errors.
+
+
+ Default constructor.
+
+
+ Initializes a new instance of .
+ The message.
+
+
+ Initializes a new instance of .
+ The message.
+ The inner exception.
+
+
+
+ Base class for block cipher implementations.
+
+
+
+
+ Gets the size of the block in bytes.
+
+
+ The size of the block in bytes.
+
+
+
+
+ Gets the minimum data size.
+
+
+ The minimum data size.
+
+
+
+
+ Gets the size of the block.
+
+
+ The size of the block.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ Size of the block.
+ Cipher mode.
+ Cipher padding.
+ is null.
+
+
+
+ Encrypts the specified data.
+
+ The data.
+ The zero-based offset in at which to begin encrypting.
+ The number of bytes to encrypt from .
+ Encrypted data
+
+
+
+ Decrypts the specified data.
+
+ The data.
+ Decrypted data
+
+
+
+ Decrypts the specified input.
+
+ The input.
+ The zero-based offset in at which to begin decrypting.
+ The number of bytes to decrypt from .
+
+ The decrypted data.
+
+
+
+
+ Base class for cipher implementation.
+
+
+
+
+ Gets the minimum data size.
+
+
+ The minimum data size.
+
+
+
+
+ Encrypts the specified input.
+
+ The input.
+ Encrypted data.
+
+
+
+ Encrypts the specified input.
+
+ The input.
+ The zero-based offset in at which to begin encrypting.
+ The number of bytes to encrypt from .
+
+ The encrypted data.
+
+
+
+
+ Decrypts the specified input.
+
+ The input.
+
+ The decrypted data.
+
+
+
+
+ Decrypts the specified input.
+
+ The input.
+ The zero-based offset in at which to begin decrypting.
+ The number of bytes to decrypt from .
+
+ The decrypted data.
+
+
+
+
+ Implements digital signature where where asymmetric cipher is used,
+
+
+
+
+ Initializes a new instance of the class.
+
+ The object identifier.
+ The cipher.
+
+
+
+ Verifies the signature.
+
+ The input.
+ The signature.
+
+ True if signature was successfully verified; otherwise false.
+
+
+
+
+ Creates the signature.
+
+ The input.
+
+ Signed input data.
+
+
+
+
+ Hashes the specified input.
+
+ The input.
+ Hashed data.
+
+
+
+ Encodes hash using DER.
+
+ The hash data.
+ DER Encoded byte array
+
+
+
+ AES cipher implementation.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ The mode.
+ The padding.
+ is null.
+ Keysize is not valid for this algorithm.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+ or is null.
+ or is too short.
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+ or is null.
+ or is too short.
+
+
+
+ Implements ARCH4 cipher algorithm
+
+
+
+
+ Holds the state of the RC4 engine
+
+
+
+
+ Gets the minimum data size.
+
+
+ The minimum data size.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ if set to true will disharged first 1536 bytes.
+ is null.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Encrypts the specified input.
+
+ The input.
+ The zero-based offset in at which to begin encrypting.
+ The number of bytes to encrypt from .
+
+ Encrypted data.
+
+
+
+
+ Decrypts the specified input.
+
+ The input.
+
+ The decrypted data.
+
+
+
+
+ Decrypts the specified input.
+
+ The input.
+ The zero-based offset in at which to begin decrypting.
+ The number of bytes to decrypt from .
+
+ The decrypted data.
+
+
+
+
+ Blowfish cipher implementation.
+
+
+
+
+ The s-boxes
+
+
+
+
+ The s-boxes
+
+
+
+
+ The s-boxes
+
+
+
+
+ The s-boxes
+
+
+
+
+ The p-array
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ The mode.
+ The padding.
+ is null.
+ Keysize is not valid for this algorithm.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ apply the encryption cycle to each value pair in the table.
+
+ The xl.
+ The xr.
+ The table.
+
+
+
+ Implements CAST cipher algorithm
+
+
+
+
+ The rotating round key
+
+
+
+
+ The masking round key
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ The mode.
+ The padding.
+ is null.
+ Keysize is not valid for this algorithm.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Sets the subkeys using the same nomenclatureas described in RFC2144.
+
+ The key.
+
+
+
+ The first of the three processing functions for the encryption and decryption.
+
+ The input to be processed.
+ The mask to be used from Km[n].
+ The rotation value to be used.
+
+
+
+
+ The second of the three processing functions for the encryption and decryption.
+
+ The input to be processed.
+ The mask to be used from Km[n].
+ The rotation value to be used.
+
+
+
+
+ The third of the three processing functions for the encryption and decryption.
+
+ The input to be processed.
+ The mask to be used from Km[n].
+ The rotation value to be used.
+
+
+
+
+ Does the 16 rounds to encrypt the block.
+
+ The LH-32bits of the plaintext block.
+ The RH-32bits of the plaintext block.
+ The result.
+
+
+
+ Base class for cipher mode implementations
+
+
+
+
+ Gets the cipher.
+
+
+
+
+ Gets the IV vector.
+
+
+
+
+ Holds block size of the cipher.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The iv.
+
+
+
+ Initializes the specified cipher mode.
+
+ The cipher.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Base class for cipher padding implementations
+
+
+
+
+ Pads the specified input to match the block size.
+
+ Size of the block.
+ The input.
+
+ Padded data array.
+
+
+
+
+ Pads the specified input to match the block size.
+
+ Size of the block.
+ The input.
+ The zero-based offset in at which the data to pad starts.
+ The number of bytes in to take into account.
+
+ The padded data array.
+
+
+
+
+ Pads the specified input with a given number of bytes.
+
+ The input.
+ The number of bytes to pad the input with.
+
+ The padded data array.
+
+
+
+
+ Pads the specified input with a given number of bytes.
+
+ The input.
+ The zero-based offset in at which the data to pad starts.
+ The number of bytes in to take into account.
+ The number of bytes to pad the input with.
+
+ The padded data array.
+
+
+
+
+ Implements DES cipher algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ The mode.
+ The padding.
+ is null.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Generates the working key.
+
+ if set to true [encrypting].
+ The key.
+ Generated working key.
+
+
+
+ Validates the key.
+
+
+
+
+ Performs DES function.
+
+ The w key.
+ The input.
+ The in off.
+ The out bytes.
+ The out off.
+
+
+
+ Implements CBC cipher mode
+
+
+
+
+ Initializes a new instance of the class.
+
+ The iv.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Implements CFB cipher mode
+
+
+
+
+ Initializes a new instance of the class.
+
+ The iv.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Implements CTR cipher mode
+
+
+
+
+ Initializes a new instance of the class.
+
+ The iv.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Implements OFB cipher mode
+
+
+
+
+ Initializes a new instance of the class.
+
+ The iv.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Implements PKCS5 cipher padding
+
+
+
+
+ Pads the specified input to match the block size.
+
+ The size of the block.
+ The input.
+ The zero-based offset in at which the data to pad starts.
+ The number of bytes in to take into account.
+
+ The padded data array.
+
+
+
+
+ Pads the specified input with a given number of bytes.
+
+ The input.
+ The zero-based offset in at which the data to pad starts.
+ The number of bytes in to take into account.
+ The number of bytes to pad the input with.
+
+ The padded data array.
+
+
+
+
+ Implements PKCS7 cipher padding
+
+
+
+
+ Pads the specified input to match the block size.
+
+ The size of the block.
+ The input.
+ The zero-based offset in at which the data to pad starts.
+ The number of bytes in to take into account.
+
+ The padded data array.
+
+
+
+
+ Pads the specified input with a given number of bytes.
+
+ The input.
+ The zero-based offset in at which the data to pad starts.
+ The number of bytes in to take into account.
+ The number of bytes to pad the input with.
+
+ The padded data array.
+
+
+
+
+ Implements RSA cipher algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The RSA key.
+
+
+
+ Encrypts the specified data.
+
+ The data.
+ The zero-based offset in at which to begin encrypting.
+ The number of bytes to encrypt from .
+ Encrypted data.
+
+
+
+ Decrypts the specified data.
+
+ The data.
+
+ The decrypted data.
+
+ Only block type 01 or 02 are supported.
+ Thrown when decrypted block type is not supported.
+
+
+
+ Decrypts the specified input.
+
+ The input.
+ The zero-based offset in at which to begin decrypting.
+ The number of bytes to decrypt from .
+
+ The decrypted data.
+
+ Only block type 01 or 02 are supported.
+ Thrown when decrypted block type is not supported.
+
+
+
+ Implements Serpent cipher algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ The mode.
+ The padding.
+ is null.
+ Keysize is not valid for this algorithm.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Expand a user-supplied key material into a session key.
+
+ The user-key bytes to use.
+
+ A session key.
+
+ is not multiple of 4 bytes.
+
+
+
+ S0 - { 3, 8,15, 1,10, 6, 5,11,14,13, 4, 2, 7, 0, 9,12 } - 15 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ InvSO - {13, 3,11, 0,10, 6, 5,12, 1,14, 4, 7,15, 9, 8, 2 } - 15 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ S1 - {15,12, 2, 7, 9, 0, 5,10, 1,11,14, 8, 6,13, 3, 4 } - 14 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ InvS1 - { 5, 8, 2,14,15, 6,12, 3,11, 4, 7, 9, 1,13,10, 0 } - 14 steps.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ S2 - { 8, 6, 7, 9, 3,12,10,15,13, 1,14, 4, 0,11, 5, 2 } - 16 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ InvS2 - {12, 9,15, 4,11,14, 1, 2, 0, 3, 6,13, 5, 8,10, 7 } - 16 steps.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ S3 - { 0,15,11, 8,12, 9, 6, 3,13, 1, 2, 4,10, 7, 5,14 } - 16 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ InvS3 - { 0, 9,10, 7,11,14, 6,13, 3, 5,12, 2, 4, 8,15, 1 } - 15 terms
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ S4 - { 1,15, 8, 3,12, 0,11, 6, 2, 5, 4,10, 9,14, 7,13 } - 15 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ InvS4 - { 5, 0, 8, 3,10, 9, 7,14, 2,12,11, 6, 4,15,13, 1 } - 15 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ S5 - {15, 5, 2,11, 4,10, 9,12, 0, 3,14, 8,13, 6, 7, 1 } - 16 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ InvS5 - { 8,15, 2, 9, 4, 1,13,14,11, 6, 5, 3, 7,12,10, 0 } - 16 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ S6 - { 7, 2,12, 5, 8, 4, 6,11,14, 9, 1,15,13, 3,10, 0 } - 15 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ InvS6 - {15,10, 1,13, 5, 3, 6, 0, 4, 9,14, 7, 2,12, 8,11 } - 15 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ S7 - { 1,13,15, 0,14, 8, 2,11, 7, 4,12,10, 9, 3, 5, 6 } - 16 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ InvS7 - { 3, 0, 6,13, 9,14,15, 8, 5,12,11, 7,10, 1, 4, 2 } - 17 terms.
+
+ A.
+ The b.
+ The c.
+ The d.
+
+
+
+ Apply the linear transformation to the register set.
+
+
+
+
+ Apply the inverse of the linear transformation to the register set.
+
+
+
+
+ Implements 3DES cipher algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ The mode.
+ The padding.
+ is null.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Validates the key.
+
+
+
+
+ Implements Twofish cipher algorithm
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ The mode.
+ The padding.
+ is null.
+ Keysize is not valid for this algorithm.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+ Define the fixed p0/p1 permutations used in keyed S-box lookup.
+ By changing the following constant definitions, the S-boxes will
+ automatically Get changed in the Twofish engine.
+
+
+ gSubKeys[] and gSBox[] are eventually used in the
+ encryption and decryption methods.
+
+
+ Use (12, 8) Reed-Solomon code over GF(256) to produce
+ a key S-box 32-bit entity from 2 key material 32-bit
+ entities.
+
+ @param k0 first 32-bit entity
+ @param k1 second 32-bit entity
+ @return Remainder polynomial Generated using RS code
+
+
+ Reed-Solomon code parameters: (12,8) reversible code:
+
+
+ G(x) = x^4 + (a+1/a)x^3 + ax^2 + (a+1/a)x + 1
+
+ where a = primitive root of field generator 0x14D
+
+
+
+
+ Base class for signature implementations
+
+
+
+
+ Verifies the signature.
+
+ The input.
+ The signature.
+ True if signature was successfully verified; otherwise false.
+
+
+
+ Creates the signature.
+
+ The input.
+ Signed input data.
+
+
+
+ Implements DSA digital signature algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The DSA key.
+ is null.
+
+
+
+ Verifies the signature.
+
+ The input.
+ The signature.
+
+ true if signature was successfully verified; otherwise false.
+
+ Invalid signature.
+
+
+
+ Creates the signature.
+
+ The input.
+
+ Signed input data.
+
+ Invalid DSA key.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Implements ECDSA digital signature algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The ECDSA key.
+ is null.
+
+
+
+ Verifies the signature.
+
+ The input.
+ The signature.
+
+ true if signature was successfully verified; otherwise false.
+
+
+
+
+ Creates the signature.
+
+ The input.
+
+ Signed input data.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Implements ECDSA digital signature algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The ED25519Key key.
+ is null.
+
+
+
+ Verifies the signature.
+
+ The input.
+ The signature.
+
+ true if signature was successfully verified; otherwise false.
+
+ Invalid signature.
+
+
+
+ Creates the signature.
+
+ The input.
+
+ Signed input data.
+
+ Invalid ED25519Key key.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Computes a Hash-based Message Authentication Code (HMAC) by using the hash function.
+
+
+
+
+ Initializes a with the specified key.
+
+ The key.
+
+
+
+ Initializes a with the specified key and size of the computed hash code.
+
+ The key.
+ The size, in bits, of the computed hash code.
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Finalizes the hash computation after the last data is processed by the cryptographic stream object.
+
+
+ The computed hash code.
+
+
+
+
+ Computes a Hash-based Message Authentication Code (HMAC) by using the hash function.
+
+
+
+
+ Initializes a with the specified key.
+
+ The key.
+
+
+
+ Initializes a with the specified key and size of the computed hash code.
+
+ The key.
+ The size, in bits, of the computed hash code.
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Finalizes the hash computation after the last data is processed by the cryptographic stream object.
+
+
+ The computed hash code.
+
+
+
+
+ Computes a Hash-based Message Authentication Code (HMAC) by using the hash function.
+
+
+
+
+ Initializes a with the specified key.
+
+ The key.
+
+
+
+ Initializes a with the specified key and size of the computed hash code.
+
+ The key.
+ The size, in bits, of the computed hash code.
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Finalizes the hash computation after the last data is processed by the cryptographic stream object.
+
+
+ The computed hash code.
+
+
+
+
+ Computes a Hash-based Message Authentication Code (HMAC) by using the hash function.
+
+
+
+
+ Initializes a with the specified key.
+
+ The key.
+
+
+
+ Initializes a with the specified key and size of the computed hash code.
+
+ The key.
+ The size, in bits, of the computed hash code.
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Finalizes the hash computation after the last data is processed by the cryptographic stream object.
+
+
+ The computed hash code.
+
+
+
+
+ Computes a Hash-based Message Authentication Code (HMAC) by using the hash function.
+
+
+
+
+ Initializes a with the specified key.
+
+ The key.
+
+
+
+ Initializes a with the specified key and size of the computed hash code.
+
+ The key.
+ The size, in bits, of the computed hash code.
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Finalizes the hash computation after the last data is processed by the cryptographic stream object.
+
+
+ The computed hash code.
+
+
+
+
+ Implements RSA digital signature algorithm.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The RSA key.
+
+
+
+ Hashes the specified input.
+
+ The input.
+
+ Hashed data.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Base class of stream cipher algorithms.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ is null.
+
+
+
+ Base class for symmetric cipher implementations.
+
+
+
+
+ Gets the key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The key.
+ is null.
+
+
+
+ Encrypts the specified region of the input byte array and copies the encrypted data to the specified region of the output byte array.
+
+ The input data to encrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write encrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes encrypted.
+
+
+
+
+ Decrypts the specified region of the input byte array and copies the decrypted data to the specified region of the output byte array.
+
+ The input data to decrypt.
+ The offset into the input byte array from which to begin using data.
+ The number of bytes in the input byte array to use as data.
+ The output to which to write decrypted data.
+ The offset into the output byte array from which to begin writing data.
+
+ The number of bytes decrypted.
+
+
+
+
+ Contains DSA private and public key
+
+
+
+
+ Gets the P.
+
+
+
+
+ Gets the Q.
+
+
+
+
+ Gets the G.
+
+
+
+
+ Gets public key Y.
+
+
+
+
+ Gets private key X.
+
+
+
+
+ Gets the length of the key.
+
+
+ The length of the key.
+
+
+
+
+ Gets the digital signature.
+
+
+
+
+ Gets or sets the public.
+
+
+ The public.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ DER encoded private key data.
+
+
+
+ Initializes a new instance of the class.
+
+ The p.
+ The q.
+ The g.
+ The y.
+ The x.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Contains ECDSA (ecdsa-sha2-nistp{256,384,521}) private and public key
+
+
+
+
+ Gets the SSH name of the ECDSA Key
+
+
+
+
+ Gets the HashAlgorithm to use
+
+
+
+
+ Gets the length of the key.
+
+
+ The length of the key.
+
+
+
+
+ Gets the digital signature.
+
+
+
+
+ Gets or sets the public.
+
+
+ The public.
+
+
+
+
+ Gets ECDsa Object
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The curve name
+ Value of publickey
+ Value of privatekey
+
+
+
+ Initializes a new instance of the class.
+
+ DER encoded private key data.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Contains ED25519 private and public key
+
+
+
+
+ Gets the Key String.
+
+
+
+
+ Gets or sets the public.
+
+
+ The public.
+
+
+
+
+ Gets the length of the key.
+
+
+ The length of the key.
+
+
+
+
+ Gets the digital signature.
+
+
+
+
+ Gets the PublicKey Bytes
+
+
+
+
+ Gets the PrivateKey Bytes
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ pk data.
+ sk data.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Base class for asymmetric cipher algorithms
+
+
+
+
+ Specifies array of big integers that represent private key
+
+
+
+
+ Gets the key specific digital signature.
+
+
+
+
+ Gets or sets the public key.
+
+
+ The public.
+
+
+
+
+ Gets the length of the key.
+
+
+ The length of the key.
+
+
+
+
+ Initializes a new instance of the class.
+
+ DER encoded private key data.
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Signs the specified data with the key.
+
+ The data to sign.
+
+ Signed data.
+
+
+
+
+ Verifies the signature.
+
+ The data to verify.
+ The signature to verify against.
+ True is signature was successfully verifies; otherwise false.
+
+
+
+ Contains RSA private and public key
+
+
+
+
+ Gets the modulus.
+
+
+
+
+ Gets the exponent.
+
+
+
+
+ Gets the D.
+
+
+
+
+ Gets the P.
+
+
+
+
+ Gets the Q.
+
+
+
+
+ Gets the DP.
+
+
+
+
+ Gets the DQ.
+
+
+
+
+ Gets the inverse Q.
+
+
+
+
+ Gets the length of the key.
+
+
+ The length of the key.
+
+
+
+
+ Gets the digital signature.
+
+
+
+
+ Gets or sets the public.
+
+
+ The public.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Initializes a new instance of the class.
+
+ DER encoded private key data.
+
+
+
+ Initializes a new instance of the class.
+
+ The modulus.
+ The exponent.
+ The d.
+ The p.
+ The q.
+ The inverse Q.
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Base class for SSH host algorithms.
+
+
+
+
+ Gets the host key name.
+
+
+
+
+ Gets the host key data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The host key name.
+
+
+
+ Signs the specified data.
+
+ The data.
+ Signed data.
+
+
+
+ Verifies the signature.
+
+ The data.
+ The signature.
+ True is signature was successfully verifies; otherwise false.
+
+
+
+ Represents a key exchange algorithm.
+
+
+
+
+ Occurs when the host key is received.
+
+
+
+
+ Gets the name of the algorithm.
+
+
+ The name of the algorithm.
+
+
+
+
+ Gets the exchange hash.
+
+
+ The exchange hash.
+
+
+
+
+ Starts the key exchange algorithm.
+
+ The session.
+ Key exchange init message.
+
+
+
+ Finishes the key exchange algorithm.
+
+
+
+
+ Creates the client-side cipher to use.
+
+
+ The client cipher.
+
+
+
+
+ Creates the server-side cipher to use.
+
+
+ The server cipher.
+
+
+
+
+ Creates the server-side hash algorithm to use.
+
+
+ The server hash algorithm.
+
+
+
+
+ Creates the client-side hash algorithm to use.
+
+
+ The client hash algorithm.
+
+
+
+
+ Creates the compression algorithm to use to deflate data.
+
+
+ The compression method to deflate data.
+
+
+
+
+ Creates the compression algorithm to use to inflate data.
+
+
+ The compression method to inflate data.
+
+
+
+
+ Represents base class for different key exchange algorithm implementations
+
+
+
+
+ Gets or sets the session.
+
+
+ The session.
+
+
+
+
+ Gets or sets key exchange shared key.
+
+
+ The shared key.
+
+
+
+
+ Gets the exchange hash.
+
+ The exchange hash.
+
+
+
+ Occurs when host key received.
+
+
+
+
+ Starts key exchange algorithm
+
+ The session.
+ Key exchange init message.
+
+
+
+ Finishes key exchange algorithm.
+
+
+
+
+ Creates the server side cipher to use.
+
+ Server cipher.
+
+
+
+ Creates the client side cipher to use.
+
+ Client cipher.
+
+
+
+ Creates the server side hash algorithm to use.
+
+ Hash algorithm
+
+
+
+ Creates the client side hash algorithm to use.
+
+ Hash algorithm
+
+
+
+ Creates the compression algorithm to use to deflate data.
+
+ Compression method.
+
+
+
+ Creates the compression algorithm to use to inflate data.
+
+ Compression method.
+
+
+
+ Determines whether the specified host key can be trusted.
+
+ The host algorithm.
+
+ true if the specified host can be trusted; otherwise, false.
+
+
+
+
+ Validates the exchange hash.
+
+ true if exchange hash is valid; otherwise false.
+
+
+
+ Calculates key exchange hash value.
+
+ Key exchange hash.
+
+
+
+ Hashes the specified data bytes.
+
+ The hash data.
+
+ Hashed bytes
+
+
+
+
+ Sends SSH message to the server
+
+ The message.
+
+
+
+ Generates the session key.
+
+ The shared key.
+ The exchange hash.
+ The key.
+ The size.
+
+
+
+
+ Generates the session key.
+
+ The shared key.
+ The exchange hash.
+ The p.
+ The session id.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Represents base class for Diffie Hellman key exchange algorithm
+
+
+
+
+ Specifies key exchange group number.
+
+
+
+
+ Specifies key exchange prime number.
+
+
+
+
+ Specifies client payload
+
+
+
+
+ Specifies server payload
+
+
+
+
+ Specifies client exchange number.
+
+
+
+
+ Specifies server exchange number.
+
+
+
+
+ Specifies random generated number.
+
+
+
+
+ Specifies host key data.
+
+
+
+
+ Specifies signature data.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Validates the exchange hash.
+
+
+ true if exchange hash is valid; otherwise false.
+
+
+
+
+ Starts key exchange algorithm
+
+ The session.
+ Key exchange init message.
+
+
+
+ Populates the client exchange value.
+
+
+
+
+ Handles the server DH reply message.
+
+ The host key.
+ The server exchange value.
+ The signature.
+
+
+
+ Represents "diffie-hellman-group14-sha1" algorithm implementation.
+
+
+
+
+ https://tools.ietf.org/html/rfc2409#section-6.2
+
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Gets the group prime.
+
+
+ The group prime.
+
+
+
+
+ Represents "diffie-hellman-group14-sha256" algorithm implementation.
+
+
+
+
+ https://tools.ietf.org/html/rfc2409#section-6.2
+
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Gets the group prime.
+
+
+ The group prime.
+
+
+
+
+ Represents "diffie-hellman-group16-sha512" algorithm implementation.
+
+
+
+
+ https://tools.ietf.org/html/rfc3526#section-5
+
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Represents "diffie-hellman-group1-sha1" algorithm implementation.
+
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Gets the group prime.
+
+
+ The group prime.
+
+
+
+
+ Represents "diffie-hellman-group-exchange-sha1" algorithm implementation.
+
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Hashes the specified data bytes.
+
+ The hash data.
+
+ Hashed bytes
+
+
+
+
+ Represents "diffie-hellman-group-exchange-sha256" algorithm implementation.
+
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Hashes the specified data bytes.
+
+ Data to hash.
+
+ Hashed bytes
+
+
+
+
+ Base class for "diffie-hellman-group-exchange" algorithms.
+
+
+
+
+ Calculates key exchange hash value.
+
+
+ Key exchange hash.
+
+
+
+
+ Starts key exchange algorithm
+
+ The session.
+ Key exchange init message.
+
+
+
+ Finishes key exchange algorithm.
+
+
+
+
+ Represents "diffie-hellman-group1-sha1" algorithm implementation.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Hashes the specified data bytes.
+
+ The hash data.
+
+ Hashed bytes
+
+
+
+
+ Base class for "diffie-hellman" SHA-256 group algorithm implementations.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Hashes the specified data bytes.
+
+ The hash data.
+
+ Hashed bytes
+
+
+
+
+ Base class for "diffie-hellman" SHA-512 group algorithm implementations.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Hashes the specified data bytes.
+
+ The hash data.
+
+ Hashed bytes
+
+
+
+
+ Gets the group prime.
+
+
+ The group prime.
+
+
+
+
+ Calculates key exchange hash value.
+
+
+ Key exchange hash.
+
+
+
+
+ Starts key exchange algorithm
+
+ The session.
+ Key exchange init message.
+
+
+
+ Finishes key exchange algorithm.
+
+
+
+
+ Specifies client payload
+
+
+
+
+ Specifies server payload
+
+
+
+
+ Specifies client exchange.
+
+
+
+
+ Specifies server exchange.
+
+
+
+
+ Specifies host key data.
+
+
+
+
+ Specifies signature data.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Calculates key exchange hash value.
+
+
+ Key exchange hash.
+
+
+
+
+ Validates the exchange hash.
+
+
+ true if exchange hash is valid; otherwise false.
+
+
+
+
+ Starts key exchange algorithm
+
+ The session.
+ Key exchange init message.
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Starts key exchange algorithm
+
+ The session.
+ Key exchange init message.
+
+
+
+ Finishes key exchange algorithm.
+
+
+
+
+ Hashes the specified data bytes.
+
+ The hash data.
+
+ Hashed bytes
+
+
+
+
+ Handles the server DH reply message.
+
+ The host key.
+ The server exchange value.
+ The signature.
+
+
+
+ Gets the parameter of the curve.
+
+
+ The parameter of the curve.
+
+
+
+
+ Starts key exchange algorithm
+
+ The session.
+ Key exchange init message.
+
+
+
+ Finishes key exchange algorithm.
+
+
+
+
+ Handles the server DH reply message.
+
+ The host key.
+ The server exchange value.
+ The signature.
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Gets Curve Parameter.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Hashes the specified data bytes.
+
+ The hash data.
+
+ Hashed bytes
+
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Gets Curve Parameter.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Hashes the specified data bytes.
+
+ The hash data.
+
+ Hashed bytes
+
+
+
+
+ Gets algorithm name.
+
+
+
+
+ Gets Curve Parameter.
+
+
+
+
+ Gets the size, in bits, of the computed hash code.
+
+
+ The size, in bits, of the computed hash code.
+
+
+
+
+ Hashes the specified data bytes.
+
+ The hash data.
+
+ Hashed bytes
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Implements key support for host algorithm.
+
+
+
+
+ Gets the key.
+
+
+
+
+ Gets the public key data.
+
+
+
+
+ Initializes a new instance of the class.
+
+ Host key name.
+ Host key.
+
+
+
+ Initializes a new instance of the class.
+
+ Host key name.
+ Host key.
+ Host key encoded data.
+
+
+
+ Signs the specified data.
+
+ The data.
+
+ Signed data.
+
+
+
+
+ Verifies the signature.
+
+ The data.
+ The signature.
+
+ True is signature was successfully verifies; otherwise false.
+
+
+
+
+ Gets or sets the name of the algorithm as UTF-8 encoded byte array.
+
+
+ The name of the algorithm.
+
+
+
+
+ Gets or sets the signature.
+
+
+ The signature.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Called when type specific data need to be loaded.
+
+
+
+
+ Called when type specific data need to be saved.
+
+
+
+
+ Basic factory for creating new services.
+
+
+
+
+ Defines the number of times an authentication attempt with any given
+ can result in before it is disregarded.
+
+
+
+
+ Creates a .
+
+
+ A .
+
+
+
+
+ Creates a new with the specified and
+ .
+
+ The to use for creating a new session.
+ A factory to create instances.
+
+ An for the specified .
+
+ is null.
+ is null.
+
+
+
+ Creates a new in a given and with
+ the specified operation timeout and encoding.
+
+ The to create the in.
+ The number of milliseconds to wait for an operation to complete, or -1 to wait indefinitely.
+ The encoding.
+ The factory to use for creating SFTP messages.
+
+ An .
+
+
+
+
+ Create a new .
+
+
+ A .
+
+
+
+
+ Negotiates a key exchange algorithm, and creates a for the negotiated
+ algorithm.
+
+ A of the key exchange algorithms supported by the client where key is the name of the algorithm, and value is the type implementing this algorithm.
+ The names of the key exchange algorithms supported by the SSH server.
+
+ A that was negotiated between client and server.
+
+ is null.
+ is null.
+ No key exchange algorithms are supported by both client and server.
+
+
+
+ Creates a shell stream.
+
+ The SSH session.
+ The TERM environment variable.
+ The terminal width in columns.
+ The terminal width in rows.
+ The terminal height in pixels.
+ The terminal height in pixels.
+ The terminal mode values.
+ The size of the buffer.
+
+ The created instance.
+
+ Client is not connected.
+
+
+ The TERM environment variable contains an identifier for the text window's capabilities.
+ You can get a detailed list of these cababilities by using the ‘infocmp’ command.
+
+
+ The column/row dimensions override the pixel dimensions(when non-zero). Pixel dimensions refer
+ to the drawable area of the window.
+
+
+
+
+
+ Creates an that encloses a path in double quotes, and escapes
+ any embedded double quote with a backslash.
+
+
+ An that encloses a path in double quotes, and escapes any
+ embedded double quote with a backslash.
+ with a shell.
+
+
+
+
+ Creates an that can be used to establish a connection
+ to the server identified by the specified .
+
+ A detailing the server to establish a connection to.
+ A factory to create instances.
+
+ An that can be used to establish a connection to the
+ server identified by the specified .
+
+ is .
+ is .
+ The value of is not supported.
+
+
+
+ Creates an that deals with the SSH protocol
+ version exchange.
+
+
+ An .
+
+
+
+
+ Creates a factory to create instances.
+
+
+ An .
+
+
+
+
+ Creates a new in a given
+ and with the specified operation timeout.
+
+ The to create the in.
+ The number of milliseconds to wait for an operation to complete, or -1 to wait indefinitely.
+
+ An .
+
+
+
+
+ Provides functionality to connect and interact with SSH server.
+
+
+
+
+ Specifies an infinite waiting period.
+
+
+ The value of this field is -1 millisecond.
+
+
+
+
+ Specifies an infinite waiting period.
+
+
+ The value of this field is -1.
+
+
+
+
+ Specifies maximum packet size defined by the protocol.
+
+
+ 68536 (64 KB + 3000 bytes).
+
+
+
+
+ Holds the initial local window size for the channels.
+
+
+ 2147483647 (2^31 - 1) bytes.
+
+
+ We currently do not define a maximum (remote) window size.
+
+
+
+
+ Holds the maximum size of channel data packets that we receive.
+
+
+ 64 KB.
+
+
+
+ This is the maximum size (in bytes) we support for the data (payload) of a
+ SSH_MSG_CHANNEL_DATA message we receive.
+
+
+ We currently do not enforce this limit.
+
+
+
+
+
+ Controls how many authentication attempts can take place at the same time.
+
+
+ Some server may restrict number to prevent authentication attacks
+
+
+
+
+ Holds metada about session messages
+
+
+
+
+ Holds a that is signaled when the message listener loop has completed.
+
+
+
+
+ Specifies outbound packet number
+
+
+
+
+ Specifies incoming packet number
+
+
+
+
+ WaitHandle to signal that last service request was accepted
+
+
+
+
+ WaitHandle to signal that exception was thrown by another thread.
+
+
+
+
+ WaitHandle to signal that key exchange was completed.
+
+
+
+
+ WaitHandle to signal that key exchange is in progress.
+
+
+
+
+ Exception that need to be thrown by waiting thread
+
+
+
+
+ Specifies whether connection is authenticated
+
+
+
+
+ Specifies whether user issued Disconnect command or not
+
+
+
+
+ Holds the factory to use for creating new services.
+
+
+
+
+ Holds connection socket.
+
+
+
+
+ Holds an object that is used to ensure only a single thread can read from
+ at any given time.
+
+
+
+
+ Holds an object that is used to ensure only a single thread can write to
+ at any given time.
+
+
+ This is also used to ensure that is
+ incremented atomatically.
+
+
+
+
+ Holds an object that is used to ensure only a single thread can dispose
+ at any given time.
+
+
+ This is also used to ensure that will not be disposed
+ while performing a given operation or set of operations on .
+
+
+
+
+ Gets the session semaphore that controls session channels.
+
+
+ The session semaphore.
+
+
+
+
+ Gets the next channel number.
+
+
+ The next channel number.
+
+
+
+
+ Gets a value indicating whether the session is connected.
+
+
+ true if the session is connected; otherwise, false.
+
+
+ This methods returns true in all but the following cases:
+
+ -
+ The is disposed.
+
+ -
+ The SSH_MSG_DISCONNECT message - which is used to disconnect from the server - has been sent.
+
+ -
+ The client has not been authenticated successfully.
+
+ -
+ The listener thread - which is used to receive messages from the server - has stopped.
+
+ -
+ The socket used to communicate with the server is no longer connected.
+
+
+
+
+
+
+ Gets the session id.
+
+
+ The session id, or null if the client has not been authenticated.
+
+
+
+
+ Gets the client init message.
+
+ The client init message.
+
+
+
+ Gets or sets the server version string.
+
+ The server version.
+
+
+
+ Gets or sets the client version string.
+
+ The client version.
+
+
+
+ Gets or sets the connection info.
+
+ The connection info.
+
+
+
+ Occurs when an error occurred.
+
+
+
+
+ Occurs when session has been disconnected from the server.
+
+
+
+
+ Occurs when host key received.
+
+
+
+
+ Occurs when message is received from the server.
+
+
+
+
+ Occurs when message is received from the server.
+
+
+
+
+ Occurs when message is received from the server.
+
+
+
+
+ Occurs when message is received from the server.
+
+
+
+
+ Occurs when message is received from the server.
+
+
+
+
+ Occurs when message is received from the server.
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when a message is received from the SSH server.
+
+
+
+
+ Occurs when a message is received from the SSH server.
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Occurs when message received
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ The factory to use for creating new services.
+ A factory to create instances.
+ is null.
+ is null.
+ is null.
+
+
+
+ Connects to the server.
+
+ Socket connection to the SSH server or proxy server could not be established, or an error occurred while resolving the hostname.
+ SSH session could not be established.
+ Authentication of SSH session failed.
+ Failed to establish proxy connection.
+
+
+
+ Disconnects from the server.
+
+
+ This sends a SSH_MSG_DISCONNECT message to the server, waits for the
+ server to close the socket on its end and subsequently closes the client socket.
+
+
+
+
+ Waits for the specified handle or the exception handle for the receive thread
+ to signal within the connection timeout.
+
+ The wait handle.
+ A received package was invalid or failed the message integrity check.
+ None of the handles are signaled in time and the session is not disconnecting.
+ A socket error was signaled while receiving messages from the server.
+
+ When neither handles are signaled in time and the session is not closing, then the
+ session is disconnected.
+
+
+
+
+ Waits for the specified handle or the exception handle for the receive thread
+ to signal within the specified timeout.
+
+ The wait handle.
+ The time to wait for any of the handles to become signaled.
+ A received package was invalid or failed the message integrity check.
+ None of the handles are signaled in time and the session is not disconnecting.
+ A socket error was signaled while receiving messages from the server.
+
+ When neither handles are signaled in time and the session is not closing, then the
+ session is disconnected.
+
+
+
+
+ Waits for the specified handle or the exception handle for the receive thread
+ to signal within the connection timeout.
+
+ The wait handle.
+ A received package was invalid or failed the message integrity check.
+ None of the handles are signaled in time and the session is not disconnecting.
+ A socket error was signaled while receiving messages from the server.
+
+ When neither handles are signaled in time and the session is not closing, then the
+ session is disconnected.
+
+
+
+
+ Waits for the specified to receive a signal, using a
+ to specify the time interval.
+
+ The that should be signaled.
+ A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely.
+
+ A .
+
+
+
+
+ Waits for the specified to receive a signal, using a
+ to specify the time interval.
+
+ The that should be signaled.
+ A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely.
+ When this method returns , contains the .
+
+ A .
+
+
+
+
+ Waits for the specified to receive a signal, using a
+ to specify the time interval.
+
+ The that should be signaled.
+ A that represents the number of milliseconds to wait, or a that represents -1 milliseconds to wait indefinitely.
+ When this method returns , contains the .
+
+ A .
+
+
+
+
+ Waits for the specified handle or the exception handle for the receive thread
+ to signal within the specified timeout.
+
+ The wait handle.
+ The time to wait for any of the handles to become signaled.
+ A received package was invalid or failed the message integrity check.
+ None of the handles are signaled in time and the session is not disconnecting.
+ A socket error was signaled while receiving messages from the server.
+
+
+
+ Sends a message to the server.
+
+ The message to send.
+ The client is not connected.
+ The operation timed out.
+ The size of the packet exceeds the maximum size defined by the protocol.
+
+
+
+ Sends an SSH packet to the server.
+
+ A byte array containing the packet to send.
+ The offset of the packet.
+ The length of the packet.
+ Client is not connected to the server.
+
+
+ The send is performed in a dispose lock to avoid
+ and/or when sending the packet.
+
+
+ This method is only to be used when the connection is established, as the locking
+ overhead is not required while establising the connection.
+
+
+
+
+
+ Sends a message to the server.
+
+ The message to send.
+
+ true if the message was sent to the server; otherwise, false.
+
+ The size of the packet exceeds the maximum size defined by the protocol.
+
+ This methods returns false when the attempt to send the message results in a
+ or a .
+
+
+
+
+ Receives the message from the server.
+
+
+ The incoming SSH message, or null if the connection with the SSH server was closed.
+
+
+ We need no locking here since all messages are read by a single thread.
+
+
+
+
+ Called when received.
+
+ message.
+
+
+
+ Called when received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when client is disconnecting from the server.
+
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Called when message received.
+
+ message.
+
+
+
+ Registers SSH message with the session.
+
+ The name of the message to register with the session.
+
+
+
+ Unregister SSH message from the session.
+
+ The name of the message to unregister with the session.
+
+
+
+ Loads a message from a given buffer.
+
+ An array of bytes from which to construct the message.
+ The zero-based byte offset in at which to begin reading.
+ The number of bytes to load.
+
+ A message constructed from .
+
+ The type of the message is not supported.
+
+
+
+ Gets a value indicating whether the socket is connected.
+
+
+ true if the socket is connected; otherwise, false.
+
+
+
+ As a first check we verify whether is
+ true. However, this only returns the state of the socket as of
+ the last I/O operation.
+
+
+ Therefore we use the combination of with mode
+ and to verify if the socket is still connected.
+
+
+ The MSDN doc mention the following on the return value of
+ with mode :
+
+ -
+ true if data is available for reading;
+
+ -
+ true if the connection has been closed, reset, or terminated; otherwise, returns false.
+
+
+
+
+ Conclusion: when the return value is true - but no data is available for reading - then
+ the socket is no longer connected.
+
+
+ When a is used from multiple threads, there's a race condition
+ between the invocation of and the moment
+ when the value of is obtained. To workaround this issue
+ we synchronize reads from the .
+
+
+
+
+
+ Performs a blocking read on the socket until bytes are received.
+
+ The to read from.
+ An array of type that is the storage location for the received data.
+ The position in parameter to store the received data.
+ The number of bytes to read.
+
+ The number of bytes read.
+
+ The read has timed-out.
+ The read failed.
+
+
+
+ Shuts down and disposes the socket.
+
+
+
+
+ Listens for incoming message from the server and handles them. This method run as a task on separate thread.
+
+
+
+
+ Raises the event.
+
+ The .
+
+
+
+ Resets connection-specific information to ensure state of a previous connection
+ does not affect new connections.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Gets or sets the connection info.
+
+ The connection info.
+
+
+
+ Create a new SSH session channel.
+
+
+ A new SSH session channel.
+
+
+
+
+ Create a new channel for a locally forwarded TCP/IP port.
+
+
+ A new channel for a locally forwarded TCP/IP port.
+
+
+
+
+ Creates a "forwarded-tcpip" SSH channel.
+
+
+ A new "forwarded-tcpip" SSH channel.
+
+
+
+
+ Sends a message to the server.
+
+ The message to send.
+ The client is not connected.
+ The operation timed out.
+ The size of the packet exceeds the maximum size defined by the protocol.
+
+
+
+ Sends a message to the server.
+
+ The message to send.
+
+ true if the message was sent to the server; otherwise, false.
+
+ The size of the packet exceeds the maximum size defined by the protocol.
+
+ This methods returns false when the attempt to send the message results in a
+ or a .
+
+
+
+
+ Represents the result of a wait operations.
+
+
+
+
+ The was signaled within the specified interval.
+
+
+
+
+ The was not signaled within the specified interval.
+
+
+
+
+ The session is in a disconnected state.
+
+
+
+
+ The session is in a failed state.
+
+
+
+
+ Implementation of the SSH File Transfer Protocol (SFTP) over SSH.
+
+
+
+
+ Holds the instance that is used to communicate to the
+ SFTP server.
+
+
+
+
+ Holds the operation timeout.
+
+
+
+
+ Holds the size of the buffer.
+
+
+
+
+ Gets or sets the operation timeout.
+
+
+ The timeout to wait until an operation completes. The default value is negative
+ one (-1) milliseconds, which indicates an infinite timeout period.
+
+ The method was called after the client was disposed.
+ represents a value that is less than -1 or greater than milliseconds.
+
+
+
+ Gets or sets the maximum size of the buffer in bytes.
+
+
+ The size of the buffer. The default buffer size is 32768 bytes (32 KB).
+
+
+
+ For write operations, this limits the size of the payload for
+ individual SSH_FXP_WRITE messages. The actual size is always
+ capped at the maximum packet size supported by the peer
+ (minus the size of protocol fields).
+
+
+ For read operations, this controls the size of the payload which
+ is requested from the peer in a SSH_FXP_READ message. The peer
+ will send the requested number of bytes in a SSH_FXP_DATA message,
+ possibly split over multiple SSH_MSG_CHANNEL_DATA messages.
+
+
+ To optimize the size of the SSH packets sent by the peer,
+ the actual requested size will take into account the size of the
+ SSH_FXP_DATA protocol fields.
+
+
+ The size of the each indivual SSH_FXP_DATA message is limited to the
+ local maximum packet size of the channel, which is set to 64 KB
+ for SSH.NET. However, the peer can limit this even further.
+
+
+ The method was called after the client was disposed.
+
+
+
+ Gets remote working directory.
+
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Gets sftp protocol version.
+
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Gets the current SFTP session.
+
+
+ The current SFTP session.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ is null.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Authentication username.
+ Authentication password.
+ is null.
+ is invalid. -or- is null or contains only whitespace characters.
+ is not within and .
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Authentication username.
+ Authentication password.
+ is null.
+ is invalid. -or- is null contains only whitespace characters.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Authentication username.
+ Authentication private key file(s) .
+ is null.
+ is invalid. -or- is nunullll or contains only whitespace characters.
+ is not within and .
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Authentication username.
+ Authentication private key file(s) .
+ is null.
+ is invalid. -or- is null or contains only whitespace characters.
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ Specified whether this instance owns the connection info.
+ is null.
+
+ If is true, the connection info will be disposed when this
+ instance is disposed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ Specified whether this instance owns the connection info.
+ The factory to use for creating new services.
+ is null.
+ is null.
+
+ If is true, the connection info will be disposed when this
+ instance is disposed.
+
+
+
+
+ Changes remote directory to path.
+
+ New directory path.
+ is null.
+ Client is not connected.
+ Permission to change directory denied by remote host. -or- A SSH command was denied by the server.
+ was not found on the remote host.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Changes permissions of file(s) to specified mode.
+
+ File(s) path, may match multiple files.
+ The mode.
+ is null.
+ Client is not connected.
+ Permission to change permission on the path(s) was denied by the remote host. -or- A SSH command was denied by the server.
+ was not found on the remote host.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Creates remote directory specified by path.
+
+ Directory path to create.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to create the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Deletes remote directory specified by path.
+
+ Directory to be deleted path.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ was not found on the remote host.
+ Permission to delete the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Deletes remote file specified by path.
+
+ File to be deleted path.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ was not found on the remote host.
+ Permission to delete the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Renames remote file from old path to new path.
+
+ Path to the old file location.
+ Path to the new file location.
+ is null. -or- or is null.
+ Client is not connected.
+ Permission to rename the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Renames remote file from old path to new path.
+
+ Path to the old file location.
+ Path to the new file location.
+ if set to true then perform a posix rename.
+ is null. -or- or is null.
+ Client is not connected.
+ Permission to rename the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Creates a symbolic link from old path to new path.
+
+ The old path.
+ The new path.
+ is null. -or- is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to create the symbolic link was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Retrieves list of files in remote directory.
+
+ The path.
+ The list callback.
+
+ A list of files.
+
+ is null.
+ Client is not connected.
+ Permission to list the contents of the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Begins an asynchronous operation of retrieving list of files in remote directory.
+
+ The path.
+ The method to be called when the asynchronous write operation is completed.
+ A user-provided object that distinguishes this particular asynchronous write request from other requests.
+ The list callback.
+
+ An that references the asynchronous operation.
+
+ The method was called after the client was disposed.
+
+
+
+ Ends an asynchronous operation of retrieving list of files in remote directory.
+
+ The pending asynchronous SFTP request.
+
+ A list of files.
+
+ The object did not come from the corresponding async method on this type.-or- was called multiple times with the same .
+
+
+
+ Gets reference to remote file or directory.
+
+ The path.
+
+ A reference to file object.
+
+ Client is not connected.
+ was not found on the remote host.
+ is null.
+ The method was called after the client was disposed.
+
+
+
+ Checks whether file or directory exists;
+
+ The path.
+
+ true if directory or file exists; otherwise false.
+
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to perform the operation was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Downloads remote file specified by the path into the stream.
+
+ File to download.
+ Stream to write the file into.
+ The download callback.
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to perform the operation was denied by the remote host. -or- A SSH command was denied by the server.
+ was not found on the remote host.///
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Begins an asynchronous file downloading into the stream.
+
+ The path.
+ The output.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to perform the operation was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Begins an asynchronous file downloading into the stream.
+
+ The path.
+ The output.
+ The method to be called when the asynchronous write operation is completed.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to perform the operation was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Begins an asynchronous file downloading into the stream.
+
+ The path.
+ The output.
+ The method to be called when the asynchronous write operation is completed.
+ A user-provided object that distinguishes this particular asynchronous write request from other requests.
+ The download callback.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Ends an asynchronous file downloading into the stream.
+
+ The pending asynchronous SFTP request.
+ The object did not come from the corresponding async method on this type.-or- was called multiple times with the same .
+ Client is not connected.
+ Permission to perform the operation was denied by the remote host. -or- A SSH command was denied by the server.
+ The path was not found on the remote host.
+ A SSH error where is the message from the remote host.
+
+
+
+ Uploads stream into remote file.
+
+ Data input stream.
+ Remote file path.
+ The upload callback.
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to upload the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Uploads stream into remote file.
+
+ Data input stream.
+ Remote file path.
+ if set to true then existing file will be overwritten.
+ The upload callback.
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to upload the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+
+
+ Begins an asynchronous uploading the stream into remote file.
+
+ Data input stream.
+ Remote file path.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to list the contents of the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+ If the remote file already exists, it is overwritten and truncated.
+
+
+
+
+
+ Begins an asynchronous uploading the stream into remote file.
+
+ Data input stream.
+ Remote file path.
+ The method to be called when the asynchronous write operation is completed.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to list the contents of the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+ If the remote file already exists, it is overwritten and truncated.
+
+
+
+
+
+ Begins an asynchronous uploading the stream into remote file.
+
+ Data input stream.
+ Remote file path.
+ The method to be called when the asynchronous write operation is completed.
+ A user-provided object that distinguishes this particular asynchronous write request from other requests.
+ The upload callback.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ Client is not connected.
+ Permission to list the contents of the directory was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+ The method was called after the client was disposed.
+
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+ If the remote file already exists, it is overwritten and truncated.
+
+
+
+
+
+ Begins an asynchronous uploading the stream into remote file.
+
+ Data input stream.
+ Remote file path.
+ Specified whether an existing file can be overwritten.
+ The method to be called when the asynchronous write operation is completed.
+ A user-provided object that distinguishes this particular asynchronous write request from other requests.
+ The upload callback.
+
+ An that references the asynchronous operation.
+
+ is null.
+ is null or contains only whitespace characters.
+ The method was called after the client was disposed.
+
+
+ Method calls made by this method to , may under certain conditions result in exceptions thrown by the stream.
+
+
+ When refers to an existing file, set to true to overwrite and truncate that file.
+ If is false, the upload will fail and will throw an
+ .
+
+
+
+
+
+ Ends an asynchronous uploading the stream into remote file.
+
+ The pending asynchronous SFTP request.
+ The object did not come from the corresponding async method on this type.-or- was called multiple times with the same .
+ Client is not connected.
+ The directory of the file was not found on the remote host.
+ Permission to upload the file was denied by the remote host. -or- A SSH command was denied by the server.
+ A SSH error where is the message from the remote host.
+
+
+
+ Gets status using statvfs@openssh.com request.
+
+ The path.
+
+ A instance that contains file status information.
+
+ Client is not connected.
+ is null.
+ The method was called after the client was disposed.
+
+
+
+ Appends lines to a file, creating the file if it does not already exist.
+
+ The file to append the lines to. The file is created if it does not already exist.
+ The lines to append to the file.
+ isnull -or- is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+ The characters are written to the file using UTF-8 encoding without a Byte-Order Mark (BOM)
+
+
+
+
+ Appends lines to a file by using a specified encoding, creating the file if it does not already exist.
+
+ The file to append the lines to. The file is created if it does not already exist.
+ The lines to append to the file.
+ The character encoding to use.
+ is null. -or- is null. -or- is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Appends the specified string to the file, creating the file if it does not already exist.
+
+ The file to append the specified string to.
+ The string to append to the file.
+ is null. -or- is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+ The characters are written to the file using UTF-8 encoding without a Byte-Order Mark (BOM).
+
+
+
+
+ Appends the specified string to the file, creating the file if it does not already exist.
+
+ The file to append the specified string to.
+ The string to append to the file.
+ The character encoding to use.
+ is null. -or- is null. -or- is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Creates a that appends UTF-8 encoded text to the specified file,
+ creating the file if it does not already exist.
+
+ The path to the file to append to.
+
+ A that appends text to a file using UTF-8 encoding without a
+ Byte-Order Mark (BOM).
+
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Creates a that appends text to a file using the specified
+ encoding, creating the file if it does not already exist.
+
+ The path to the file to append to.
+ The character encoding to use.
+
+ A that appends text to a file using the specified encoding.
+
+ is null. -or- is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Creates or overwrites a file in the specified path.
+
+ The path and name of the file to create.
+
+ A that provides read/write access to the file specified in path.
+
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+ If the target file already exists, it is first truncated to zero bytes.
+
+
+
+
+ Creates or overwrites the specified file.
+
+ The path and name of the file to create.
+ The maximum number of bytes buffered for reads and writes to the file.
+
+ A that provides read/write access to the file specified in path.
+
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+ If the target file already exists, it is first truncated to zero bytes.
+
+
+
+
+ Creates or opens a file for writing UTF-8 encoded text.
+
+ The file to be opened for writing.
+
+ A that writes text to a file using UTF-8 encoding without
+ a Byte-Order Mark (BOM).
+
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Creates or opens a file for writing text using the specified encoding.
+
+ The file to be opened for writing.
+ The character encoding to use.
+
+ A that writes to a file using the specified encoding.
+
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Deletes the specified file or directory.
+
+ The name of the file or directory to be deleted. Wildcard characters are not supported.
+ is null.
+ Client is not connected.
+ was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Returns the date and time the specified file or directory was last accessed.
+
+ The file or directory for which to obtain access date and time information.
+
+ A structure set to the date and time that the specified file or directory was last accessed.
+ This value is expressed in local time.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last accessed.
+
+ The file or directory for which to obtain access date and time information.
+
+ A structure set to the date and time that the specified file or directory was last accessed.
+ This value is expressed in UTC time.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Returns the date and time the specified file or directory was last written to.
+
+ The file or directory for which to obtain write date and time information.
+
+ A structure set to the date and time that the specified file or directory was last written to.
+ This value is expressed in local time.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Returns the date and time, in coordinated universal time (UTC), that the specified file or directory was last written to.
+
+ The file or directory for which to obtain write date and time information.
+
+ A structure set to the date and time that the specified file or directory was last written to.
+ This value is expressed in UTC time.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a on the specified path with read/write access.
+
+ The file to open.
+ A value that specifies whether a file is created if one does not exist, and determines whether the contents of existing files are retained or overwritten.
+
+ An unshared that provides access to the specified file, with the specified mode and read/write access.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a on the specified path, with the specified mode and access.
+
+ The file to open.
+ A value that specifies whether a file is created if one does not exist, and determines whether the contents of existing files are retained or overwritten.
+ A value that specifies the operations that can be performed on the file.
+
+ An unshared that provides access to the specified file, with the specified mode and access.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens an existing file for reading.
+
+ The file to be opened for reading.
+
+ A read-only on the specified path.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens an existing UTF-8 encoded text file for reading.
+
+ The file to be opened for reading.
+
+ A on the specified path.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a file for writing.
+
+ The file to be opened for writing.
+
+ An unshared object on the specified path with access.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+ If the file does not exist, it is created.
+
+
+
+
+ Opens a binary file, reads the contents of the file into a byte array, and closes the file.
+
+ The file to open for reading.
+
+ A byte array containing the contents of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a text file, reads all lines of the file using UTF-8 encoding, and closes the file.
+
+ The file to open for reading.
+
+ A string array containing all lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a file, reads all lines of the file with the specified encoding, and closes the file.
+
+ The file to open for reading.
+ The encoding applied to the contents of the file.
+
+ A string array containing all lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a text file, reads all lines of the file with the UTF-8 encoding, and closes the file.
+
+ The file to open for reading.
+
+ A string containing all lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Opens a file, reads all lines of the file with the specified encoding, and closes the file.
+
+ The file to open for reading.
+ The encoding applied to the contents of the file.
+
+ A string containing all lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Reads the lines of a file with the UTF-8 encoding.
+
+ The file to read.
+
+ The lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Read the lines of a file that has a specified encoding.
+
+ The file to read.
+ The encoding that is applied to the contents of the file.
+
+ The lines of the file.
+
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Sets the date and time the specified file was last accessed.
+
+ The file for which to set the access date and time information.
+ A containing the value to set for the last access date and time of path. This value is expressed in local time.
+
+
+
+ Sets the date and time, in coordinated universal time (UTC), that the specified file was last accessed.
+
+ The file for which to set the access date and time information.
+ A containing the value to set for the last access date and time of path. This value is expressed in UTC time.
+
+
+
+ Sets the date and time that the specified file was last written to.
+
+ The file for which to set the date and time information.
+ A containing the value to set for the last write date and time of path. This value is expressed in local time.
+
+
+
+ Sets the date and time, in coordinated universal time (UTC), that the specified file was last written to.
+
+ The file for which to set the date and time information.
+ A containing the value to set for the last write date and time of path. This value is expressed in UTC time.
+
+
+
+ Writes the specified byte array to the specified file, and closes the file.
+
+ The file to write to.
+ The bytes to write to the file.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Writes a collection of strings to the file using the UTF-8 encoding, and closes the file.
+
+ The file to write to.
+ The lines to write to the file.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ The characters are written to the file using UTF-8 encoding without a Byte-Order Mark (BOM).
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Write the specified string array to the file using the UTF-8 encoding, and closes the file.
+
+ The file to write to.
+ The string array to write to the file.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ The characters are written to the file using UTF-8 encoding without a Byte-Order Mark (BOM).
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Writes a collection of strings to the file using the specified encoding, and closes the file.
+
+ The file to write to.
+ The lines to write to the file.
+ The character encoding to use.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Writes the specified string array to the file by using the specified encoding, and closes the file.
+
+ The file to write to.
+ The string array to write to the file.
+ An object that represents the character encoding applied to the string array.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Writes the specified string to the file using the UTF-8 encoding, and closes the file.
+
+ The file to write to.
+ The string to write to the file.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ The characters are written to the file using UTF-8 encoding without a Byte-Order Mark (BOM).
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Writes the specified string to the file using the specified encoding, and closes the file.
+
+ The file to write to.
+ The string to write to the file.
+ The encoding to apply to the string.
+ is null.
+ Client is not connected.
+ The specified path is invalid, or its directory was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+ If the target file already exists, it is overwritten. It is not first truncated to zero bytes.
+
+
+ If the target file does not exist, it is created.
+
+
+
+
+
+ Gets the of the file on the path.
+
+ The path to the file.
+
+ The of the file on the path.
+
+ is null.
+ Client is not connected.
+ was not found on the remote host.
+ The method was called after the client was disposed.
+
+
+
+ Sets the specified of the file on the specified path.
+
+ The path to the file.
+ The desired .
+ is null.
+ Client is not connected.
+ The method was called after the client was disposed.
+
+
+
+ Synchronizes the directories.
+
+ The source path.
+ The destination path.
+ The search pattern.
+
+ A list of uploaded files.
+
+ is null.
+ is null or contains only whitespace.
+ was not found on the remote host.
+
+
+
+ Begins the synchronize directories.
+
+ The source path.
+ The destination path.
+ The search pattern.
+ The async callback.
+ The state.
+
+ An that represents the asynchronous directory synchronization.
+
+ is null.
+ is null or contains only whitespace.
+
+
+
+ Ends the synchronize directories.
+
+ The async result.
+
+ A list of uploaded files.
+
+ The object did not come from the corresponding async method on this type.-or- was called multiple times with the same .
+ The destination path was not found on the remote host.
+
+
+
+ Internals the list directory.
+
+ The path.
+ The list callback.
+
+ A list of files in the specfied directory.
+
+ is null.
+ Client not connected.
+
+
+
+ Internals the download file.
+
+ The path.
+ The output.
+ An that references the asynchronous request.
+ The download callback.
+ is null.
+ is null or contains whitespace.
+ Client not connected.
+
+
+
+ Internals the upload file.
+
+ The input.
+ The path.
+ The flags.
+ An that references the asynchronous request.
+ The upload callback.
+ is null.
+ is null or contains whitespace.
+ Client not connected.
+
+
+
+ Called when client is connected to the server.
+
+
+
+
+ Called when client is disconnecting from the server.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ SSH_FXF_READ
+
+
+
+
+ SSH_FXF_WRITE
+
+
+
+
+ SSH_FXF_APPEND
+
+
+
+
+ SSH_FXF_CREAT
+
+
+
+
+ SSH_FXF_TRUNC
+
+
+
+
+ SSH_FXF_EXCL
+
+
+
+
+ Gets the SFTP protocol version.
+
+
+ The SFTP protocol version.
+
+
+
+
+ Gets the remote working directory.
+
+
+ The remote working directory.
+
+
+
+
+ Changes the current working directory to the specified path.
+
+ The new working directory.
+
+
+
+ Resolves a given path into an absolute path on the server.
+
+ The path to resolve.
+
+ The absolute path.
+
+
+
+
+ Performs SSH_FXP_FSTAT request.
+
+ The handle.
+ if set to true returns null instead of throwing an exception.
+
+ File attributes
+
+
+
+
+ Performs SSH_FXP_STAT request.
+
+ The path.
+ if set to true returns null instead of throwing an exception.
+
+ File attributes
+
+
+
+
+ Performs SSH_FXP_STAT request
+
+ The path.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous read.
+
+ An that represents an asynchronous call.
+
+ The file attributes.
+
+ is null.
+
+
+
+ Performs SSH_FXP_LSTAT request.
+
+ The path.
+
+ File attributes
+
+
+
+
+ Performs SSH_FXP_LSTAT request.
+
+ The path.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous SSH_FXP_LSTAT request.
+
+ An that represents an asynchronous call.
+
+ The file attributes.
+
+ is null.
+
+
+
+ Performs SSH_FXP_MKDIR request.
+
+ The path.
+
+
+
+ Performs SSH_FXP_OPEN request
+
+ The path.
+ The flags.
+ if set to true returns null instead of throwing an exception.
+ File handle.
+
+
+
+ Performs SSH_FXP_OPEN request
+
+ The path.
+ The flags.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous read.
+
+ An that represents an asynchronous call.
+
+ A array representing a file handle.
+
+
+ If all available data has been read, the method completes
+ immediately and returns zero bytes.
+
+ is null.
+
+
+
+ Performs SSH_FXP_OPENDIR request
+
+ The path.
+ if set to true returns null instead of throwing an exception.
+ File handle.
+
+
+
+ Performs posix-rename@openssh.com extended request.
+
+ The old path.
+ The new path.
+
+
+
+ Performs SSH_FXP_READ request.
+
+ The handle.
+ The offset.
+ The length.
+ data array; null if EOF
+
+
+
+ Begins an asynchronous read using a SSH_FXP_READ request.
+
+ The handle to the file to read from.
+ The offset in the file to start reading from.
+ The number of bytes to read.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous read.
+
+ An that represents an asynchronous call.
+
+ A array representing the data read.
+
+
+ If all available data has been read, the method completes
+ immediately and returns zero bytes.
+
+ is null.
+
+
+
+ Performs SSH_FXP_READDIR request
+
+ The handle.
+
+
+
+
+ Performs SSH_FXP_REALPATH request.
+
+ The path.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous SSH_FXP_REALPATH request.
+
+ An that represents an asynchronous call.
+
+ The absolute path.
+
+ is null.
+
+
+
+ Performs SSH_FXP_REMOVE request.
+
+ The path.
+
+
+
+ Performs SSH_FXP_RENAME request.
+
+ The old path.
+ The new path.
+
+
+
+ Performs SSH_FXP_RMDIR request.
+
+ The path.
+
+
+
+ Performs SSH_FXP_SETSTAT request.
+
+ The path.
+ The attributes.
+
+
+
+ Performs statvfs@openssh.com extended request.
+
+ The path.
+ if set to true [null on error].
+
+
+
+
+ Performs SSH_FXP_SYMLINK request.
+
+ The linkpath.
+ The targetpath.
+
+
+
+ Performs SSH_FXP_FSETSTAT request.
+
+ The handle.
+ The attributes.
+
+
+
+ Performs SSH_FXP_WRITE request.
+
+ The handle.
+ The the zero-based offset (in bytes) relative to the beginning of the file that the write must start at.
+ The buffer holding the data to write.
+ the zero-based offset in at which to begin taking bytes to write.
+ The length (in bytes) of the data to write.
+ The wait event handle if needed.
+ The callback to invoke when the write has completed.
+
+
+
+ Performs SSH_FXP_CLOSE request.
+
+ The handle.
+
+
+
+ Performs SSH_FXP_CLOSE request.
+
+ The handle.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous close.
+
+ An that represents an asynchronous call.
+ is null.
+
+
+
+ Calculates the optimal size of the buffer to read data from the channel.
+
+ The buffer size configured on the client.
+
+ The optimal size of the buffer to read data from the channel.
+
+
+
+
+ Calculates the optimal size of the buffer to write data on the channel.
+
+ The buffer size configured on the client.
+ The file handle.
+
+ The optimal size of the buffer to write data on the channel.
+
+
+ Currently, we do not take the remote window size into account.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The protocol version.
+ The request id.
+ Specifies the path name of the new link to create.
+ Specifies the path of a target object to which the newly created link will refer. In the case of a symbolic link, this path may not exist.
+ if set to false the link should be a hard link, or a second directory entry referring to the same file or directory object.
+ The status action.
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Gets the zero-based offset (in bytes) relative to the beginning of the file that the write
+ must start at.
+
+
+ The zero-based offset (in bytes) relative to the beginning of the file that the write must
+ start at.
+
+
+
+
+ Gets the buffer holding the data to write.
+
+
+ The buffer holding the data to write.
+
+
+
+
+ Gets the zero-based offset in at which to begin taking bytes to
+ write.
+
+
+ The zero-based offset in at which to begin taking bytes to write.
+
+
+
+
+ Gets the length (in bytes) of the data to write.
+
+
+ The length (in bytes) of the data to write.
+
+
+
+
+ Encapsulates the results of an asynchronous download operation.
+
+
+
+
+ Gets or sets a value indicating whether to cancel asynchronous download operation.
+
+
+ true if download operation to be canceled; otherwise, false.
+
+
+ Download operation will be canceled after finishing uploading current buffer.
+
+
+
+
+ Gets the number of downloaded bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async callback.
+ The state.
+
+
+
+ Updates asynchronous operation status information.
+
+ Number of downloaded bytes.
+
+
+
+ Represents SFTP file information
+
+
+
+
+ Gets the file attributes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The SFTP session.
+ Full path of the directory or file.
+ Attributes of the directory or file.
+ or is null.
+
+
+
+ Gets the full path of the directory or file.
+
+
+
+
+ For files, gets the name of the file. For directories, gets the name of the last directory in the hierarchy if a hierarchy exists.
+ Otherwise, the Name property gets the name of the directory.
+
+
+
+
+ Gets or sets the time the current file or directory was last accessed.
+
+
+ The time that the current file or directory was last accessed.
+
+
+
+
+ Gets or sets the time when the current file or directory was last written to.
+
+
+ The time the current file was last written.
+
+
+
+
+ Gets or sets the time, in coordinated universal time (UTC), the current file or directory was last accessed.
+
+
+ The time that the current file or directory was last accessed.
+
+
+
+
+ Gets or sets the time, in coordinated universal time (UTC), when the current file or directory was last written to.
+
+
+ The time the current file was last written.
+
+
+
+
+ Gets or sets the size, in bytes, of the current file.
+
+
+ The size of the current file in bytes.
+
+
+
+
+ Gets or sets file user id.
+
+
+ File user id.
+
+
+
+
+ Gets or sets file group id.
+
+
+ File group id.
+
+
+
+
+ Gets a value indicating whether file represents a socket.
+
+
+ true if file represents a socket; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a symbolic link.
+
+
+ true if file represents a symbolic link; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a regular file.
+
+
+ true if file represents a regular file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a block device.
+
+
+ true if file represents a block device; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a directory.
+
+
+ true if file represents a directory; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a character device.
+
+
+ true if file represents a character device; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a named pipe.
+
+
+ true if file represents a named pipe; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the owner can read from this file.
+
+
+ true if owner can read from this file; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the owner can write into this file.
+
+
+ true if owner can write into this file; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the owner can execute this file.
+
+
+ true if owner can execute this file; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the group members can read from this file.
+
+
+ true if group members can read from this file; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the group members can write into this file.
+
+
+ true if group members can write into this file; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the group members can execute this file.
+
+
+ true if group members can execute this file; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the others can read from this file.
+
+
+ true if others can read from this file; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the others can write into this file.
+
+
+ true if others can write into this file; otherwise, false.
+
+
+
+
+ Gets or sets a value indicating whether the others can execute this file.
+
+
+ true if others can execute this file; otherwise, false.
+
+
+
+
+ Sets file permissions.
+
+ The mode.
+
+
+
+ Permanently deletes a file on remote machine.
+
+
+
+
+ Moves a specified file to a new location on remote machine, providing the option to specify a new file name.
+
+ The path to move the file to, which can specify a different file name.
+ is null.
+
+
+
+ Updates file status on the server.
+
+
+
+
+ Returns a that represents this instance.
+
+
+ A that represents this instance.
+
+
+
+
+ Contains SFTP file attributes.
+
+
+
+
+ Gets or sets the local time the current file or directory was last accessed.
+
+
+ The local time that the current file or directory was last accessed.
+
+
+
+
+ Gets or sets the local time when the current file or directory was last written to.
+
+
+ The local time the current file was last written.
+
+
+
+
+ Gets or sets the UTC time the current file or directory was last accessed.
+
+
+ The UTC time that the current file or directory was last accessed.
+
+
+
+
+ Gets or sets the UTC time when the current file or directory was last written to.
+
+
+ The UTC time the current file was last written.
+
+
+
+
+ Gets or sets the size, in bytes, of the current file.
+
+
+ The size of the current file in bytes.
+
+
+
+
+ Gets or sets file user id.
+
+
+ File user id.
+
+
+
+
+ Gets or sets file group id.
+
+
+ File group id.
+
+
+
+
+ Gets a value indicating whether file represents a socket.
+
+
+ true if file represents a socket; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a symbolic link.
+
+
+ true if file represents a symbolic link; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a regular file.
+
+
+ true if file represents a regular file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a block device.
+
+
+ true if file represents a block device; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a directory.
+
+
+ true if file represents a directory; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a character device.
+
+
+ true if file represents a character device; otherwise, false.
+
+
+
+
+ Gets a value indicating whether file represents a named pipe.
+
+
+ true if file represents a named pipe; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the owner can read from this file.
+
+
+ true if owner can read from this file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the owner can write into this file.
+
+
+ true if owner can write into this file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the owner can execute this file.
+
+
+ true if owner can execute this file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the group members can read from this file.
+
+
+ true if group members can read from this file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the group members can write into this file.
+
+
+ true if group members can write into this file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the group members can execute this file.
+
+
+ true if group members can execute this file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the others can read from this file.
+
+
+ true if others can read from this file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the others can write into this file.
+
+
+ true if others can write into this file; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the others can execute this file.
+
+
+ true if others can execute this file; otherwise, false.
+
+
+
+
+ Gets or sets the extensions.
+
+
+ The extensions.
+
+
+
+
+ Sets the permissions.
+
+ The mode.
+
+
+
+ Returns a byte array representing the current .
+
+
+ A byte array representing the current .
+
+
+
+
+ Holds the size of the file, when available.
+
+
+
+
+ Holds a value indicating whether EOF has already been signaled by the SSH server.
+
+
+
+
+ Holds a value indicating whether the client has read up to the end of the file.
+
+
+
+
+ Initializes a new instance with the specified handle,
+ and the maximum number of pending reads.
+
+
+
+ The size of a individual read-ahead chunk.
+ The maximum number of pending reads.
+ The size of the file, if known; otherwise, null.
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Returns a value indicating whether the read-ahead loop should be continued.
+
+
+ true if the read-ahead loop should be continued; otherwise, false.
+
+
+
+
+ Exposes a around a remote SFTP file, supporting both synchronous and asynchronous read and write operations.
+
+
+
+
+ Gets a value indicating whether the current stream supports reading.
+
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the current stream supports seeking.
+
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the current stream supports writing.
+
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+
+ Indicates whether timeout properties are usable for .
+
+
+ true in all cases.
+
+
+
+
+ Gets the length in bytes of the stream.
+
+ A long value representing the length of the stream in bytes.
+ A class derived from Stream does not support seeking.
+ Methods were called after the stream was closed.
+ IO operation failed.
+
+
+
+ Gets or sets the position within the current stream.
+
+ The current position within the stream.
+ An I/O error occurs.
+ The stream does not support seeking.
+ Methods were called after the stream was closed.
+
+
+
+ Gets the name of the path that was used to construct the current .
+
+
+ The name of the path that was used to construct the current .
+
+
+
+
+ Gets the operating system file handle for the file that the current encapsulates.
+
+
+ The operating system file handle for the file that the current encapsulates.
+
+
+
+
+ Gets or sets the operation timeout.
+
+
+ The timeout.
+
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written to the file.
+
+ An I/O error occurs.
+ Stream is closed.
+
+
+
+ Reads a sequence of bytes from the current stream and advances the position within the stream by the
+ number of bytes read.
+
+ An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source.
+ The zero-based byte offset in at which to begin storing the data read from the current stream.
+ The maximum number of bytes to be read from the current stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested
+ if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
+
+ The sum of and is larger than the buffer length.
+ is null.
+ or is negative.
+ An I/O error occurs.
+ The stream does not support reading.
+ Methods were called after the stream was closed.
+
+
+ This method attempts to read up to bytes. This either from the buffer, from the
+ server (using one or more SSH_FXP_READ requests) or using a combination of both.
+
+
+ The read loop is interrupted when either bytes are read, the server returns zero
+ bytes (EOF) or less bytes than the read buffer size.
+
+
+ When a server returns less number of bytes than the read buffer size, this may indicate that EOF has
+ been reached. A subsequent (SSH_FXP_READ) server request is necessary to make sure EOF has effectively
+ been reached. Breaking out of the read loop avoids reading from the server twice to determine EOF: once in
+ the read loop, and once upon the next or invocation.
+
+
+
+
+
+ Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.
+
+
+ The unsigned byte cast to an , or -1 if at the end of the stream.
+
+ The stream does not support reading.
+ Methods were called after the stream was closed.
+ Read operation failed.
+
+
+
+ Sets the position within the current stream.
+
+ A byte offset relative to the parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+ An I/O error occurs.
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+ Methods were called after the stream was closed.
+
+
+
+ Sets the length of the current stream.
+
+ The desired length of the current stream in bytes.
+ An I/O error occurs.
+ The stream does not support both writing and seeking.
+ Methods were called after the stream was closed.
+ must be greater than zero.
+
+
+ Buffers are first flushed.
+
+
+ If the specified value is less than the current length of the stream, the stream is truncated and - if the
+ current position is greater than the new length - the current position is moved to the last byte of the stream.
+
+
+ If the given value is greater than the current length of the stream, the stream is expanded and the current
+ position remains the same.
+
+
+
+
+
+ Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies bytes from to the current stream.
+ The zero-based byte offset in at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+ The sum of and is greater than the buffer length.
+ is null.
+ or is negative.
+ An I/O error occurs.
+ The stream does not support writing.
+ Methods were called after the stream was closed.
+
+
+
+ Writes a byte to the current position in the stream and advances the position within the stream by one byte.
+
+ The byte to write to the stream.
+ An I/O error occurs.
+ The stream does not support writing, or the stream is already closed.
+ Methods were called after the stream was closed.
+
+
+
+ Releases the unmanaged resources used by the and optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Flushes the read data from the buffer.
+
+
+
+
+ Flush any buffered write data to the file.
+
+
+
+
+ Setups the read.
+
+
+
+
+ Setups the write.
+
+
+
+
+ Contains File system information exposed by statvfs@openssh.com request.
+
+
+
+
+ Gets the file system block size.
+
+
+ The file system block size.
+
+
+
+
+ Gets the fundamental file system size of the block.
+
+
+ The fundamental file system block size.
+
+
+
+
+ Gets the total blocks.
+
+
+ The total blocks.
+
+
+
+
+ Gets the free blocks.
+
+
+ The free blocks.
+
+
+
+
+ Gets the available blocks.
+
+
+ The available blocks.
+
+
+
+
+ Gets the total nodes.
+
+
+ The total nodes.
+
+
+
+
+ Gets the free nodes.
+
+
+ The free nodes.
+
+
+
+
+ Gets the available nodes.
+
+
+ The available nodes.
+
+
+
+
+ Gets the sid.
+
+
+ The sid.
+
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ true if this instance is read only; otherwise, false.
+
+
+
+
+ Gets a value indicating whether [supports set uid].
+
+
+ true if [supports set uid]; otherwise, false.
+
+
+
+
+ Gets the max name lenght.
+
+
+ The max name lenght.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The bsize.
+ The frsize.
+ The blocks.
+ The bfree.
+ The bavail.
+ The files.
+ The ffree.
+ The favail.
+ The sid.
+ The flag.
+ The namemax.
+
+
+
+ Encapsulates the results of an asynchronous directory list operation.
+
+
+
+
+ Gets the number of files read so far.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async callback.
+ The state.
+
+
+
+ Updates asynchronous operation status information.
+
+ The files read.
+
+
+
+ Gets the size of the message in bytes.
+
+
+ The size of the messages in bytes.
+
+
+
+
+ Writes the current message to the specified .
+
+ The to write the message to.
+
+
+
+ SSH_FXP_INIT
+
+
+
+
+ SSH_FXP_VERSION
+
+
+
+
+ SSH_FXP_OPEN
+
+
+
+
+ SSH_FXP_CLOSE
+
+
+
+
+ SSH_FXP_READ
+
+
+
+
+ SSH_FXP_WRITE
+
+
+
+
+ SSH_FXP_LSTAT
+
+
+
+
+ SSH_FXP_FSTAT
+
+
+
+
+ SSH_FXP_SETSTAT
+
+
+
+
+ SSH_FXP_FSETSTAT
+
+
+
+
+ SSH_FXP_OPENDIR
+
+
+
+
+ SSH_FXP_READDIR
+
+
+
+
+ SSH_FXP_REMOVE
+
+
+
+
+ SSH_FXP_MKDIR
+
+
+
+
+ SSH_FXP_RMDIR
+
+
+
+
+ SSH_FXP_REALPATH
+
+
+
+
+ SSH_FXP_STAT
+
+
+
+
+ SSH_FXP_RENAME
+
+
+
+
+ SSH_FXP_READLINK
+
+
+
+
+ SSH_FXP_SYMLINK
+
+
+
+
+ SSH_FXP_LINK
+
+
+
+
+ SSH_FXP_BLOCK
+
+
+
+
+ SSH_FXP_UNBLOCK
+
+
+
+
+ SSH_FXP_STATUS
+
+
+
+
+ SSH_FXP_HANDLE
+
+
+
+
+ SSH_FXP_DATA
+
+
+
+
+ SSH_FXP_NAME
+
+
+
+
+ SSH_FXP_ATTRS
+
+
+
+
+ SSH_FXP_EXTENDED
+
+
+
+
+ SSH_FXP_EXTENDED_REPLY
+
+
+
+
+ Gets the character encoding to use.
+
+
+
+
+ Gets the remote working directory.
+
+
+ The remote working directory.
+
+
+
+
+ Gets the SFTP protocol version.
+
+
+ The SFTP protocol version.
+
+
+
+
+ Gets the next request id for sftp session.
+
+
+
+
+ Changes the current working directory to the specified path.
+
+ The new working directory.
+
+
+
+ Resolves a given path into an absolute path on the server.
+
+ The path to resolve.
+
+ The absolute path.
+
+
+
+
+ Performs SSH_FXP_OPEN request
+
+ The path.
+ The flags.
+ if set to true returns null instead of throwing an exception.
+ File handle.
+
+
+
+ Performs SSH_FXP_OPEN request
+
+ The path.
+ The flags.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous open.
+
+ An that represents an asynchronous call.
+
+ A array representing a file handle.
+
+
+ If all available data has been read, the method completes
+ immediately and returns zero bytes.
+
+ is null.
+
+
+
+ Performs SSH_FXP_CLOSE request.
+
+ The handle.
+
+
+
+ Performs SSH_FXP_CLOSE request.
+
+ The handle.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous close.
+
+ An that represents an asynchronous call.
+ is null.
+
+
+
+ Begins an asynchronous read using a SSH_FXP_READ request.
+
+ The handle to the file to read from.
+ The offset in the file to start reading from.
+ The number of bytes to read.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous read.
+
+ An that represents an asynchronous call.
+
+ A array representing the data read.
+
+
+ If all available data has been read, the method completes
+ immediately and returns zero bytes.
+
+ is null.
+
+
+
+ Performs SSH_FXP_READ request.
+
+ The handle.
+ The offset.
+ The length.
+ data array; null if EOF
+
+
+
+ Performs SSH_FXP_WRITE request.
+
+ The handle.
+ The the zero-based offset (in bytes) relative to the beginning of the file that the write must start at.
+ The buffer holding the data to write.
+ the zero-based offset in at which to begin taking bytes to write.
+ The length (in bytes) of the data to write.
+ The wait event handle if needed.
+ The callback to invoke when the write has completed.
+
+
+
+ Performs SSH_FXP_LSTAT request.
+
+ The path.
+
+ File attributes
+
+
+
+
+ Performs SSH_FXP_LSTAT request.
+
+ The path.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous SSH_FXP_LSTAT request.
+
+ An that represents an asynchronous call.
+
+ The file attributes.
+
+ is null.
+
+
+
+ Performs SSH_FXP_FSTAT request.
+
+ The handle.
+ if set to true returns null instead of throwing an exception.
+
+ File attributes
+
+
+
+
+ Performs SSH_FXP_SETSTAT request.
+
+ The path.
+ The attributes.
+
+
+
+ Performs SSH_FXP_FSETSTAT request.
+
+ The handle.
+ The attributes.
+
+
+
+ Performs SSH_FXP_OPENDIR request
+
+ The path.
+ if set to true returns null instead of throwing an exception.
+ File handle.
+
+
+
+ Performs SSH_FXP_READDIR request
+
+ The handle.
+
+
+
+
+ Performs SSH_FXP_REMOVE request.
+
+ The path.
+
+
+
+ Performs SSH_FXP_MKDIR request.
+
+ The path.
+
+
+
+ Performs SSH_FXP_RMDIR request.
+
+ The path.
+
+
+
+ Performs SSH_FXP_REALPATH request
+
+ The path.
+ if set to true returns null instead of throwing an exception.
+
+ The absolute path.
+
+
+
+
+ Performs SSH_FXP_REALPATH request.
+
+ The path.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous SSH_FXP_REALPATH request.
+
+ An that represents an asynchronous call.
+
+ The absolute path.
+
+ is null.
+
+
+
+ Performs SSH_FXP_STAT request.
+
+ The path.
+ if set to true returns null instead of throwing an exception.
+
+ File attributes
+
+
+
+
+ Performs SSH_FXP_STAT request
+
+ The path.
+ The delegate that is executed when completes.
+ An object that contains any additional user-defined data.
+
+ A that represents the asynchronous call.
+
+
+
+
+ Handles the end of an asynchronous stat.
+
+ An that represents an asynchronous call.
+
+ The file attributes.
+
+ is null.
+
+
+
+ Performs SSH_FXP_RENAME request.
+
+ The old path.
+ The new path.
+
+
+
+ Performs SSH_FXP_READLINK request.
+
+ The path.
+ if set to true returns null instead of throwing an exception.
+
+
+
+
+ Performs SSH_FXP_SYMLINK request.
+
+ The linkpath.
+ The targetpath.
+
+
+
+ Performs posix-rename@openssh.com extended request.
+
+ The old path.
+ The new path.
+
+
+
+ Performs statvfs@openssh.com extended request.
+
+ The path.
+ if set to true [null on error].
+
+
+
+
+ Performs fstatvfs@openssh.com extended request.
+
+ The file handle.
+ if set to true [null on error].
+
+
+
+
+
+ Performs hardlink@openssh.com extended request.
+
+ The old path.
+ The new path.
+
+
+
+ Calculates the optimal size of the buffer to read data from the channel.
+
+ The buffer size configured on the client.
+
+ The optimal size of the buffer to read data from the channel.
+
+
+
+
+ Calculates the optimal size of the buffer to write data on the channel.
+
+ The buffer size configured on the client.
+ The file handle.
+
+ The optimal size of the buffer to write data on the channel.
+
+
+ Currently, we do not take the remote window size into account.
+
+
+
+
+ Encapsulates the results of an asynchronous directory synchronization operation.
+
+
+
+
+ Gets the number of files read so far.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async callback.
+ The state.
+
+
+
+ Updates asynchronous operation status information.
+
+ The files read.
+
+
+
+ Encapsulates the results of an asynchronous upload operation.
+
+
+
+
+ Gets or sets a value indicating whether to cancel asynchronous upload operation
+
+
+ true if upload operation to be canceled; otherwise, false.
+
+
+ Upload operation will be canceled after finishing uploading current buffer.
+
+
+
+
+ Gets the number of uploaded bytes.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The async callback.
+ The state.
+
+
+
+ Updates asynchronous operation status information.
+
+ Number of uploaded bytes.
+
+
+
+ SSH_FX_OK
+
+
+
+
+ SSH_FX_EOF
+
+
+
+
+ SSH_FX_NO_SUCH_FILE
+
+
+
+
+ SSH_FX_PERMISSION_DENIED
+
+
+
+
+ SSH_FX_FAILURE
+
+
+
+
+ SSH_FX_BAD_MESSAGE
+
+
+
+
+ SSH_FX_NO_CONNECTION
+
+
+
+
+ SSH_FX_CONNECTION_LOST
+
+
+
+
+ SSH_FX_OP_UNSUPPORTED
+
+
+
+
+ SSH_FX_INVALID_HANDLE
+
+
+
+
+ SSH_FX_NO_SUCH_PATH
+
+
+
+
+ SSH_FX_FILE_ALREADY_EXISTS
+
+
+
+
+ SSH_FX_WRITE_PROTECT
+
+
+
+
+ SSH_FX_NO_MEDIA
+
+
+
+
+ SSH_FX_NO_SPACE_ON_FILESYSTEM
+
+
+
+
+ SSH_FX_QUOTA_EXCEEDED
+
+
+
+
+ SSH_FX_UNKNOWN_PRINCIPAL
+
+
+
+
+ SSH_FX_LOCK_CONFLICT
+
+
+
+
+ SSH_FX_DIR_NOT_EMPTY
+
+
+
+
+ SSH_FX_NOT_A_DIRECTORY
+
+
+
+
+ SSH_FX_INVALID_FILENAME
+
+
+
+
+ SSH_FX_LINK_LOOP
+
+
+
+
+ SSH_FX_CANNOT_DELETE
+
+
+
+
+ SSH_FX_INVALID_PARAMETER
+
+
+
+
+ SSH_FX_FILE_IS_A_DIRECTORY
+
+
+
+
+ SSH_FX_BYTE_RANGE_LOCK_CONFLICT
+
+
+
+
+ SSH_FX_BYTE_RANGE_LOCK_REFUSED
+
+
+
+
+ SSH_FX_DELETE_PENDING
+
+
+
+
+ SSH_FX_FILE_CORRUPT
+
+
+
+
+ SSH_FX_OWNER_INVALID
+
+
+
+
+ SSH_FX_GROUP_INVALID
+
+
+
+
+ SSH_FX_NO_MATCHING_BYTE_RANGE_LOCK
+
+
+
+
+ Represents instance of the SSH shell object
+
+
+
+
+ Gets a value indicating whether this shell is started.
+
+
+ true if started is started; otherwise, false.
+
+
+
+
+ Occurs when shell is starting.
+
+
+
+
+ Occurs when shell is started.
+
+
+
+
+ Occurs when shell is stopping.
+
+
+
+
+ Occurs when shell is stopped.
+
+
+
+
+ Occurs when an error occurred.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The session.
+ The input.
+ The output.
+ The extended output.
+ Name of the terminal.
+ The columns.
+ The rows.
+ The width.
+ The height.
+ The terminal modes.
+ Size of the buffer for output stream.
+
+
+
+ Starts this shell.
+
+ Shell is started.
+
+
+
+ Stops this shell.
+
+ Shell is not started.
+
+
+
+ Unsubscribes the current from session events.
+
+ The session.
+
+ Does nothing when is null.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Contains operation for working with SSH Shell.
+
+
+
+
+ Occurs when data was received.
+
+
+
+
+ Occurs when an error occurred.
+
+
+
+
+ Gets a value that indicates whether data is available on the to be read.
+
+
+ true if data is available to be read; otherwise, false.
+
+
+
+
+ Gets the number of bytes that will be written to the internal buffer.
+
+
+ The number of bytes that will be written to the internal buffer.
+
+
+
+
+ Initializes a new instance.
+
+ The SSH session.
+ The TERM environment variable.
+ The terminal width in columns.
+ The terminal width in rows.
+ The terminal height in pixels.
+ The terminal height in pixels.
+ The terminal mode values.
+ The size of the buffer.
+ The channel could not be opened.
+ The pseudo-terminal request was not accepted by the server.
+ The request to start a shell was not accepted by the server.
+
+
+
+ Gets a value indicating whether the current stream supports reading.
+
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the current stream supports seeking.
+
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+
+ Gets a value indicating whether the current stream supports writing.
+
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written to the underlying device.
+
+ An I/O error occurs.
+ Methods were called after the stream was closed.
+
+
+
+ Gets the length in bytes of the stream.
+
+ A long value representing the length of the stream in bytes.
+ A class derived from Stream does not support seeking.
+ Methods were called after the stream was closed.
+
+
+
+ Gets or sets the position within the current stream.
+
+
+ The current position within the stream.
+
+ An I/O error occurs.
+ The stream does not support seeking.
+ Methods were called after the stream was closed.
+
+
+
+ Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.
+
+ An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source.
+ The zero-based byte offset in at which to begin storing the data read from the current stream.
+ The maximum number of bytes to be read from the current stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached.
+
+ The sum of and is larger than the buffer length.
+ is null.
+ or is negative.
+ An I/O error occurs.
+ The stream does not support reading.
+ Methods were called after the stream was closed.
+
+
+
+ This method is not supported.
+
+ A byte offset relative to the parameter.
+ A value of type indicating the reference point used to obtain the new position.
+
+ The new position within the current stream.
+
+ An I/O error occurs.
+ The stream does not support seeking, such as if the stream is constructed from a pipe or console output.
+ Methods were called after the stream was closed.
+
+
+
+ This method is not supported.
+
+ The desired length of the current stream in bytes.
+ An I/O error occurs.
+ The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output.
+ Methods were called after the stream was closed.
+
+
+
+ Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.
+
+ An array of bytes. This method copies bytes from to the current stream.
+ The zero-based byte offset in at which to begin copying bytes to the current stream.
+ The number of bytes to be written to the current stream.
+ The sum of and is greater than the buffer length.
+ is null.
+ or is negative.
+ An I/O error occurs.
+ The stream does not support writing.
+ Methods were called after the stream was closed.
+
+
+
+ Expects the specified expression and performs action when one is found.
+
+ The expected expressions and actions to perform.
+
+
+
+ Expects the specified expression and performs action when one is found.
+
+ Time to wait for input.
+ The expected expressions and actions to perform, if the specified time elapsed and expected condition have not met, that method will exit without executing any action.
+
+
+
+ Begins the expect.
+
+ The expect actions.
+
+ An that references the asynchronous operation.
+
+
+
+
+ Begins the expect.
+
+ The callback.
+ The expect actions.
+
+ An that references the asynchronous operation.
+
+
+
+
+ Begins the expect.
+
+ The callback.
+ The state.
+ The expect actions.
+
+ An that references the asynchronous operation.
+
+
+
+
+ Begins the expect.
+
+ The timeout.
+ The callback.
+ The state.
+ The expect actions.
+
+ An that references the asynchronous operation.
+
+
+
+
+ Ends the execute.
+
+ The async result.
+ Either the IAsyncResult object did not come from the corresponding async method on this type, or EndExecute was called multiple times with the same IAsyncResult.
+
+
+
+ Expects the expression specified by text.
+
+ The text to expect.
+
+ Text available in the shell that ends with expected text.
+
+
+
+
+ Expects the expression specified by text.
+
+ The text to expect.
+ Time to wait for input.
+
+ The text available in the shell that ends with expected text, or null if the specified time has elapsed.
+
+
+
+
+ Expects the expression specified by regular expression.
+
+ The regular expression to expect.
+
+ The text available in the shell that contains all the text that ends with expected expression.
+
+
+
+
+ Expects the expression specified by regular expression.
+
+ The regular expression to expect.
+ Time to wait for input.
+
+ The text available in the shell that contains all the text that ends with expected expression,
+ or null if the specified time has elapsed.
+
+
+
+
+ Reads the line from the shell. If line is not available it will block the execution and will wait for new line.
+
+
+ The line read from the shell.
+
+
+
+
+ Reads a line from the shell. If line is not available it will block the execution and will wait for new line.
+
+ Time to wait for input.
+
+ The line read from the shell, or null when no input is received for the specified timeout.
+
+
+
+
+ Reads text available in the shell.
+
+
+ The text available in the shell.
+
+
+
+
+ Writes the specified text to the shell.
+
+ The text to be written to the shell.
+
+ If is null, nothing is written.
+
+
+
+
+ Writes the line to the shell.
+
+ The line to be written to the shell.
+
+ If is null, only the line terminator is written.
+
+
+
+
+ Releases the unmanaged resources used by the and optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Unsubscribes the current from session events.
+
+ The session.
+
+ Does nothing when is null.
+
+
+
+
+ Provides client connection to SSH server.
+
+
+
+
+ Holds the list of forwarded ports
+
+
+
+
+ Holds a value indicating whether the current instance is disposed.
+
+
+ true if the current instance is disposed; otherwise, false.
+
+
+
+
+ Gets the list of forwarded ports.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+
+
+
+
+
+
+ is null.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Authentication username.
+ Authentication password.
+ is null.
+ is invalid, or is null or contains only whitespace characters.
+ is not within and .
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Authentication username.
+ Authentication password.
+
+
+
+ is null.
+ is invalid, or is null or contains only whitespace characters.
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Connection port.
+ Authentication username.
+ Authentication private key file(s) .
+
+
+
+
+ is null.
+ is invalid, -or- is null or contains only whitespace characters.
+ is not within and .
+
+
+
+ Initializes a new instance of the class.
+
+ Connection host.
+ Authentication username.
+ Authentication private key file(s) .
+
+
+
+
+ is null.
+ is invalid, -or- is null or contains only whitespace characters.
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ Specified whether this instance owns the connection info.
+ is null.
+
+ If is true, then the
+ connection info will be disposed when this instance is disposed.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The connection info.
+ Specified whether this instance owns the connection info.
+ The factory to use for creating new services.
+ is null.
+ is null.
+
+ If is true, then the
+ connection info will be disposed when this instance is disposed.
+
+
+
+
+ Called when client is disconnecting from the server.
+
+
+
+
+ Adds the forwarded port.
+
+ The port.
+
+
+
+
+ Forwarded port is already added to a different client.
+ is null.
+ Client is not connected.
+
+
+
+ Stops and removes the forwarded port from the list.
+
+ Forwarded port.
+ is null.
+
+
+
+ Creates the command to be executed.
+
+ The command text.
+ object.
+ Client is not connected.
+
+
+
+ Creates the command to be executed with specified encoding.
+
+ The command text.
+ The encoding to use for results.
+ object which uses specified encoding.
+ This method will change current default encoding.
+ Client is not connected.
+ or is null.
+
+
+
+ Creates and executes the command.
+
+ The command text.
+ Returns an instance of with execution results.
+ This method internally uses asynchronous calls.
+
+
+
+
+ CommandText property is empty.
+ Invalid Operation - An existing channel was used to execute this command.
+ Asynchronous operation is already in progress.
+ Client is not connected.
+ is null.
+
+
+
+ Creates the shell.
+
+ The input.
+ The output.
+ The extended output.
+ Name of the terminal.
+ The columns.
+ The rows.
+ The width.
+ The height.
+ The terminal mode.
+ Size of the internal read buffer.
+
+ Returns a representation of a object.
+
+ Client is not connected.
+
+
+
+ Creates the shell.
+
+ The input.
+ The output.
+ The extended output.
+ Name of the terminal.
+ The columns.
+ The rows.
+ The width.
+ The height.
+ The terminal mode.
+
+ Returns a representation of a object.
+
+ Client is not connected.
+
+
+
+ Creates the shell.
+
+ The input.
+ The output.
+ The extended output.
+
+ Returns a representation of a object.
+
+ Client is not connected.
+
+
+
+ Creates the shell.
+
+ The encoding to use to send the input.
+ The input.
+ The output.
+ The extended output.
+ Name of the terminal.
+ The columns.
+ The rows.
+ The width.
+ The height.
+ The terminal mode.
+ Size of the internal read buffer.
+
+ Returns a representation of a object.
+
+ Client is not connected.
+
+
+
+ Creates the shell.
+
+ The encoding.
+ The input.
+ The output.
+ The extended output.
+ Name of the terminal.
+ The columns.
+ The rows.
+ The width.
+ The height.
+ The terminal modes.
+
+ Returns a representation of a object.
+
+ Client is not connected.
+
+
+
+ Creates the shell.
+
+ The encoding.
+ The input.
+ The output.
+ The extended output.
+
+ Returns a representation of a object.
+
+ Client is not connected.
+
+
+
+ Creates the shell stream.
+
+ The TERM environment variable.
+ The terminal width in columns.
+ The terminal width in rows.
+ The terminal height in pixels.
+ The terminal height in pixels.
+ The size of the buffer.
+
+ The created instance.
+
+ Client is not connected.
+
+
+ The TERM environment variable contains an identifier for the text window's capabilities.
+ You can get a detailed list of these cababilities by using the ‘infocmp’ command.
+
+
+ The column/row dimensions override the pixel dimensions(when nonzero). Pixel dimensions refer
+ to the drawable area of the window.
+
+
+
+
+
+ Creates the shell stream.
+
+ The TERM environment variable.
+ The terminal width in columns.
+ The terminal width in rows.
+ The terminal height in pixels.
+ The terminal height in pixels.
+ The size of the buffer.
+ The terminal mode values.
+
+ The created instance.
+
+ Client is not connected.
+
+
+ The TERM environment variable contains an identifier for the text window's capabilities.
+ You can get a detailed list of these cababilities by using the ‘infocmp’ command.
+
+
+ The column/row dimensions override the pixel dimensions(when non-zero). Pixel dimensions refer
+ to the drawable area of the window.
+
+
+
+
+
+ Stops forwarded ports.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Represents SSH command that can be executed.
+
+
+
+
+ Gets the command text.
+
+
+
+
+ Gets or sets the command timeout.
+
+
+ The command timeout.
+
+
+
+
+
+
+
+ Gets the command exit status.
+
+
+
+
+
+
+
+ Gets the output stream.
+
+
+
+
+
+
+
+ Gets the extended output stream.
+
+
+
+
+
+
+
+ Gets the command execution result.
+
+
+
+
+
+
+
+ Gets the command execution error.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+ The session.
+ The command text.
+ The encoding to use for the results.
+ Either , is null.
+
+
+
+ Begins an asynchronous command execution.
+
+
+ An that represents the asynchronous command execution, which could still be pending.
+
+
+
+
+ Asynchronous operation is already in progress.
+ Invalid operation.
+ CommandText property is empty.
+ Client is not connected.
+ Operation has timed out.
+ Asynchronous operation is already in progress.
+ CommandText property is empty.
+
+
+
+ Begins an asynchronous command execution.
+
+ An optional asynchronous callback, to be called when the command execution is complete.
+
+ An that represents the asynchronous command execution, which could still be pending.
+
+ Asynchronous operation is already in progress.
+ Invalid operation.
+ CommandText property is empty.
+ Client is not connected.
+ Operation has timed out.
+ Asynchronous operation is already in progress.
+ CommandText property is empty.
+
+
+
+ Begins an asynchronous command execution.
+
+ An optional asynchronous callback, to be called when the command execution is complete.
+ A user-provided object that distinguishes this particular asynchronous read request from other requests.
+
+ An that represents the asynchronous command execution, which could still be pending.
+
+ Asynchronous operation is already in progress.
+ Invalid operation.
+ CommandText property is empty.
+ Client is not connected.
+ Operation has timed out.
+ Asynchronous operation is already in progress.
+ CommandText property is empty.
+
+
+
+ Begins an asynchronous command execution.
+
+ The command text.
+ An optional asynchronous callback, to be called when the command execution is complete.
+ A user-provided object that distinguishes this particular asynchronous read request from other requests.
+
+ An that represents the asynchronous command execution, which could still be pending.
+
+ Client is not connected.
+ Operation has timed out.
+
+
+
+ Waits for the pending asynchronous command execution to complete.
+
+ The reference to the pending asynchronous request to finish.
+ Command execution result.
+
+
+
+ Either the IAsyncResult object did not come from the corresponding async method on this type, or EndExecute was called multiple times with the same IAsyncResult.
+ is null.
+
+
+
+ Executes command specified by property.
+
+ Command execution result
+
+
+
+
+
+ Client is not connected.
+ Operation has timed out.
+
+
+
+ Cancels command execution in asynchronous scenarios.
+
+
+
+
+ Executes the specified command text.
+
+ The command text.
+ Command execution result
+ Client is not connected.
+ Operation has timed out.
+
+
+ Command '{0}' has timed out.
+ The actual command will be included in the exception message.
+
+
+
+ Unsubscribes the current from channel events, and disposes
+ the .
+
+ The channel.
+
+ Does nothing when is null.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Defines the highest message number that is currently supported.
+
+
+
+
+ Defines the total number of supported messages.
+
+
+
+
+ Disables and deactivate all messages.
+
+
+
+
+ Base class for SSH subsystem implementations
+
+
+
+
+ Holds the number of system wait handles that are returned as the leading entries in the array returned
+ in .
+
+
+
+
+ Gets or set the number of seconds to wait for an operation to complete.
+
+
+ The number of seconds to wait for an operation to complete, or -1 to wait indefinitely.
+
+
+
+
+ Occurs when an error occurred.
+
+
+
+
+ Occurs when the server has disconnected from the session.
+
+
+
+
+ Gets the channel associated with this session.
+
+
+ The channel associated with this session.
+
+
+
+
+ Gets a value indicating whether this session is open.
+
+
+ true if this session is open; otherwise, false.
+
+
+
+
+ Initializes a new instance of the SubsystemSession class.
+
+ The session.
+ Name of the subsystem.
+ The number of milliseconds to wait for a given operation to complete, or -1 to wait indefinitely.
+ or is null.
+
+
+
+ Connects the subsystem using a new SSH channel session.
+
+ The session is already connected.
+ The method was called after the session was disposed.
+ The channel session could not be opened, or the subsystem could not be executed.
+
+
+
+ Disconnects the subsystem channel.
+
+
+
+
+ Sends data to the subsystem.
+
+ The data to be sent.
+
+
+
+ Called when channel is open.
+
+
+
+
+ Called when data is received.
+
+ The data.
+
+
+
+ Raises the error.
+
+ The error.
+
+
+
+ Waits a specified time for a given to get signaled.
+
+ The handle to wait for.
+ To number of milliseconds to wait for to get signaled, or -1 to wait indefinitely.
+ The connection was closed by the server.
+ The channel was closed.
+ The handle did not get signaled within the specified timeout.
+
+
+
+ Blocks the current thread until the specified gets signaled, using a
+ 32-bit signed integer to specify the time interval in milliseconds.
+
+ The handle to wait for.
+ To number of milliseconds to wait for to get signaled, or -1 to wait indefinitely.
+
+ true if received a signal within the specified timeout;
+ otherwise, false.
+
+ The connection was closed by the server.
+ The channel was closed.
+
+ The blocking wait is also interrupted when either the established channel is closed, the current
+ session is disconnected or an unexpected occurred while processing a channel
+ or session event.
+
+
+
+
+ Blocks the current thread until the specified gets signaled, using a
+ 32-bit signed integer to specify the time interval in milliseconds.
+
+ The first handle to wait for.
+ The second handle to wait for.
+ To number of milliseconds to wait for a to get signaled, or -1 to wait indefinitely.
+
+ 0 if received a signal within the specified timeout, and 1
+ if received a signal within the specified timeout.
+
+ The connection was closed by the server.
+ The channel was closed.
+ The handle did not get signaled within the specified timeout.
+
+
+ The blocking wait is also interrupted when either the established channel is closed, the current
+ session is disconnected or an unexpected occurred while processing a channel
+ or session event.
+
+
+ When both and are signaled during the call,
+ then 0 is returned.
+
+
+
+
+
+ Waits for any of the elements in the specified array to receive a signal, using a 32-bit signed
+ integer to specify the time interval.
+
+ A array - constructed using - containing the objects to wait for.
+ To number of milliseconds to wait for a to get signaled, or -1 to wait indefinitely.
+
+ The array index of the first non-system object that satisfied the wait.
+
+ The connection was closed by the server.
+ The channel was closed.
+ No object satified the wait and a time interval equivalent to has passed.
+
+ For the return value, the index of the first non-system object is considered to be zero.
+
+
+
+
+ Creates a array that is composed of system objects and the specified
+ elements.
+
+ The first to wait for.
+ The second to wait for.
+
+ A array that is composed of system objects and the specified elements.
+
+
+
+
+ Creates a array that is composed of system objects and the specified
+ elements.
+
+ A array containing the objects to wait for.
+
+ A array that is composed of system objects and the specified elements.
+
+
+
+
+ Unsubscribes the current from session events.
+
+ The session.
+
+ Does nothing when is null.
+
+
+
+
+ Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
+
+
+
+
+ Releases unmanaged and - optionally - managed resources
+
+ true to release both managed and unmanaged resources; false to release only unmanaged resources.
+
+
+
+ Finalizes an instance of the class.
+
+
+
+
diff --git a/app/bin/Release/SIPP.exe b/app/bin/Release/SIPP.exe
new file mode 100644
index 0000000..16a5b3e
Binary files /dev/null and b/app/bin/Release/SIPP.exe differ
diff --git a/app/bin/Release/SIPP.exe.config b/app/bin/Release/SIPP.exe.config
new file mode 100644
index 0000000..84d8e67
--- /dev/null
+++ b/app/bin/Release/SIPP.exe.config
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/bin/Release/SIPP.pdb b/app/bin/Release/SIPP.pdb
new file mode 100644
index 0000000..349e5bf
Binary files /dev/null and b/app/bin/Release/SIPP.pdb differ
diff --git a/app/bin/Release/Syroot.KnownFolders.dll b/app/bin/Release/Syroot.KnownFolders.dll
new file mode 100644
index 0000000..c9af6dd
Binary files /dev/null and b/app/bin/Release/Syroot.KnownFolders.dll differ
diff --git a/app/bin/Release/Syroot.KnownFolders.xml b/app/bin/Release/Syroot.KnownFolders.xml
new file mode 100644
index 0000000..bc4d90f
--- /dev/null
+++ b/app/bin/Release/Syroot.KnownFolders.xml
@@ -0,0 +1,1433 @@
+
+
+
+ Syroot.KnownFolders
+
+
+
+
+ Represents a special Windows directory and provides methods to retrieve information about it.
+
+
+
+
+ Initializes a new instance of the class for the folder of the given type. It
+ provides the values for the current user.
+
+ The of the known folder to represent.
+
+
+
+ Initializes a new instance of the class for the folder of the given type. It
+ provides the values for the given impersonated user.
+
+ The of the known folder to represent.
+ The of the impersonated user which values will be
+ provided.
+
+
+
+ Gets the type of the known folder which is represented.
+
+
+
+
+ Gets the of the user whose folder values are provided.
+
+
+
+
+ Gets the default path of the folder. This does not require the folder to be existent.
+
+ The known folder could not be retrieved.
+
+
+
+ Gets or sets the path as currently configured. This does not require the folder to be existent.
+
+ The known folder could not be retrieved.
+
+
+
+ Gets or sets the path as currently configured, with all environment variables expanded.
+ This does not require the folder to be existent.
+
+ The known folder could not be retrieved.
+
+
+
+ Creates the folder using its Desktop.ini settings.
+
+ The known folder could not be retrieved.
+
+
+
+ Retrieves the full path of a known folder identified by the folder's known folder ID.
+
+ A known folder ID that identifies the folder.
+ Flags that specify special retrieval options. This value can be 0; otherwise, one or
+ more of the values.
+ An access token that represents a particular user. If this parameter is NULL, which is
+ the most common usage, the function requests the known folder for the current user. Assigning a value of -1
+ indicates the Default User. The default user profile is duplicated when any new user account is created.
+ Note that access to the Default User folders requires administrator privileges.
+ When this method returns, contains the address of a string that specifies the path of
+ the known folder. The returned path does not include a trailing backslash.
+ Returns S_OK if successful, or an error value otherwise.
+ bb762188
+
+
+
+ Redirects a known folder to a new location.
+
+ A that identifies the known folder.
+ Either 0 or .
+
+
+
+ bb762249
+
+
+
+ Represents the retrieval options for known folders.
+
+ dd378447
+
+
+
+ A collection of properties to retrieve specific file system paths for the current user.
+
+
+
+
+ The per-user Account Pictures folder. Introduced in Windows 8.
+ Defaults to "%APPDATA%\Microsoft\Windows\AccountPictures".
+
+
+
+
+ The per-user Administrative Tools folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Administrative Tools".
+
+
+
+
+ The per-user app desktop folder, used internally by .NET applications to perform cross-platform app
+ functionality. Introduced in Windows 10.
+ Defaults to "%LOCALAPPDATA%\Desktop".
+
+
+
+
+ The per-user app documents folder, used internally by .NET applications to perform cross-platform app
+ functionality. Introduced in Windows 10.
+ Defaults to "%LOCALAPPDATA%\Documents".
+
+
+
+
+ The per-user app favorites folder, used internally by .NET applications to perform cross-platform app
+ functionality. Introduced in Windows 10.
+ Defaults to "%LOCALAPPDATA%\Favorites".
+
+
+
+
+ The per-user app program data folder, used internally by .NET applications to perform cross-platform app
+ functionality. Introduced in Windows 10.
+ Defaults to "%LOCALAPPDATA%\ProgramData".
+
+
+
+
+ The per-user Application Shortcuts folder. Introduced in Windows 8.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\Application Shortcuts".
+
+
+
+
+ The per-user Camera Roll folder. Introduced in Windows 8.1.
+ Defaults to ".%USERPROFILE%\Pictures\Camera Roll".
+
+
+
+
+ The per-user Temporary Burn Folder.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\Burn\Burn".
+
+
+
+
+ The common Administrative Tools folder.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Administrative Tools".
+
+
+
+
+ The common OEM Links folder.
+ Defaults to "%ALLUSERSPROFILE%\OEM Links".
+
+
+
+
+ The common Programs folder.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs".
+
+
+
+
+ The common Start Menu folder.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu".
+
+
+
+
+ The common Startup folder.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\StartUp".
+
+
+
+
+ The common Templates folder.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Templates".
+
+
+
+
+ The per-user Contacts folder. Introduced in Windows Vista.
+ Defaults to "%USERPROFILE%\Contacts".
+
+
+
+
+ The per-user Cookies folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Cookies".
+
+
+
+
+ The per-user Desktop folder.
+ Defaults to "%USERPROFILE%\Desktop".
+
+
+
+
+ The common DeviceMetadataStore folder. Introduced in Windows 7.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\DeviceMetadataStore".
+
+
+
+
+ The per-user Documents folder.
+ Defaults to "%USERPROFILE%\Documents".
+
+
+
+
+ The per-user Documents library. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Windows\Libraries\Documents.library-ms".
+
+
+
+
+ The per-user localized Documents folder.
+ Defaults to "%USERPROFILE%\Documents".
+
+
+
+
+ The per-user Downloads folder.
+ Defaults to "%USERPROFILE%\Downloads".
+
+
+
+
+ The per-user localized Downloads folder.
+ Defaults to "%USERPROFILE%\Downloads".
+
+
+
+
+ The per-user Favorites folder.
+ Defaults to "%USERPROFILE%\Favorites".
+
+
+
+
+ The fixed Fonts folder.
+ Points to "%WINDIR%\Fonts".
+
+
+
+
+ The per-user GameExplorer folder. Introduced in Windows Vista.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\GameExplorer".
+
+
+
+
+ The per-user History folder.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\History".
+
+
+
+
+ The per-user ImplicitAppShortcuts folder. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\ImplicitAppShortcuts".
+
+
+
+
+ The per-user Temporary Internet Files folder.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Files".
+
+
+
+
+ The per-user Libraries folder. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Windows\Libraries".
+
+
+
+
+ The per-user Links folder.
+ Defaults to "%USERPROFILE%\Links".
+
+
+
+
+ The per-user Local folder.
+ Defaults to "%LOCALAPPDATA%" ("%USERPROFILE%\AppData\Local")".
+
+
+
+
+ The per-user LocalLow folder.
+ Defaults to "%USERPROFILE%\AppData\LocalLow".
+
+
+
+
+ The fixed LocalizedResourcesDir folder.
+ Points to "%WINDIR%\resources\0409" (code page).
+
+
+
+
+ The per-user Music folder.
+ Defaults to "%USERPROFILE%\Music".
+
+
+
+
+ The per-user Music library. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Windows\Libraries\Music.library-ms".
+
+
+
+
+ The per-user localized Music folder.
+ Defaults to "%USERPROFILE%\Music".
+
+
+
+
+ The per-user Network Shortcuts folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Network Shortcuts".
+
+
+
+
+ The per-user 3D Objects folder. Introduced in Windows 10.
+ Defaults to "%USERPROFILE%\3D Objects".
+
+
+
+
+ The per-user Original Images folder. Introduced in Windows Vista.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows Photo Gallery\Original Images".
+
+
+
+
+ The per-user Slide Shows folder. Introduced in Windows Vista.
+ Defaults to "%USERPROFILE%\Pictures\Slide Shows".
+
+
+
+
+ The per-user Pictures folder.
+ Defaults to "%USERPROFILE%\Pictures".
+
+
+
+
+ The per-user Pictures library. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Windows\Libraries\Pictures.library-ms".
+
+
+
+
+ The per-user localized Pictures folder.
+ Defaults to "%USERPROFILE%\Pictures".
+
+
+
+
+ The per-user Playlists folder.
+ Defaults to "%USERPROFILE%\Music\Playlists".
+
+
+
+
+ The per-user Printer Shortcuts folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Printer Shortcuts".
+
+
+
+
+ The fixed user profile folder.
+ Defaults to "%USERPROFILE%" ("%SYSTEMDRIVE%\USERS\%USERNAME%")".
+
+
+
+
+ The fixed ProgramData folder.
+ Points to "%ALLUSERSPROFILE%" ("%PROGRAMDATA%", "%SYSTEMDRIVE%\ProgramData").
+
+
+
+
+ The fixed Program Files folder.
+ This is the same as the known folder in 32-bit applications or the
+ known folder in 64-bit applications.
+ Points to %SYSTEMDRIVE%\Program Files on a 32-bit operating system or in 64-bit applications on a 64-bit
+ operating system and to %SYSTEMDRIVE%\Program Files (x86) in 32-bit applications on a 64-bit operating
+ system.
+
+
+
+
+ The fixed Program Files folder (64-bit forced).
+ This known folder is unsupported in 32-bit applications.
+ Points to %SYSTEMDRIVE%\Program Files.
+
+
+
+
+ The fixed Program Files folder (32-bit forced).
+ This is the same as the known folder in 32-bit applications.
+ Points to "%SYSTEMDRIVE%\Program Files" on a 32-bit operating system and to
+ "%SYSTEMDRIVE%\Program Files (x86)" on a 64-bit operating system.
+
+
+
+
+ The fixed Common Files folder.
+ This is the same as the known folder in 32-bit applications or the
+ known folder in 64-bit applications.
+ Points to" %PROGRAMFILES%\Common Files" on a 32-bit operating system or in 64-bit applications on
+ a 64-bit operating system and to "%PROGRAMFILES(X86)%\Common Files" in 32-bit applications on a
+ 64-bit operating system.
+
+
+
+
+ The fixed Common Files folder (64-bit forced).
+ This known folder is unsupported in 32-bit applications.
+ Points to "%PROGRAMFILES%\Common Files".
+
+
+
+
+ The fixed Common Files folder (32-bit forced).
+ This is the same as the known folder in 32-bit applications.
+ Points to "%PROGRAMFILES%\Common Files" on a 32-bit operating system and to
+ "%PROGRAMFILES(X86)%\Common Files" on a 64-bit operating system.
+
+
+
+
+ The per-user Programs folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Start Menu\Programs".
+
+
+
+
+ The fixed Public folder. Introduced in Windows Vista.
+ Defaults to "%PUBLIC%" ("%SYSTEMDRIVE%\Users\Public)".
+
+
+
+
+ The common Public Desktop folder.
+ Defaults to "%PUBLIC%\Desktop".
+
+
+
+
+ The common Public Documents folder.
+ Defaults to "%PUBLIC%\Documents".
+
+
+
+
+ The common Public Downloads folder. Introduced in Windows Vista.
+ Defaults to "%PUBLIC%\Downloads".
+
+
+
+
+ The common GameExplorer folder. Introduced in Windows Vista.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\GameExplorer".
+
+
+
+
+ The common Libraries folder. Introduced in Windows 7.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Libraries".
+
+
+
+
+ The common Public Music folder.
+ Defaults to "%PUBLIC%\Music".
+
+
+
+
+ The common Public Pictures folder.
+ Defaults to "%PUBLIC%\Pictures".
+
+
+
+
+ The common Ringtones folder. Introduced in Windows 7.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Ringtones".
+
+
+
+
+ The common Public Account Pictures folder. Introduced in Windows 8.
+ Defaults to "%PUBLIC%\AccountPictures".
+
+
+
+
+ The common Public Videos folder.
+ Defaults to "%PUBLIC%\Videos".
+
+
+
+
+ The per-user Quick Launch folder.
+ Defaults to "%APPDATA%\Microsoft\Internet Explorer\Quick Launch".
+
+
+
+
+ The per-user Recent Items folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Recent".
+
+
+
+
+ The common Recorded TV library. Introduced in Windows 7.
+ Defaults to "%PUBLIC%\RecordedTV.library-ms".
+
+
+
+
+ The fixed Resources folder.
+ Points to "%WINDIR%\Resources".
+
+
+
+
+ The per-user Ringtones folder. Introduced in Windows 7.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\Ringtones".
+
+
+
+
+ The per-user Roaming folder.
+ Defaults to "%APPDATA%" ("%USERPROFILE%\AppData\Roaming").
+
+
+
+
+ The per-user RoamedTileImages folder. Introduced in Windows 8.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\RoamedTileImages".
+
+
+
+
+ The per-user RoamingTiles folder. Introduced in Windows 8.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\RoamingTiles".
+
+
+
+
+ The common Sample Music folder.
+ Defaults to "%PUBLIC%\Music\Sample Music".
+
+
+
+
+ The common Sample Pictures folder.
+ Defaults to "%PUBLIC%\Pictures\Sample Pictures".
+
+
+
+
+ The common Sample Playlists folder. Introduced in Windows Vista.
+ Defaults to "%PUBLIC%\Music\Sample Playlists".
+
+
+
+
+ The common Sample Videos folder.
+ Defaults to "%PUBLIC%\Videos\Sample Videos".
+
+
+
+
+ The per-user Saved Games folder. Introduced in Windows Vista.
+ Defaults to "%USERPROFILE%\Saved Games".
+
+
+
+
+ The per-user Searches folder.
+ Defaults to "%USERPROFILE%\Searches".
+
+
+
+
+ The per-user Screenshots folder. Introduced in Windows 8.
+ Defaults to "%USERPROFILE%\Pictures\Screenshots".
+
+
+
+
+ The per-user History folder. Introduced in Windows 8.1.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\ConnectedSearch\History".
+
+
+
+
+ The per-user Templates folder. Introduced in Windows 8.1.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\ConnectedSearch\Templates".
+
+
+
+
+ The per-user SendTo folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\SendTo".
+
+
+
+
+ The common Gadgets folder. Introduced in Windows 7.
+ Defaults to "%ProgramFiles%\Windows Sidebar\Gadgets".
+
+
+
+
+ The per-user Gadgets folder. Introduced in Windows 7.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows Sidebar\Gadgets".
+
+
+
+
+ The per-user OneDrive folder. Introduced in Windows 8.1.
+ Defaults to "%USERPROFILE%\OneDrive".
+
+
+
+
+ The per-user OneDrive Camera Roll folder. Introduced in Windows 8.1.
+ Defaults to "%USERPROFILE%\OneDrive\Pictures\Camera Roll".
+
+
+
+
+ The per-user OneDrive Documents folder. Introduced in Windows 8.1.
+ Defaults to "%USERPROFILE%\OneDrive\Documents".
+
+
+
+
+ The per-user OneDrive Pictures folder. Introduced in Windows 8.1.
+ Defaults to "%USERPROFILE%\OneDrive\Pictures".
+
+
+
+
+ The per-user Start Menu folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Start Menu".
+
+
+
+
+ The per-user Startup folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Start Menu\Programs\StartUp".
+
+
+
+
+ The fixed System32 folder.
+ This is the same as the known folder in 32-bit applications.
+ Points to "%WINDIR%\system32" on 32-bit operating systems or in 64-bit applications on a 64-bit
+ operating system and to "%WINDIR%\syswow64" in 32-bit applications on a 64-bit operating system.
+
+
+
+
+ The fixed System32 folder (32-bit forced).
+ This is the same as the known folder in 32-bit applications.
+ Points to "%WINDIR%\syswow64" in 64-bit applications or in 32-bit applications on a 64-bit
+ operating system and to "%WINDIR%\system32" on 32-bit operating systems.
+
+
+
+
+ The per-user Templates folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Templates".
+
+
+
+
+ The per-user User Pinned folder. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned".
+
+
+
+
+ The fixed Users folder. Introduced in Windows Vista.
+ Points to "%SYSTEMDRIVE%\Users".
+
+
+
+
+ The per-user Programs folder. Introduced in Windows 7.
+ Defaults to "%LOCALAPPDATA%\Programs.".
+
+
+
+
+ The per-user common Programs folder. INtroduced in Windows 7.
+ Defaults to "%LOCALAPPDATA%\Programs\Common".
+
+
+
+
+ The per-user Videos folder.
+ Defaults to "%USERPROFILE%\Videos".
+
+
+
+
+ The per-user Videos library. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Windows\Libraries\Videos.library-ms".
+
+
+
+
+ The per-user localized Videos folder.
+ Defaults to "%USERPROFILE%\Videos".
+
+
+
+
+ The fixed Windows folder.
+ Points to "%WINDIR%".
+
+
+
+
+ Represents the list of standard folders registered with the system. These folders are installed with Windows
+ Vista and later operating systems, and a computer will have only folders appropriate to it installed.
+
+ dd378457
+
+
+
+ The per-user Account Pictures folder. Introduced in Windows 8.
+ Defaults to "%APPDATA%\Microsoft\Windows\AccountPictures".
+
+
+
+
+ The per-user Administrative Tools folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Administrative Tools".
+
+
+
+
+ The per-user app desktop folder, used internally by .NET applications to perform cross-platform app
+ functionality. Introduced in Windows 10.
+ Defaults to "%LOCALAPPDATA%\Desktop".
+
+
+
+
+ The per-user app documents folder, used internally by .NET applications to perform cross-platform app
+ functionality. Introduced in Windows 10.
+ Defaults to "%LOCALAPPDATA%\Documents".
+
+
+
+
+ The per-user app favorites folder, used internally by .NET applications to perform cross-platform app
+ functionality. Introduced in Windows 10.
+ Defaults to "%LOCALAPPDATA%\Favorites".
+
+
+
+
+ The per-user app program data folder, used internally by .NET applications to perform cross-platform app
+ functionality. Introduced in Windows 10.
+ Defaults to "%LOCALAPPDATA%\ProgramData".
+
+
+
+
+ The per-user Application Shortcuts folder. Introduced in Windows 8.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\Application Shortcuts".
+
+
+
+
+ The per-user Camera Roll folder. Introduced in Windows 8.1.
+ Defaults to ".%USERPROFILE%\Pictures\Camera Roll".
+
+
+
+
+ The per-user Temporary Burn Folder.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\Burn\Burn".
+
+
+
+
+ The common Administrative Tools folder.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Administrative Tools".
+
+
+
+
+ The common OEM Links folder.
+ Defaults to "%ALLUSERSPROFILE%\OEM Links".
+
+
+
+
+ The common Programs folder.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs".
+
+
+
+
+ The common Start Menu folder.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu".
+
+
+
+
+ The common Startup folder.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\StartUp".
+
+
+
+
+ The common Templates folder.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Templates".
+
+
+
+
+ The per-user Contacts folder. Introduced in Windows Vista.
+ Defaults to "%USERPROFILE%\Contacts".
+
+
+
+
+ The per-user Cookies folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Cookies".
+
+
+
+
+ The per-user Desktop folder.
+ Defaults to "%USERPROFILE%\Desktop".
+
+
+
+
+ The common DeviceMetadataStore folder. Introduced in Windows 7.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\DeviceMetadataStore".
+
+
+
+
+ The per-user Documents folder.
+ Defaults to "%USERPROFILE%\Documents".
+
+
+
+
+ The per-user Documents library. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Windows\Libraries\Documents.library-ms".
+
+
+
+
+ The per-user localized Documents folder.
+ Defaults to "%USERPROFILE%\Documents".
+
+
+
+
+ The per-user Downloads folder.
+ Defaults to "%USERPROFILE%\Downloads".
+
+
+
+
+ The per-user localized Downloads folder.
+ Defaults to "%USERPROFILE%\Downloads".
+
+
+
+
+ The per-user Favorites folder.
+ Defaults to "%USERPROFILE%\Favorites".
+
+
+
+
+ The fixed Fonts folder.
+ Points to "%WINDIR%\Fonts".
+
+
+
+
+ The per-user GameExplorer folder. Introduced in Windows Vista.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\GameExplorer".
+
+
+
+
+ The per-user History folder.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\History".
+
+
+
+
+ The per-user ImplicitAppShortcuts folder. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\ImplicitAppShortcuts".
+
+
+
+
+ The per-user Temporary Internet Files folder.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Files".
+
+
+
+
+ The per-user Libraries folder. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Windows\Libraries".
+
+
+
+
+ The per-user Links folder.
+ Defaults to "%USERPROFILE%\Links".
+
+
+
+
+ The per-user Local folder.
+ Defaults to "%LOCALAPPDATA%" ("%USERPROFILE%\AppData\Local")".
+
+
+
+
+ The per-user LocalLow folder.
+ Defaults to "%USERPROFILE%\AppData\LocalLow".
+
+
+
+
+ The fixed LocalizedResourcesDir folder.
+ Points to "%WINDIR%\resources\0409" (code page).
+
+
+
+
+ The per-user Music folder.
+ Defaults to "%USERPROFILE%\Music".
+
+
+
+
+ The per-user Music library. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Windows\Libraries\Music.library-ms".
+
+
+
+
+ The per-user localized Music folder.
+ Defaults to "%USERPROFILE%\Music".
+
+
+
+
+ The per-user Network Shortcuts folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Network Shortcuts".
+
+
+
+
+ The per-user 3D Objects folder. Introduced in Windows 10.
+ Defaults to "%USERPROFILE%\3D Objects".
+
+
+
+
+ The per-user Original Images folder. Introduced in Windows Vista.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows Photo Gallery\Original Images".
+
+
+
+
+ The per-user Slide Shows folder. Introduced in Windows Vista.
+ Defaults to "%USERPROFILE%\Pictures\Slide Shows".
+
+
+
+
+ The per-user Pictures library. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Windows\Libraries\Pictures.library-ms".
+
+
+
+
+ The per-user Pictures folder.
+ Defaults to "%USERPROFILE%\Pictures".
+
+
+
+
+ The per-user localized Pictures folder.
+ Defaults to "%USERPROFILE%\Pictures".
+
+
+
+
+ The per-user Playlists folder.
+ Defaults to "%USERPROFILE%\Music\Playlists".
+
+
+
+
+ The per-user Printer Shortcuts folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Printer Shortcuts".
+
+
+
+
+ The fixed user profile folder.
+ Defaults to "%USERPROFILE%" ("%SYSTEMDRIVE%\USERS\%USERNAME%")".
+
+
+
+
+ The fixed ProgramData folder.
+ Points to "%ALLUSERSPROFILE%" ("%PROGRAMDATA%",
+ "%SYSTEMDRIVE%\ProgramData").
+
+
+
+
+ The fixed Program Files folder.
+ This is the same as the known folder in 32-bit applications or the
+ known folder in 64-bit applications.
+ Points to %SYSTEMDRIVE%\Program Files on a 32-bit operating system or in 64-bit applications on a 64-bit
+ operating system and to %SYSTEMDRIVE%\Program Files (x86) in 32-bit applications on a 64-bit operating
+ system.
+
+
+
+
+ The fixed Program Files folder (64-bit forced).
+ This known folder is unsupported in 32-bit applications.
+ Points to %SYSTEMDRIVE%\Program Files.
+
+
+
+
+ The fixed Program Files folder (32-bit forced).
+ This is the same as the known folder in 32-bit applications.
+ Points to "%SYSTEMDRIVE%\Program Files" on a 32-bit operating system and to
+ "%SYSTEMDRIVE%\Program Files (x86)" on a 64-bit operating system.
+
+
+
+
+ The fixed Common Files folder.
+ This is the same as the known folder in 32-bit applications or the
+ known folder in 64-bit applications.
+ Points to" %PROGRAMFILES%\Common Files" on a 32-bit operating system or in 64-bit applications on
+ a 64-bit operating system and to "%PROGRAMFILES(X86)%\Common Files" in 32-bit applications on a
+ 64-bit operating system.
+
+
+
+
+ The fixed Common Files folder (64-bit forced).
+ This known folder is unsupported in 32-bit applications.
+ Points to "%PROGRAMFILES%\Common Files".
+
+
+
+
+ The fixed Common Files folder (32-bit forced).
+ This is the same as the known folder in 32-bit applications.
+ Points to "%PROGRAMFILES%\Common Files" on a 32-bit operating system and to
+ "%PROGRAMFILES(X86)%\Common Files" on a 64-bit operating system.
+
+
+
+
+ The per-user Programs folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Start Menu\Programs".
+
+
+
+
+ The fixed Public folder. Introduced in Windows Vista.
+ Defaults to "%PUBLIC%" ("%SYSTEMDRIVE%\Users\Public)".
+
+
+
+
+ The common Public Desktop folder.
+ Defaults to "%PUBLIC%\Desktop".
+
+
+
+
+ The common Public Documents folder.
+ Defaults to "%PUBLIC%\Documents".
+
+
+
+
+ The common Public Downloads folder. Introduced in Windows Vista.
+ Defaults to "%PUBLIC%\Downloads".
+
+
+
+
+ The common GameExplorer folder. Introduced in Windows Vista.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\GameExplorer".
+
+
+
+
+ The common Libraries folder. Introduced in Windows 7.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Libraries".
+
+
+
+
+ The common Public Music folder.
+ Defaults to "%PUBLIC%\Music".
+
+
+
+
+ The common Public Pictures folder.
+ Defaults to "%PUBLIC%\Pictures".
+
+
+
+
+ The common Ringtones folder. Introduced in Windows 7.
+ Defaults to "%ALLUSERSPROFILE%\Microsoft\Windows\Ringtones".
+
+
+
+
+ The common Public Account Pictures folder. Introduced in Windows 8.
+ Defaults to "%PUBLIC%\AccountPictures".
+
+
+
+
+ The common Public Videos folder.
+ Defaults to "%PUBLIC%\Videos".
+
+
+
+
+ The per-user Quick Launch folder.
+ Defaults to "%APPDATA%\Microsoft\Internet Explorer\Quick Launch".
+
+
+
+
+ The per-user Recent Items folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Recent".
+
+
+
+
+ The common Recorded TV library. Introduced in Windows 7.
+ Defaults to "%PUBLIC%\RecordedTV.library-ms".
+
+
+
+
+ The fixed Resources folder.
+ Points to "%WINDIR%\Resources".
+
+
+
+
+ The per-user Ringtones folder. Introduced in Windows 7.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\Ringtones".
+
+
+
+
+ The per-user Roaming folder.
+ Defaults to "%APPDATA%" ("%USERPROFILE%\AppData\Roaming").
+
+
+
+
+ The per-user RoamedTileImages folder. Introduced in Windows 8.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\RoamedTileImages".
+
+
+
+
+ The per-user RoamingTiles folder. Introduced in Windows 8.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\RoamingTiles".
+
+
+
+
+ The common Sample Music folder.
+ Defaults to "%PUBLIC%\Music\Sample Music".
+
+
+
+
+ The common Sample Pictures folder.
+ Defaults to "%PUBLIC%\Pictures\Sample Pictures".
+
+
+
+
+ The common Sample Playlists folder. Introduced in Windows Vista.
+ Defaults to "%PUBLIC%\Music\Sample Playlists".
+
+
+
+
+ The common Sample Videos folder.
+ Defaults to "%PUBLIC%\Videos\Sample Videos".
+
+
+
+
+ The per-user Saved Games folder. Introduced in Windows Vista.
+ Defaults to "%USERPROFILE%\Saved Games".
+
+
+
+
+ The per-user Searches folder.
+ Defaults to "%USERPROFILE%\Searches".
+
+
+
+
+ The per-user Screenshots folder. Introduced in Windows 8.
+ Defaults to "%USERPROFILE%\Pictures\Screenshots".
+
+
+
+
+ The per-user History folder. Introduced in Windows 8.1.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\ConnectedSearch\History".
+
+
+
+
+ The per-user Templates folder. Introduced in Windows 8.1.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows\ConnectedSearch\Templates".
+
+
+
+
+ The per-user SendTo folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\SendTo".
+
+
+
+
+ The common Gadgets folder. Introduced in Windows 7.
+ Defaults to "%ProgramFiles%\Windows Sidebar\Gadgets".
+
+
+
+
+ The per-user Gadgets folder. Introduced in Windows 7.
+ Defaults to "%LOCALAPPDATA%\Microsoft\Windows Sidebar\Gadgets".
+
+
+
+
+ The per-user OneDrive folder. Introduced in Windows 8.1.
+ Defaults to "%USERPROFILE%\OneDrive".
+
+
+
+
+ The per-user OneDrive Camera Roll folder. Introduced in Windows 8.1.
+ Defaults to "%USERPROFILE%\OneDrive\Pictures\Camera Roll".
+
+
+
+
+ The per-user OneDrive Documents folder. Introduced in Windows 8.1.
+ Defaults to "%USERPROFILE%\OneDrive\Documents".
+
+
+
+
+ The per-user OneDrive Pictures folder. Introduced in Windows 8.1.
+ Defaults to "%USERPROFILE%\OneDrive\Pictures".
+
+
+
+
+ The per-user Start Menu folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Start Menu".
+
+
+
+
+ The per-user Startup folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Start Menu\Programs\StartUp".
+
+
+
+
+ The fixed System32 folder.
+ This is the same as the known folder in 32-bit applications.
+ Points to "%WINDIR%\system32" on 32-bit operating systems or in 64-bit applications on a 64-bit
+ operating system and to "%WINDIR%\syswow64" in 32-bit applications on a 64-bit operating system.
+
+
+
+
+ The fixed System32 folder (32-bit forced).
+ This is the same as the known folder in 32-bit applications.
+ Points to "%WINDIR%\syswow64" in 64-bit applications or in 32-bit applications on a 64-bit
+ operating system and to "%WINDIR%\system32" on 32-bit operating systems.
+
+
+
+
+ The per-user Templates folder.
+ Defaults to "%APPDATA%\Microsoft\Windows\Templates".
+
+
+
+
+ The per-user User Pinned folder. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned".
+
+
+
+
+ The fixed Users folder. Introduced in Windows Vista.
+ Points to "%SYSTEMDRIVE%\Users".
+
+
+
+
+ The per-user Programs folder. Introduced in Windows 7.
+ Defaults to "%LOCALAPPDATA%\Programs.".
+
+
+
+
+ The per-user common Programs folder. INtroduced in Windows 7.
+ Defaults to "%LOCALAPPDATA%\Programs\Common".
+
+
+
+
+ The per-user Videos folder.
+ Defaults to "%USERPROFILE%\Videos".
+
+
+
+
+ The per-user Videos library. Introduced in Windows 7.
+ Defaults to "%APPDATA%\Microsoft\Windows\Libraries\Videos.library-ms".
+
+
+
+
+ The per-user localized Videos folder.
+ Defaults to "%USERPROFILE%\Videos".
+
+
+
+
+ The fixed Windows folder.
+ Points to "%WINDIR%".
+
+
+
+
+ Represents extension methods for the type.
+
+
+
+
+ Gets the with which the enumeration member has been
+ decorated.
+
+ The decorated enumeration member.
+ The of the .
+
+
+
+ Represents an attribute to decorate the members of the enumeration with their
+ corresponding on the Windows system.
+
+
+
+
+ Initializes a new instance of the class with the given string
+ representing the GUID of the .
+
+ The GUID string of the .
+
+
+
+ Gets the for the enumeration member.
+
+
+
+
diff --git a/app/bin/Release/System.Buffers.dll b/app/bin/Release/System.Buffers.dll
new file mode 100644
index 0000000..f2d83c5
Binary files /dev/null and b/app/bin/Release/System.Buffers.dll differ
diff --git a/app/bin/Release/System.Buffers.xml b/app/bin/Release/System.Buffers.xml
new file mode 100644
index 0000000..e243dce
--- /dev/null
+++ b/app/bin/Release/System.Buffers.xml
@@ -0,0 +1,38 @@
+
+
+ System.Buffers
+
+
+
+ Provides a resource pool that enables reusing instances of type .
+ The type of the objects that are in the resource pool.
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new instance of the class.
+ A new instance of the class.
+
+
+ Creates a new instance of the class using the specifed configuration.
+ The maximum length of an array instance that may be stored in the pool.
+ The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access.
+ A new instance of the class with the specified configuration.
+
+
+ Retrieves a buffer that is at least the requested length.
+ The minimum length of the array.
+ An array of type that is at least minimumLength in length.
+
+
+ Returns an array to the pool that was previously obtained using the method on the same instance.
+ A buffer to return to the pool that was previously obtained using the method.
+ Indicates whether the contents of the buffer should be cleared before reuse. If clearArray is set to true, and if the pool will store the buffer to enable subsequent reuse, the method will clear the array of its contents so that a subsequent caller using the method will not see the content of the previous caller. If clearArray is set to false or if the pool will release the buffer, the array's contents are left unchanged.
+
+
+ Gets a shared instance.
+ A shared instance.
+
+
+
\ No newline at end of file
diff --git a/app/bin/Release/System.Memory.dll b/app/bin/Release/System.Memory.dll
new file mode 100644
index 0000000..bdfc501
Binary files /dev/null and b/app/bin/Release/System.Memory.dll differ
diff --git a/app/bin/Release/System.Memory.xml b/app/bin/Release/System.Memory.xml
new file mode 100644
index 0000000..4d12fd7
--- /dev/null
+++ b/app/bin/Release/System.Memory.xml
@@ -0,0 +1,355 @@
+
+
+ System.Memory
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/bin/Release/System.Numerics.Vectors.dll b/app/bin/Release/System.Numerics.Vectors.dll
new file mode 100644
index 0000000..ce46d5b
Binary files /dev/null and b/app/bin/Release/System.Numerics.Vectors.dll differ
diff --git a/app/bin/Release/System.Numerics.Vectors.xml b/app/bin/Release/System.Numerics.Vectors.xml
new file mode 100644
index 0000000..5129793
--- /dev/null
+++ b/app/bin/Release/System.Numerics.Vectors.xml
@@ -0,0 +1,2597 @@
+
+
+
+ System.Numerics.Vectors
+
+
+
+ Represents a 3x2 matrix.
+
+
+ Creates a 3x2 matrix from the specified components.
+ The value to assign to the first element in the first row.
+ The value to assign to the second element in the first row.
+ The value to assign to the first element in the second row.
+ The value to assign to the second element in the second row.
+ The value to assign to the first element in the third row.
+ The value to assign to the second element in the third row.
+
+
+ Adds each element in one matrix with its corresponding element in a second matrix.
+ The first matrix.
+ The second matrix.
+ The matrix that contains the summed values of value1 and value2.
+
+
+ Creates a rotation matrix using the given rotation in radians.
+ The amount of rotation, in radians.
+ The rotation matrix.
+
+
+ Creates a rotation matrix using the specified rotation in radians and a center point.
+ The amount of rotation, in radians.
+ The center point.
+ The rotation matrix.
+
+
+ Creates a scaling matrix from the specified X and Y components.
+ The value to scale by on the X axis.
+ The value to scale by on the Y axis.
+ The scaling matrix.
+
+
+ Creates a scaling matrix that scales uniformly with the specified scale with an offset from the specified center.
+ The uniform scale to use.
+ The center offset.
+ The scaling matrix.
+
+
+ Creates a scaling matrix that is offset by a given center point.
+ The value to scale by on the X axis.
+ The value to scale by on the Y axis.
+ The center point.
+ The scaling matrix.
+
+
+ Creates a scaling matrix that scales uniformly with the given scale.
+ The uniform scale to use.
+ The scaling matrix.
+
+
+ Creates a scaling matrix from the specified vector scale.
+ The scale to use.
+ The scaling matrix.
+
+
+ Creates a scaling matrix from the specified vector scale with an offset from the specified center point.
+ The scale to use.
+ The center offset.
+ The scaling matrix.
+
+
+ Creates a skew matrix from the specified angles in radians.
+ The X angle, in radians.
+ The Y angle, in radians.
+ The skew matrix.
+
+
+ Creates a skew matrix from the specified angles in radians and a center point.
+ The X angle, in radians.
+ The Y angle, in radians.
+ The center point.
+ The skew matrix.
+
+
+ Creates a translation matrix from the specified 2-dimensional vector.
+ The translation position.
+ The translation matrix.
+
+
+ Creates a translation matrix from the specified X and Y components.
+ The X position.
+ The Y position.
+ The translation matrix.
+
+
+ Returns a value that indicates whether this instance and another 3x2 matrix are equal.
+ The other matrix.
+ true if the two matrices are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`.
+
+
+ Calculates the determinant for this matrix.
+ The determinant.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Gets the multiplicative identity matrix.
+ The multiplicative identify matrix.
+
+
+ Inverts the specified matrix. The return value indicates whether the operation succeeded.
+ The matrix to invert.
+ When this method returns, contains the inverted matrix if the operation succeeded.
+ true if matrix was converted successfully; otherwise, false.
+
+
+ Indicates whether the current matrix is the identity matrix.
+ true if the current matrix is the identity matrix; otherwise, false.
+
+
+ Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix.
+ The first matrix.
+ The second matrix.
+ The relative weighting of matrix2.
+ The interpolated matrix.
+
+
+ The first element of the first row.
+
+
+
+ The second element of the first row.
+
+
+
+ The first element of the second row.
+
+
+
+ The second element of the second row.
+
+
+
+ The first element of the third row.
+
+
+
+ The second element of the third row.
+
+
+
+ Returns the matrix that results from multiplying two matrices together.
+ The first matrix.
+ The second matrix.
+ The product matrix.
+
+
+ Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor.
+ The matrix to scale.
+ The scaling value to use.
+ The scaled matrix.
+
+
+ Negates the specified matrix by multiplying all its values by -1.
+ The matrix to negate.
+ The negated matrix.
+
+
+ Adds each element in one matrix with its corresponding element in a second matrix.
+ The first matrix.
+ The second matrix.
+ The matrix that contains the summed values.
+
+
+ Returns a value that indicates whether the specified matrices are equal.
+ The first matrix to compare.
+ The second matrix to compare.
+ true if value1 and value2 are equal; otherwise, false.
+
+
+ Returns a value that indicates whether the specified matrices are not equal.
+ The first matrix to compare.
+ The second matrix to compare.
+ true if value1 and value2 are not equal; otherwise, false.
+
+
+ Returns the matrix that results from multiplying two matrices together.
+ The first matrix.
+ The second matrix.
+ The product matrix.
+
+
+ Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor.
+ The matrix to scale.
+ The scaling value to use.
+ The scaled matrix.
+
+
+ Subtracts each element in a second matrix from its corresponding element in a first matrix.
+ The first matrix.
+ The second matrix.
+ The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Negates the specified matrix by multiplying all its values by -1.
+ The matrix to negate.
+ The negated matrix.
+
+
+ Subtracts each element in a second matrix from its corresponding element in a first matrix.
+ The first matrix.
+ The second matrix.
+ The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Returns a string that represents this matrix.
+ The string representation of this matrix.
+
+
+ Gets or sets the translation component of this matrix.
+ The translation component of the current instance.
+
+
+ Represents a 4x4 matrix.
+
+
+ Creates a object from a specified object.
+ A 3x2 matrix.
+
+
+ Creates a 4x4 matrix from the specified components.
+ The value to assign to the first element in the first row.
+ The value to assign to the second element in the first row.
+ The value to assign to the third element in the first row.
+ The value to assign to the fourth element in the first row.
+ The value to assign to the first element in the second row.
+ The value to assign to the second element in the second row.
+ The value to assign to the third element in the second row.
+ The value to assign to the third element in the second row.
+ The value to assign to the first element in the third row.
+ The value to assign to the second element in the third row.
+ The value to assign to the third element in the third row.
+ The value to assign to the fourth element in the third row.
+ The value to assign to the first element in the fourth row.
+ The value to assign to the second element in the fourth row.
+ The value to assign to the third element in the fourth row.
+ The value to assign to the fourth element in the fourth row.
+
+
+ Adds each element in one matrix with its corresponding element in a second matrix.
+ The first matrix.
+ The second matrix.
+ The matrix that contains the summed values of value1 and value2.
+
+
+ Creates a spherical billboard that rotates around a specified object position.
+ The position of the object that the billboard will rotate around.
+ The position of the camera.
+ The up vector of the camera.
+ The forward vector of the camera.
+ The created billboard.
+
+
+ Creates a cylindrical billboard that rotates around a specified axis.
+ The position of the object that the billboard will rotate around.
+ The position of the camera.
+ The axis to rotate the billboard around.
+ The forward vector of the camera.
+ The forward vector of the object.
+ The billboard matrix.
+
+
+ Creates a matrix that rotates around an arbitrary vector.
+ The axis to rotate around.
+ The angle to rotate around axis, in radians.
+ The rotation matrix.
+
+
+ Creates a rotation matrix from the specified Quaternion rotation value.
+ The source Quaternion.
+ The rotation matrix.
+
+
+ Creates a rotation matrix from the specified yaw, pitch, and roll.
+ The angle of rotation, in radians, around the Y axis.
+ The angle of rotation, in radians, around the X axis.
+ The angle of rotation, in radians, around the Z axis.
+ The rotation matrix.
+
+
+ Creates a view matrix.
+ The position of the camera.
+ The target towards which the camera is pointing.
+ The direction that is "up" from the camera's point of view.
+ The view matrix.
+
+
+ Creates an orthographic perspective matrix from the given view volume dimensions.
+ The width of the view volume.
+ The height of the view volume.
+ The minimum Z-value of the view volume.
+ The maximum Z-value of the view volume.
+ The orthographic projection matrix.
+
+
+ Creates a customized orthographic projection matrix.
+ The minimum X-value of the view volume.
+ The maximum X-value of the view volume.
+ The minimum Y-value of the view volume.
+ The maximum Y-value of the view volume.
+ The minimum Z-value of the view volume.
+ The maximum Z-value of the view volume.
+ The orthographic projection matrix.
+
+
+ Creates a perspective projection matrix from the given view volume dimensions.
+ The width of the view volume at the near view plane.
+ The height of the view volume at the near view plane.
+ The distance to the near view plane.
+ The distance to the far view plane.
+ The perspective projection matrix.
+ nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance.
+
+
+ Creates a perspective projection matrix based on a field of view, aspect ratio, and near and far view plane distances.
+ The field of view in the y direction, in radians.
+ The aspect ratio, defined as view space width divided by height.
+ The distance to the near view plane.
+ The distance to the far view plane.
+ The perspective projection matrix.
+ fieldOfView is less than or equal to zero. -or- fieldOfView is greater than or equal to . nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance.
+
+
+ Creates a customized perspective projection matrix.
+ The minimum x-value of the view volume at the near view plane.
+ The maximum x-value of the view volume at the near view plane.
+ The minimum y-value of the view volume at the near view plane.
+ The maximum y-value of the view volume at the near view plane.
+ The distance to the near view plane.
+ The distance to the far view plane.
+ The perspective projection matrix.
+ nearPlaneDistance is less than or equal to zero. -or- farPlaneDistance is less than or equal to zero. -or- nearPlaneDistance is greater than or equal to farPlaneDistance.
+
+
+ Creates a matrix that reflects the coordinate system about a specified plane.
+ The plane about which to create a reflection.
+ A new matrix expressing the reflection.
+
+
+ Creates a matrix for rotating points around the X axis.
+ The amount, in radians, by which to rotate around the X axis.
+ The rotation matrix.
+
+
+ Creates a matrix for rotating points around the X axis from a center point.
+ The amount, in radians, by which to rotate around the X axis.
+ The center point.
+ The rotation matrix.
+
+
+ The amount, in radians, by which to rotate around the Y axis from a center point.
+ The amount, in radians, by which to rotate around the Y-axis.
+ The center point.
+ The rotation matrix.
+
+
+ Creates a matrix for rotating points around the Y axis.
+ The amount, in radians, by which to rotate around the Y-axis.
+ The rotation matrix.
+
+
+ Creates a matrix for rotating points around the Z axis.
+ The amount, in radians, by which to rotate around the Z-axis.
+ The rotation matrix.
+
+
+ Creates a matrix for rotating points around the Z axis from a center point.
+ The amount, in radians, by which to rotate around the Z-axis.
+ The center point.
+ The rotation matrix.
+
+
+ Creates a scaling matrix from the specified vector scale.
+ The scale to use.
+ The scaling matrix.
+
+
+ Creates a uniform scaling matrix that scale equally on each axis.
+ The uniform scaling factor.
+ The scaling matrix.
+
+
+ Creates a scaling matrix with a center point.
+ The vector that contains the amount to scale on each axis.
+ The center point.
+ The scaling matrix.
+
+
+ Creates a uniform scaling matrix that scales equally on each axis with a center point.
+ The uniform scaling factor.
+ The center point.
+ The scaling matrix.
+
+
+ Creates a scaling matrix from the specified X, Y, and Z components.
+ The value to scale by on the X axis.
+ The value to scale by on the Y axis.
+ The value to scale by on the Z axis.
+ The scaling matrix.
+
+
+ Creates a scaling matrix that is offset by a given center point.
+ The value to scale by on the X axis.
+ The value to scale by on the Y axis.
+ The value to scale by on the Z axis.
+ The center point.
+ The scaling matrix.
+
+
+ Creates a matrix that flattens geometry into a specified plane as if casting a shadow from a specified light source.
+ The direction from which the light that will cast the shadow is coming.
+ The plane onto which the new matrix should flatten geometry so as to cast a shadow.
+ A new matrix that can be used to flatten geometry onto the specified plane from the specified direction.
+
+
+ Creates a translation matrix from the specified 3-dimensional vector.
+ The amount to translate in each axis.
+ The translation matrix.
+
+
+ Creates a translation matrix from the specified X, Y, and Z components.
+ The amount to translate on the X axis.
+ The amount to translate on the Y axis.
+ The amount to translate on the Z axis.
+ The translation matrix.
+
+
+ Creates a world matrix with the specified parameters.
+ The position of the object.
+ The forward direction of the object.
+ The upward direction of the object. Its value is usually [0, 1, 0].
+ The world matrix.
+
+
+ Attempts to extract the scale, translation, and rotation components from the given scale, rotation, or translation matrix. The return value indicates whether the operation succeeded.
+ The source matrix.
+ When this method returns, contains the scaling component of the transformation matrix if the operation succeeded.
+ When this method returns, contains the rotation component of the transformation matrix if the operation succeeded.
+ When the method returns, contains the translation component of the transformation matrix if the operation succeeded.
+ true if matrix was decomposed successfully; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and another 4x4 matrix are equal.
+ The other matrix.
+ true if the two matrices are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`.
+
+
+ Calculates the determinant of the current 4x4 matrix.
+ The determinant.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Gets the multiplicative identity matrix.
+ Gets the multiplicative identity matrix.
+
+
+ Inverts the specified matrix. The return value indicates whether the operation succeeded.
+ The matrix to invert.
+ When this method returns, contains the inverted matrix if the operation succeeded.
+ true if matrix was converted successfully; otherwise, false.
+
+
+ Indicates whether the current matrix is the identity matrix.
+ true if the current matrix is the identity matrix; otherwise, false.
+
+
+ Performs a linear interpolation from one matrix to a second matrix based on a value that specifies the weighting of the second matrix.
+ The first matrix.
+ The second matrix.
+ The relative weighting of matrix2.
+ The interpolated matrix.
+
+
+ The first element of the first row.
+
+
+
+ The second element of the first row.
+
+
+
+ The third element of the first row.
+
+
+
+ The fourth element of the first row.
+
+
+
+ The first element of the second row.
+
+
+
+ The second element of the second row.
+
+
+
+ The third element of the second row.
+
+
+
+ The fourth element of the second row.
+
+
+
+ The first element of the third row.
+
+
+
+ The second element of the third row.
+
+
+
+ The third element of the third row.
+
+
+
+ The fourth element of the third row.
+
+
+
+ The first element of the fourth row.
+
+
+
+ The second element of the fourth row.
+
+
+
+ The third element of the fourth row.
+
+
+
+ The fourth element of the fourth row.
+
+
+
+ Returns the matrix that results from multiplying two matrices together.
+ The first matrix.
+ The second matrix.
+ The product matrix.
+
+
+ Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor.
+ The matrix to scale.
+ The scaling value to use.
+ The scaled matrix.
+
+
+ Negates the specified matrix by multiplying all its values by -1.
+ The matrix to negate.
+ The negated matrix.
+
+
+ Adds each element in one matrix with its corresponding element in a second matrix.
+ The first matrix.
+ The second matrix.
+ The matrix that contains the summed values.
+
+
+ Returns a value that indicates whether the specified matrices are equal.
+ The first matrix to compare.
+ The second matrix to care
+ true if value1 and value2 are equal; otherwise, false.
+
+
+ Returns a value that indicates whether the specified matrices are not equal.
+ The first matrix to compare.
+ The second matrix to compare.
+ true if value1 and value2 are not equal; otherwise, false.
+
+
+ Returns the matrix that results from scaling all the elements of a specified matrix by a scalar factor.
+ The matrix to scale.
+ The scaling value to use.
+ The scaled matrix.
+
+
+ Returns the matrix that results from multiplying two matrices together.
+ The first matrix.
+ The second matrix.
+ The product matrix.
+
+
+ Subtracts each element in a second matrix from its corresponding element in a first matrix.
+ The first matrix.
+ The second matrix.
+ The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Negates the specified matrix by multiplying all its values by -1.
+ The matrix to negate.
+ The negated matrix.
+
+
+ Subtracts each element in a second matrix from its corresponding element in a first matrix.
+ The first matrix.
+ The second matrix.
+ The matrix containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Returns a string that represents this matrix.
+ The string representation of this matrix.
+
+
+ Transforms the specified matrix by applying the specified Quaternion rotation.
+ The matrix to transform.
+ The rotation t apply.
+ The transformed matrix.
+
+
+ Gets or sets the translation component of this matrix.
+ The translation component of the current instance.
+
+
+ Transposes the rows and columns of a matrix.
+ The matrix to transpose.
+ The transposed matrix.
+
+
+ Represents a three-dimensional plane.
+
+
+ Creates a object from a specified four-dimensional vector.
+ A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin.
+
+
+ Creates a object from a specified normal and the distance along the normal from the origin.
+ The plane's normal vector.
+ The plane's distance from the origin along its normal vector.
+
+
+ Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal.
+ The X component of the normal.
+ The Y component of the normal.
+ The Z component of the normal.
+ The distance of the plane along its normal from the origin.
+
+
+ Creates a object that contains three specified points.
+ The first point defining the plane.
+ The second point defining the plane.
+ The third point defining the plane.
+ The plane containing the three points.
+
+
+ The distance of the plane along its normal from the origin.
+
+
+
+ Calculates the dot product of a plane and a 4-dimensional vector.
+ The plane.
+ The four-dimensional vector.
+ The dot product.
+
+
+ Returns the dot product of a specified three-dimensional vector and the normal vector of this plane plus the distance () value of the plane.
+ The plane.
+ The 3-dimensional vector.
+ The dot product.
+
+
+ Returns the dot product of a specified three-dimensional vector and the vector of this plane.
+ The plane.
+ The three-dimensional vector.
+ The dot product.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`.
+
+
+ Returns a value that indicates whether this instance and another plane object are equal.
+ The other plane.
+ true if the two planes are equal; otherwise, false.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ The normal vector of the plane.
+
+
+
+ Creates a new object whose normal vector is the source plane's normal vector normalized.
+ The source plane.
+ The normalized plane.
+
+
+ Returns a value that indicates whether two planes are equal.
+ The first plane to compare.
+ The second plane to compare.
+ true if value1 and value2 are equal; otherwise, false.
+
+
+ Returns a value that indicates whether two planes are not equal.
+ The first plane to compare.
+ The second plane to compare.
+ true if value1 and value2 are not equal; otherwise, false.
+
+
+ Returns the string representation of this plane object.
+ A string that represents this object.
+
+
+ Transforms a normalized plane by a 4x4 matrix.
+ The normalized plane to transform.
+ The transformation matrix to apply to plane.
+ The transformed plane.
+
+
+ Transforms a normalized plane by a Quaternion rotation.
+ The normalized plane to transform.
+ The Quaternion rotation to apply to the plane.
+ A new plane that results from applying the Quaternion rotation.
+
+
+ Represents a vector that is used to encode three-dimensional physical rotations.
+
+
+ Creates a quaternion from the specified vector and rotation parts.
+ The vector part of the quaternion.
+ The rotation part of the quaternion.
+
+
+ Constructs a quaternion from the specified components.
+ The value to assign to the X component of the quaternion.
+ The value to assign to the Y component of the quaternion.
+ The value to assign to the Z component of the quaternion.
+ The value to assign to the W component of the quaternion.
+
+
+ Adds each element in one quaternion with its corresponding element in a second quaternion.
+ The first quaternion.
+ The second quaternion.
+ The quaternion that contains the summed values of value1 and value2.
+
+
+ Concatenates two quaternions.
+ The first quaternion rotation in the series.
+ The second quaternion rotation in the series.
+ A new quaternion representing the concatenation of the value1 rotation followed by the value2 rotation.
+
+
+ Returns the conjugate of a specified quaternion.
+ The quaternion.
+ A new quaternion that is the conjugate of value.
+
+
+ Creates a quaternion from a vector and an angle to rotate about the vector.
+ The vector to rotate around.
+ The angle, in radians, to rotate around the vector.
+ The newly created quaternion.
+
+
+ Creates a quaternion from the specified rotation matrix.
+ The rotation matrix.
+ The newly created quaternion.
+
+
+ Creates a new quaternion from the given yaw, pitch, and roll.
+ The yaw angle, in radians, around the Y axis.
+ The pitch angle, in radians, around the X axis.
+ The roll angle, in radians, around the Z axis.
+ The resulting quaternion.
+
+
+ Divides one quaternion by a second quaternion.
+ The dividend.
+ The divisor.
+ The quaternion that results from dividing value1 by value2.
+
+
+ Calculates the dot product of two quaternions.
+ The first quaternion.
+ The second quaternion.
+ The dot product.
+
+
+ Returns a value that indicates whether this instance and another quaternion are equal.
+ The other quaternion.
+ true if the two quaternions are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Gets a quaternion that represents no rotation.
+ A quaternion whose values are (0, 0, 0, 1).
+
+
+ Returns the inverse of a quaternion.
+ The quaternion.
+ The inverted quaternion.
+
+
+ Gets a value that indicates whether the current instance is the identity quaternion.
+ true if the current instance is the identity quaternion; otherwise, false.
+
+
+ Calculates the length of the quaternion.
+ The computed length of the quaternion.
+
+
+ Calculates the squared length of the quaternion.
+ The length squared of the quaternion.
+
+
+ Performs a linear interpolation between two quaternions based on a value that specifies the weighting of the second quaternion.
+ The first quaternion.
+ The second quaternion.
+ The relative weight of quaternion2 in the interpolation.
+ The interpolated quaternion.
+
+
+ Returns the quaternion that results from multiplying two quaternions together.
+ The first quaternion.
+ The second quaternion.
+ The product quaternion.
+
+
+ Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor.
+ The source quaternion.
+ The scalar value.
+ The scaled quaternion.
+
+
+ Reverses the sign of each component of the quaternion.
+ The quaternion to negate.
+ The negated quaternion.
+
+
+ Divides each component of a specified by its length.
+ The quaternion to normalize.
+ The normalized quaternion.
+
+
+ Adds each element in one quaternion with its corresponding element in a second quaternion.
+ The first quaternion.
+ The second quaternion.
+ The quaternion that contains the summed values of value1 and value2.
+
+
+ Divides one quaternion by a second quaternion.
+ The dividend.
+ The divisor.
+ The quaternion that results from dividing value1 by value2.
+
+
+ Returns a value that indicates whether two quaternions are equal.
+ The first quaternion to compare.
+ The second quaternion to compare.
+ true if the two quaternions are equal; otherwise, false.
+
+
+ Returns a value that indicates whether two quaternions are not equal.
+ The first quaternion to compare.
+ The second quaternion to compare.
+ true if value1 and value2 are not equal; otherwise, false.
+
+
+ Returns the quaternion that results from scaling all the components of a specified quaternion by a scalar factor.
+ The source quaternion.
+ The scalar value.
+ The scaled quaternion.
+
+
+ Returns the quaternion that results from multiplying two quaternions together.
+ The first quaternion.
+ The second quaternion.
+ The product quaternion.
+
+
+ Subtracts each element in a second quaternion from its corresponding element in a first quaternion.
+ The first quaternion.
+ The second quaternion.
+ The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Reverses the sign of each component of the quaternion.
+ The quaternion to negate.
+ The negated quaternion.
+
+
+ Interpolates between two quaternions, using spherical linear interpolation.
+ The first quaternion.
+ The second quaternion.
+ The relative weight of the second quaternion in the interpolation.
+ The interpolated quaternion.
+
+
+ Subtracts each element in a second quaternion from its corresponding element in a first quaternion.
+ The first quaternion.
+ The second quaternion.
+ The quaternion containing the values that result from subtracting each element in value2 from its corresponding element in value1.
+
+
+ Returns a string that represents this quaternion.
+ The string representation of this quaternion.
+
+
+ The rotation component of the quaternion.
+
+
+
+ The X value of the vector component of the quaternion.
+
+
+
+ The Y value of the vector component of the quaternion.
+
+
+
+ The Z value of the vector component of the quaternion.
+
+
+
+ Represents a single vector of a specified numeric type that is suitable for low-level optimization of parallel algorithms.
+ The vector type. T can be any primitive numeric type.
+
+
+ Creates a vector whose components are of a specified type.
+ The numeric type that defines the type of the components in the vector.
+
+
+ Creates a vector from a specified array.
+ A numeric array.
+ values is null.
+
+
+ Creates a vector from a specified array starting at a specified index position.
+ A numeric array.
+ The starting index position from which to create the vector.
+ values is null.
+ index is less than zero. -or- The length of values minus index is less than .
+
+
+ Copies the vector instance to a specified destination array.
+ The array to receive a copy of the vector values.
+ destination is null.
+ The number of elements in the current vector is greater than the number of elements available in the destination array.
+
+
+ Copies the vector instance to a specified destination array starting at a specified index position.
+ The array to receive a copy of the vector values.
+ The starting index in destination at which to begin the copy operation.
+ destination is null.
+ The number of elements in the current instance is greater than the number of elements available from startIndex to the end of the destination array.
+ index is less than zero or greater than the last index in destination.
+
+
+ Returns the number of elements stored in the vector.
+ The number of elements stored in the vector.
+ Access to the property getter via reflection is not supported.
+
+
+ Returns a value that indicates whether this instance is equal to a specified vector.
+ The vector to compare with this instance.
+ true if the current instance and other are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance is equal to a specified object.
+ The object to compare with this instance.
+ true if the current instance and obj are equal; otherwise, false. The method returns false if obj is null, or if obj is a vector of a different type than the current instance.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Gets the element at a specified index.
+ The index of the element to return.
+ The element at index index.
+ index is less than zero. -or- index is greater than or equal to .
+
+
+ Returns a vector containing all ones.
+ A vector containing all ones.
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Returns a new vector by performing a bitwise And operation on each of the elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector that results from the bitwise And of left and right.
+
+
+ Returns a new vector by performing a bitwise Or operation on each of the elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector that results from the bitwise Or of the elements in left and right.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector that results from dividing left by right.
+
+
+ Returns a value that indicates whether each pair of elements in two specified vectors are equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are equal; otherwise, false.
+
+
+ Returns a new vector by performing a bitwise XOr operation on each of the elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector that results from the bitwise XOr of the elements in left and right.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of the specified vector into a vector of type .
+ The vector to reinterpret.
+ The reinterpreted vector.
+
+
+ Returns a value that indicates whether any single pair of elements in the specified vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if any element pairs in left and right are equal. false if no element pairs are equal.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiplies a vector by a specified scalar value.
+ The source vector.
+ A scalar value.
+ The scaled vector.
+
+
+ Multiplies a vector by the given scalar.
+ The scalar value.
+ The source vector.
+ The scaled vector.
+
+
+ Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements.
+ The source vector.
+ The one's complement vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The vector that results from subtracting right from left.
+
+
+ Negates a given vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns the string representation of this vector using the specified format string to format individual elements and the specified format provider to define culture-specific formatting.
+ A or that defines the format of individual elements.
+ A format provider that supplies culture-specific formatting information.
+ The string representation of the current instance.
+
+
+ Returns the string representation of this vector using default formatting.
+ The string representation of this vector.
+
+
+ Returns the string representation of this vector using the specified format string to format individual elements.
+ A or that defines the format of individual elements.
+ The string representation of the current instance.
+
+
+ Returns a vector containing all zeroes.
+ A vector containing all zeroes.
+
+
+ Provides a collection of static convenience methods for creating, manipulating, combining, and converting generic vectors.
+
+
+ Returns a new vector whose elements are the absolute values of the given vector's elements.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The absolute value vector.
+
+
+ Returns a new vector whose values are the sum of each pair of elements from two given vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The summed vector.
+
+
+ Returns a new vector by performing a bitwise And Not operation on each pair of corresponding elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of unsigned bytes.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a double-precision floating-point vector.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of 16-bit integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of long integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of signed bytes.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a single-precision floating-point vector.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of unsigned 16-bit integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of unsigned integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Reinterprets the bits of a specified vector into those of a vector of unsigned long integers.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The reinterpreted vector.
+
+
+ Returns a new vector by performing a bitwise And operation on each pair of elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a new vector by performing a bitwise Or operation on each pair of elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Creates a new single-precision vector with elements selected between two specified single-precision source vectors based on an integral mask vector.
+ The integral mask vector used to drive selection.
+ The first source vector.
+ The second source vector.
+ The new vector with elements selected based on the mask.
+
+
+ Creates a new double-precision vector with elements selected between two specified double-precision source vectors based on an integral mask vector.
+ The integral mask vector used to drive selection.
+ The first source vector.
+ The second source vector.
+ The new vector with elements selected based on the mask.
+
+
+ Creates a new vector of a specified type with elements selected between two specified source vectors of the same type based on an integral mask vector.
+ The integral mask vector used to drive selection.
+ The first source vector.
+ The second source vector.
+ The vector type. T can be any primitive numeric type.
+ The new vector with elements selected based on the mask.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns a new vector whose values are the result of dividing the first vector's elements by the corresponding elements in the second vector.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The divided vector.
+
+
+ Returns the dot product of two vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The dot product.
+
+
+ Returns a new integral vector whose elements signal whether the elements in two specified double-precision vectors are equal.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in two specified integral vectors are equal.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector whose elements signal whether the elements in two specified long integer vectors are equal.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting long integer vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in two specified single-precision vectors are equal.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector of a specified type whose elements signal whether the elements in two specified vectors of the same type are equal.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a value that indicates whether each pair of elements in the given vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if all elements in left and right are equal; otherwise, false.
+
+
+ Returns a value that indicates whether any single pair of elements in the given vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if any element pair in left and right is equal; otherwise, false.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are greater than their corresponding elements in a second double-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than their corresponding elements in a second integral vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than their corresponding elements in a second long integer vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting long integer vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are greater than their corresponding elements in a second single-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than their corresponding elements in the second vector of the same time.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a value that indicates whether all elements in the first vector are greater than the corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if all elements in left are greater than the corresponding elements in right; otherwise, false.
+
+
+ Returns a value that indicates whether any element in the first vector is greater than the corresponding element in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if any element in left is greater than the corresponding element in right; otherwise, false.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the single-precision floating-point second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new long integer vector whose elements signal whether the elements in one long integer vector are greater than or equal to their corresponding elements in the second long integer vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting long integer vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one integral vector are greater than or equal to their corresponding elements in the second integral vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one vector are greater than or equal to their corresponding elements in the second double-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector whose elements signal whether the elements in one vector of a specified type are greater than or equal to their corresponding elements in the second vector of the same type.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a value that indicates whether all elements in the first vector are greater than or equal to all the corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if all elements in left are greater than or equal to the corresponding elements in right; otherwise, false.
+
+
+ Returns a value that indicates whether any element in the first vector is greater than or equal to the corresponding element in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if any element in left is greater than or equal to the corresponding element in right; otherwise, false.
+
+
+ Gets a value that indicates whether vector operations are subject to hardware acceleration through JIT intrinsic support.
+ true if vector operations are subject to hardware acceleration; otherwise, false.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than their corresponding elements in a second double-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one integral vector are less than their corresponding elements in a second integral vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector
+
+
+ Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less than their corresponding elements in a second long integer vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting long integer vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one single-precision vector are less than their corresponding elements in a second single-precision vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector of a specified type whose elements signal whether the elements in one vector are less than their corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a value that indicates whether all of the elements in the first vector are less than their corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if all of the elements in left are less than the corresponding elements in right; otherwise, false.
+
+
+ Returns a value that indicates whether any element in the first vector is less than the corresponding element in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if any element in left is less than the corresponding element in right; otherwise, false.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one double-precision floating-point vector are less than or equal to their corresponding elements in a second double-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one integral vector are less than or equal to their corresponding elements in a second integral vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new long integer vector whose elements signal whether the elements in one long integer vector are less or equal to their corresponding elements in a second long integer vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting long integer vector.
+
+
+ Returns a new integral vector whose elements signal whether the elements in one single-precision floating-point vector are less than or equal to their corresponding elements in a second single-precision floating-point vector.
+ The first vector to compare.
+ The second vector to compare.
+ The resulting integral vector.
+
+
+ Returns a new vector whose elements signal whether the elements in one vector are less than or equal to their corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a value that indicates whether all elements in the first vector are less than or equal to their corresponding elements in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if all of the elements in left are less than or equal to the corresponding elements in right; otherwise, false.
+
+
+ Returns a value that indicates whether any element in the first vector is less than or equal to the corresponding element in the second vector.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ true if any element in left is less than or equal to the corresponding element in right; otherwise, false.
+
+
+ Returns a new vector whose elements are the maximum of each pair of elements in the two given vectors.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The maximum vector.
+
+
+ Returns a new vector whose elements are the minimum of each pair of elements in the two given vectors.
+ The first vector to compare.
+ The second vector to compare.
+ The vector type. T can be any primitive numeric type.
+ The minimum vector.
+
+
+ Returns a new vector whose values are a scalar value multiplied by each of the values of a specified vector.
+ The scalar value.
+ The vector.
+ The vector type. T can be any primitive numeric type.
+ The scaled vector.
+
+
+ Returns a new vector whose values are the product of each pair of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The product vector.
+
+
+ Returns a new vector whose values are the values of a specified vector each multiplied by a scalar value.
+ The vector.
+ The scalar value.
+ The vector type. T can be any primitive numeric type.
+ The scaled vector.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns a new vector whose elements are the negation of the corresponding element in the specified vector.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The negated vector.
+
+
+ Returns a new vector whose elements are obtained by taking the one's complement of a specified vector's elements.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Returns a new vector whose elements are the square roots of a specified vector's elements.
+ The source vector.
+ The vector type. T can be any primitive numeric type.
+ The square root vector.
+
+
+ Returns a new vector whose values are the difference between the elements in the second vector and their corresponding elements in the first vector.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The difference vector.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Returns a new vector by performing a bitwise exclusive Or (XOr) operation on each pair of elements in two vectors.
+ The first vector.
+ The second vector.
+ The vector type. T can be any primitive numeric type.
+ The resulting vector.
+
+
+ Represents a vector with two single-precision floating-point values.
+
+
+ Creates a new object whose two elements have the same value.
+ The value to assign to both elements.
+
+
+ Creates a vector whose elements have the specified values.
+ The value to assign to the field.
+ The value to assign to the field.
+
+
+ Returns a vector whose elements are the absolute values of each of the specified vector's elements.
+ A vector.
+ The absolute value vector.
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Restricts a vector between a minimum and a maximum value.
+ The vector to restrict.
+ The minimum value.
+ The maximum value.
+ The restricted vector.
+
+
+ Copies the elements of the vector to a specified array.
+ The destination array.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ array is multidimensional.
+
+
+ Copies the elements of the vector to a specified array starting at a specified index position.
+ The destination array.
+ The index at which to copy the first element of the vector.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ index is less than zero. -or- index is greater than or equal to the array length.
+ array is multidimensional.
+
+
+ Computes the Euclidean distance between the two given points.
+ The first point.
+ The second point.
+ The distance.
+
+
+ Returns the Euclidean distance squared between two specified points.
+ The first point.
+ The second point.
+ The distance squared.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector resulting from the division.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The vector that results from the division.
+
+
+ Returns the dot product of two vectors.
+ The first vector.
+ The second vector.
+ The dot product.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`.
+
+
+ Returns a value that indicates whether this instance and another vector are equal.
+ The other vector.
+ true if the two vectors are equal; otherwise, false.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Returns the length of the vector.
+ The vector's length.
+
+
+ Returns the length of the vector squared.
+ The vector's length squared.
+
+
+ Performs a linear interpolation between two vectors based on the given weighting.
+ The first vector.
+ The second vector.
+ A value between 0 and 1 that indicates the weight of value2.
+ The interpolated vector.
+
+
+ Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The maximized vector.
+
+
+ Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The minimized vector.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiplies a vector by a specified scalar.
+ The vector to multiply.
+ The scalar value.
+ The scaled vector.
+
+
+ Multiplies a scalar value by a specified vector.
+ The scaled value.
+ The vector.
+ The scaled vector.
+
+
+ Negates a specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns a vector with the same direction as the specified vector, but with a length of one.
+ The vector to normalize.
+ The normalized vector.
+
+
+ Gets a vector whose 2 elements are equal to one.
+ A vector whose two elements are equal to one (that is, it returns the vector (1,1).
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector that results from dividing left by right.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The result of the division.
+
+
+ Returns a value that indicates whether each pair of elements in two specified vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are equal; otherwise, false.
+
+
+ Returns a value that indicates whether two specified vectors are not equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are not equal; otherwise, false.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiples the specified vector by the specified scalar value.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Multiples the scalar value by the specified vector.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The vector that results from subtracting right from left.
+
+
+ Negates the specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns the reflection of a vector off a surface that has the specified normal.
+ The source vector.
+ The normal of the surface being reflected off.
+ The reflected vector.
+
+
+ Returns a vector whose elements are the square root of each of a specified vector's elements.
+ A vector.
+ The square root vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The difference vector.
+
+
+ Returns the string representation of the current instance using default formatting.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements.
+ A or that defines the format of individual elements.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting.
+ A or that defines the format of individual elements.
+ A format provider that supplies culture-specific formatting information.
+ The string representation of the current instance.
+
+
+ Transforms a vector by a specified 3x2 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Transforms a vector by a specified 4x4 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Transforms a vector by the specified Quaternion rotation value.
+ The vector to rotate.
+ The rotation to apply.
+ The transformed vector.
+
+
+ Transforms a vector normal by the given 3x2 matrix.
+ The source vector.
+ The matrix.
+ The transformed vector.
+
+
+ Transforms a vector normal by the given 4x4 matrix.
+ The source vector.
+ The matrix.
+ The transformed vector.
+
+
+ Gets the vector (1,0).
+ The vector (1,0).
+
+
+ Gets the vector (0,1).
+ The vector (0,1).
+
+
+ The X component of the vector.
+
+
+
+ The Y component of the vector.
+
+
+
+ Returns a vector whose 2 elements are equal to zero.
+ A vector whose two elements are equal to zero (that is, it returns the vector (0,0).
+
+
+ Represents a vector with three single-precision floating-point values.
+
+
+ Creates a new object whose three elements have the same value.
+ The value to assign to all three elements.
+
+
+ Creates a new object from the specified object and the specified value.
+ The vector with two elements.
+ The additional value to assign to the field.
+
+
+ Creates a vector whose elements have the specified values.
+ The value to assign to the field.
+ The value to assign to the field.
+ The value to assign to the field.
+
+
+ Returns a vector whose elements are the absolute values of each of the specified vector's elements.
+ A vector.
+ The absolute value vector.
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Restricts a vector between a minimum and a maximum value.
+ The vector to restrict.
+ The minimum value.
+ The maximum value.
+ The restricted vector.
+
+
+ Copies the elements of the vector to a specified array.
+ The destination array.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ array is multidimensional.
+
+
+ Copies the elements of the vector to a specified array starting at a specified index position.
+ The destination array.
+ The index at which to copy the first element of the vector.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ index is less than zero. -or- index is greater than or equal to the array length.
+ array is multidimensional.
+
+
+ Computes the cross product of two vectors.
+ The first vector.
+ The second vector.
+ The cross product.
+
+
+ Computes the Euclidean distance between the two given points.
+ The first point.
+ The second point.
+ The distance.
+
+
+ Returns the Euclidean distance squared between two specified points.
+ The first point.
+ The second point.
+ The distance squared.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The vector that results from the division.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector resulting from the division.
+
+
+ Returns the dot product of two vectors.
+ The first vector.
+ The second vector.
+ The dot product.
+
+
+ Returns a value that indicates whether this instance and another vector are equal.
+ The other vector.
+ true if the two vectors are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Returns the length of this vector object.
+ The vector's length.
+
+
+ Returns the length of the vector squared.
+ The vector's length squared.
+
+
+ Performs a linear interpolation between two vectors based on the given weighting.
+ The first vector.
+ The second vector.
+ A value between 0 and 1 that indicates the weight of value2.
+ The interpolated vector.
+
+
+ Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The maximized vector.
+
+
+ Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The minimized vector.
+
+
+ Multiplies a scalar value by a specified vector.
+ The scaled value.
+ The vector.
+ The scaled vector.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiplies a vector by a specified scalar.
+ The vector to multiply.
+ The scalar value.
+ The scaled vector.
+
+
+ Negates a specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns a vector with the same direction as the specified vector, but with a length of one.
+ The vector to normalize.
+ The normalized vector.
+
+
+ Gets a vector whose 3 elements are equal to one.
+ A vector whose three elements are equal to one (that is, it returns the vector (1,1,1).
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector that results from dividing left by right.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The result of the division.
+
+
+ Returns a value that indicates whether each pair of elements in two specified vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are equal; otherwise, false.
+
+
+ Returns a value that indicates whether two specified vectors are not equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are not equal; otherwise, false.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiples the specified vector by the specified scalar value.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Multiples the scalar value by the specified vector.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The vector that results from subtracting right from left.
+
+
+ Negates the specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns the reflection of a vector off a surface that has the specified normal.
+ The source vector.
+ The normal of the surface being reflected off.
+ The reflected vector.
+
+
+ Returns a vector whose elements are the square root of each of a specified vector's elements.
+ A vector.
+ The square root vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The difference vector.
+
+
+ Returns the string representation of the current instance using default formatting.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements.
+ A or that defines the format of individual elements.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting.
+ A or that defines the format of individual elements.
+ A format provider that supplies culture-specific formatting information.
+ The string representation of the current instance.
+
+
+ Transforms a vector by a specified 4x4 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Transforms a vector by the specified Quaternion rotation value.
+ The vector to rotate.
+ The rotation to apply.
+ The transformed vector.
+
+
+ Transforms a vector normal by the given 4x4 matrix.
+ The source vector.
+ The matrix.
+ The transformed vector.
+
+
+ Gets the vector (1,0,0).
+ The vector (1,0,0).
+
+
+ Gets the vector (0,1,0).
+ The vector (0,1,0)..
+
+
+ Gets the vector (0,0,1).
+ The vector (0,0,1).
+
+
+ The X component of the vector.
+
+
+
+ The Y component of the vector.
+
+
+
+ The Z component of the vector.
+
+
+
+ Gets a vector whose 3 elements are equal to zero.
+ A vector whose three elements are equal to zero (that is, it returns the vector (0,0,0).
+
+
+ Represents a vector with four single-precision floating-point values.
+
+
+ Creates a new object whose four elements have the same value.
+ The value to assign to all four elements.
+
+
+ Constructs a new object from the specified object and a W component.
+ The vector to use for the X, Y, and Z components.
+ The W component.
+
+
+ Creates a new object from the specified object and a Z and a W component.
+ The vector to use for the X and Y components.
+ The Z component.
+ The W component.
+
+
+ Creates a vector whose elements have the specified values.
+ The value to assign to the field.
+ The value to assign to the field.
+ The value to assign to the field.
+ The value to assign to the field.
+
+
+ Returns a vector whose elements are the absolute values of each of the specified vector's elements.
+ A vector.
+ The absolute value vector.
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Restricts a vector between a minimum and a maximum value.
+ The vector to restrict.
+ The minimum value.
+ The maximum value.
+ The restricted vector.
+
+
+ Copies the elements of the vector to a specified array.
+ The destination array.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ array is multidimensional.
+
+
+ Copies the elements of the vector to a specified array starting at a specified index position.
+ The destination array.
+ The index at which to copy the first element of the vector.
+ array is null.
+ The number of elements in the current instance is greater than in the array.
+ index is less than zero. -or- index is greater than or equal to the array length.
+ array is multidimensional.
+
+
+ Computes the Euclidean distance between the two given points.
+ The first point.
+ The second point.
+ The distance.
+
+
+ Returns the Euclidean distance squared between two specified points.
+ The first point.
+ The second point.
+ The distance squared.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector resulting from the division.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The vector that results from the division.
+
+
+ Returns the dot product of two vectors.
+ The first vector.
+ The second vector.
+ The dot product.
+
+
+ Returns a value that indicates whether this instance and another vector are equal.
+ The other vector.
+ true if the two vectors are equal; otherwise, false.
+
+
+ Returns a value that indicates whether this instance and a specified object are equal.
+ The object to compare with the current instance.
+ true if the current instance and obj are equal; otherwise, false```. If <code data-dev-comment-type="paramref">obj</code> isnull, the method returnsfalse`.
+
+
+ Returns the hash code for this instance.
+ The hash code.
+
+
+ Returns the length of this vector object.
+ The vector's length.
+
+
+ Returns the length of the vector squared.
+ The vector's length squared.
+
+
+ Performs a linear interpolation between two vectors based on the given weighting.
+ The first vector.
+ The second vector.
+ A value between 0 and 1 that indicates the weight of value2.
+ The interpolated vector.
+
+
+ Returns a vector whose elements are the maximum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The maximized vector.
+
+
+ Returns a vector whose elements are the minimum of each of the pairs of elements in two specified vectors.
+ The first vector.
+ The second vector.
+ The minimized vector.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiplies a vector by a specified scalar.
+ The vector to multiply.
+ The scalar value.
+ The scaled vector.
+
+
+ Multiplies a scalar value by a specified vector.
+ The scaled value.
+ The vector.
+ The scaled vector.
+
+
+ Negates a specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns a vector with the same direction as the specified vector, but with a length of one.
+ The vector to normalize.
+ The normalized vector.
+
+
+ Gets a vector whose 4 elements are equal to one.
+ Returns .
+
+
+ Adds two vectors together.
+ The first vector to add.
+ The second vector to add.
+ The summed vector.
+
+
+ Divides the first vector by the second.
+ The first vector.
+ The second vector.
+ The vector that results from dividing left by right.
+
+
+ Divides the specified vector by a specified scalar value.
+ The vector.
+ The scalar value.
+ The result of the division.
+
+
+ Returns a value that indicates whether each pair of elements in two specified vectors is equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are equal; otherwise, false.
+
+
+ Returns a value that indicates whether two specified vectors are not equal.
+ The first vector to compare.
+ The second vector to compare.
+ true if left and right are not equal; otherwise, false.
+
+
+ Multiplies two vectors together.
+ The first vector.
+ The second vector.
+ The product vector.
+
+
+ Multiples the specified vector by the specified scalar value.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Multiples the scalar value by the specified vector.
+ The vector.
+ The scalar value.
+ The scaled vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The vector that results from subtracting right from left.
+
+
+ Negates the specified vector.
+ The vector to negate.
+ The negated vector.
+
+
+ Returns a vector whose elements are the square root of each of a specified vector's elements.
+ A vector.
+ The square root vector.
+
+
+ Subtracts the second vector from the first.
+ The first vector.
+ The second vector.
+ The difference vector.
+
+
+ Returns the string representation of the current instance using default formatting.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements.
+ A or that defines the format of individual elements.
+ The string representation of the current instance.
+
+
+ Returns the string representation of the current instance using the specified format string to format individual elements and the specified format provider to define culture-specific formatting.
+ A or that defines the format of individual elements.
+ A format provider that supplies culture-specific formatting information.
+ The string representation of the current instance.
+
+
+ Transforms a four-dimensional vector by the specified Quaternion rotation value.
+ The vector to rotate.
+ The rotation to apply.
+ The transformed vector.
+
+
+ Transforms a four-dimensional vector by a specified 4x4 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Transforms a three-dimensional vector by the specified Quaternion rotation value.
+ The vector to rotate.
+ The rotation to apply.
+ The transformed vector.
+
+
+ Transforms a two-dimensional vector by a specified 4x4 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Transforms a two-dimensional vector by the specified Quaternion rotation value.
+ The vector to rotate.
+ The rotation to apply.
+ The transformed vector.
+
+
+ Transforms a three-dimensional vector by a specified 4x4 matrix.
+ The vector to transform.
+ The transformation matrix.
+ The transformed vector.
+
+
+ Gets the vector (0,0,0,1).
+ The vector (0,0,0,1).
+
+
+ Gets the vector (1,0,0,0).
+ The vector (1,0,0,0).
+
+
+ Gets the vector (0,1,0,0).
+ The vector (0,1,0,0)..
+
+
+ Gets a vector whose 4 elements are equal to zero.
+ The vector (0,0,1,0).
+
+
+ The W component of the vector.
+
+
+
+ The X component of the vector.
+
+
+
+ The Y component of the vector.
+
+
+
+ The Z component of the vector.
+
+
+
+ Gets a vector whose 4 elements are equal to zero.
+ A vector whose four elements are equal to zero (that is, it returns the vector (0,0,0,0).
+
+
+
\ No newline at end of file
diff --git a/app/bin/Release/System.Runtime.CompilerServices.Unsafe.dll b/app/bin/Release/System.Runtime.CompilerServices.Unsafe.dll
new file mode 100644
index 0000000..3156239
Binary files /dev/null and b/app/bin/Release/System.Runtime.CompilerServices.Unsafe.dll differ
diff --git a/app/bin/Release/System.Runtime.CompilerServices.Unsafe.xml b/app/bin/Release/System.Runtime.CompilerServices.Unsafe.xml
new file mode 100644
index 0000000..6a7cfcf
--- /dev/null
+++ b/app/bin/Release/System.Runtime.CompilerServices.Unsafe.xml
@@ -0,0 +1,200 @@
+
+
+ System.Runtime.CompilerServices.Unsafe
+
+
+
+ Contains generic, low-level functionality for manipulating pointers.
+
+
+ Adds an element offset to the given reference.
+ The reference to add the offset to.
+ The offset to add.
+ The type of reference.
+ A new reference that reflects the addition of offset to pointer.
+
+
+ Adds an element offset to the given reference.
+ The reference to add the offset to.
+ The offset to add.
+ The type of reference.
+ A new reference that reflects the addition of offset to pointer.
+
+
+ Adds a byte offset to the given reference.
+ The reference to add the offset to.
+ The offset to add.
+ The type of reference.
+ A new reference that reflects the addition of byte offset to pointer.
+
+
+ Determines whether the specified references point to the same location.
+ The first reference to compare.
+ The second reference to compare.
+ The type of reference.
+ true if left and right point to the same location; otherwise, false.
+
+
+ Casts the given object to the specified type.
+ The object to cast.
+ The type which the object will be cast to.
+ The original object, casted to the given type.
+
+
+ Reinterprets the given reference as a reference to a value of type TTo.
+ The reference to reinterpret.
+ The type of reference to reinterpret..
+ The desired type of the reference.
+ A reference to a value of type TTo.
+
+
+ Returns a pointer to the given by-ref parameter.
+ The object whose pointer is obtained.
+ The type of object.
+ A pointer to the given value.
+
+
+ Reinterprets the given location as a reference to a value of type T.
+ The location of the value to reference.
+ The type of the interpreted location.
+ A reference to a value of type T.
+
+
+ Determines the byte offset from origin to target from the given references.
+ The reference to origin.
+ The reference to target.
+ The type of reference.
+ Byte offset from origin to target i.e. target - origin.
+
+
+ Copies a value of type T to the given location.
+ The location to copy to.
+ A reference to the value to copy.
+ The type of value to copy.
+
+
+ Copies a value of type T to the given location.
+ The location to copy to.
+ A pointer to the value to copy.
+ The type of value to copy.
+
+
+ Copies bytes from the source address to the destination address.
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+ Copies bytes from the source address to the destination address.
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+ Copies bytes from the source address to the destination address
+without assuming architecture dependent alignment of the addresses.
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+ Copies bytes from the source address to the destination address
+without assuming architecture dependent alignment of the addresses.
+ The destination address to copy to.
+ The source address to copy from.
+ The number of bytes to copy.
+
+
+ Initializes a block of memory at the given location with a given initial value.
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+ Initializes a block of memory at the given location with a given initial value.
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+ Initializes a block of memory at the given location with a given initial value
+without assuming architecture dependent alignment of the address.
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+ Initializes a block of memory at the given location with a given initial value
+without assuming architecture dependent alignment of the address.
+ The address of the start of the memory block to initialize.
+ The value to initialize the block to.
+ The number of bytes to initialize.
+
+
+ Reads a value of type T from the given location.
+ The location to read from.
+ The type to read.
+ An object of type T read from the given location.
+
+
+ Reads a value of type T from the given location
+without assuming architecture dependent alignment of the addresses.
+ The location to read from.
+ The type to read.
+ An object of type T read from the given location.
+
+
+ Reads a value of type T from the given location
+without assuming architecture dependent alignment of the addresses.
+ The location to read from.
+ The type to read.
+ An object of type T read from the given location.
+
+
+ Returns the size of an object of the given type parameter.
+ The type of object whose size is retrieved.
+ The size of an object of type T.
+
+
+ Subtracts an element offset from the given reference.
+ The reference to subtract the offset from.
+ The offset to subtract.
+ The type of reference.
+ A new reference that reflects the subraction of offset from pointer.
+
+
+ Subtracts an element offset from the given reference.
+ The reference to subtract the offset from.
+ The offset to subtract.
+ The type of reference.
+ A new reference that reflects the subraction of offset from pointer.
+
+
+ Subtracts a byte offset from the given reference.
+ The reference to subtract the offset from.
+
+ The type of reference.
+ A new reference that reflects the subraction of byte offset from pointer.
+
+
+ Writes a value of type T to the given location.
+ The location to write to.
+ The value to write.
+ The type of value to write.
+
+
+ Writes a value of type T to the given location
+without assuming architecture dependent alignment of the addresses.
+ The location to write to.
+ The value to write.
+ The type of value to write.
+
+
+ Writes a value of type T to the given location
+without assuming architecture dependent alignment of the addresses.
+ The location to write to.
+ The value to write.
+ The type of value to write.
+
+
+
\ No newline at end of file
diff --git a/app/bin/Release/System.Security.Principal.Windows.dll b/app/bin/Release/System.Security.Principal.Windows.dll
new file mode 100644
index 0000000..2027a85
Binary files /dev/null and b/app/bin/Release/System.Security.Principal.Windows.dll differ
diff --git a/app/bin/Release/System.Security.Principal.Windows.xml b/app/bin/Release/System.Security.Principal.Windows.xml
new file mode 100644
index 0000000..15ec771
--- /dev/null
+++ b/app/bin/Release/System.Security.Principal.Windows.xml
@@ -0,0 +1,1029 @@
+
+
+
+ System.Security.Principal.Windows
+
+
+
+ Provides a safe handle to a Windows thread or process access token. For more information, see Access Tokens.
+
+
+ Initializes a new instance of the class.
+ An object that represents the pre-existing handle to use. Using returns an invalid handle.
+
+
+ Returns an invalid handle by instantiating a object with .
+ Returns a object.
+
+
+ Gets a value that indicates whether the handle is invalid.
+
+ if the handle is not valid; otherwise, .
+
+
+ Represents an exception for a principal whose identity could not be mapped to a known identity.
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class by using the specified error message.
+ The error message that explains the reason for the exception.
+
+
+ Initializes a new instance of the class by using the specified error message and inner exception.
+ The error message that explains the reason for the exception.
+ The exception that is the cause of the current exception. If is not null, the current exception is raised in a block that handles the inner exception.
+
+
+ Gets serialization information with the data needed to create an instance of this object.
+ The object that holds the serialized object data about the exception being thrown.
+ The object that contains contextual information about the source or destination.
+
+
+ Represents the collection of unmapped identities for an exception.
+ The collection of unmapped identities.
+
+
+ Represents an identity and is the base class for the and classes. This class does not provide a public constructor, and therefore cannot be inherited.
+
+
+ Returns a value that indicates whether the specified object equals this instance of the class.
+ An object to compare with this instance, or a null reference.
+
+ if is an object with the same underlying type and value as this instance; otherwise, .
+
+
+ Serves as a hash function for . is suitable for use in hashing algorithms and data structures like a hash table.
+ The hash code for this object.
+
+
+ Returns a value that indicates whether the specified type is a valid translation type for the class.
+ The type being queried for validity to serve as a conversion from . The following target types are valid:
+
+
+ if is a valid translation type for the class; otherwise, .
+
+
+ Compares two objects to determine whether they are equal. They are considered equal if they have the same canonical name representation as the one returned by the property or if they are both .
+ The left operand to use for the equality comparison. This parameter can be .
+ The right operand to use for the equality comparison. This parameter can be .
+
+ if and are equal; otherwise, .
+
+
+ Compares two objects to determine whether they are not equal. They are considered not equal if they have different canonical name representations than the one returned by the property or if one of the objects is and the other is not.
+ The left operand to use for the inequality comparison. This parameter can be .
+ The right operand to use for the inequality comparison. This parameter can be .
+
+ if and are not equal; otherwise, .
+
+
+ Returns the string representation of the identity represented by the object.
+ The identity in string format.
+
+
+ Translates the account name represented by the object into another -derived type.
+ The target type for the conversion from .
+ The converted identity.
+
+
+ Gets the string value of the identity represented by the object.
+ The string value of the identity represented by the object.
+
+
+ Represents a collection of objects and provides a means of converting sets of -derived objects to -derived types.
+
+
+ Initializes a new instance of the class with zero items in the collection.
+
+
+ Initializes a new instance of the class by using the specified initial size.
+ The initial number of items in the collection. The value of is a hint only; it is not necessarily the maximum number of items created.
+
+
+ Adds an object to the collection.
+ The object to add to the collection.
+
+ is .
+
+
+ Clears all objects from the collection.
+
+
+ Indicates whether the collection contains the specified object.
+ The object to check for.
+
+ if the collection contains the specified object.
+
+ is .
+
+
+ Copies the collection to an array, starting at the specified index.
+ An array object to which the collection is to be copied.
+ The zero-based index in where the collection is to be copied.
+
+
+ Gets the number of items in the collection.
+ The number of objects in the collection.
+
+
+ Gets an enumerator that can be used to iterate through the collection.
+ An enumerator for the collection.
+
+
+ Sets or gets the node at the specified index of the collection.
+ The zero-based index in the collection.
+ The at the specified index in the collection. If is greater than or equal to the number of nodes in the collection, the return value is .
+
+
+ Removes the specified object from the collection.
+ The object to remove.
+
+ if the specified object was removed from the collection.
+
+ is .
+
+
+
+ Gets an enumerator that can be used to iterate through the collection.
+ An enumerator for the collection.
+
+
+ Converts the objects in the collection to the specified type. Calling this method is the same as calling with the second parameter set to , which means that exceptions will not be thrown for items that fail conversion.
+ The type to which items in the collection are being converted.
+ A collection that represents the converted contents of the original collection.
+
+
+ Converts the objects in the collection to the specified type and uses the specified fault tolerance to handle or ignore errors associated with a type not having a conversion mapping.
+ The type to which items in the collection are being converted.
+ A Boolean value that determines how conversion errors are handled.
+If is , conversion errors due to a mapping not being found for the translation result in a failed conversion and exceptions being thrown.
+If is , types that failed to convert due to a mapping not being found for the translation are copied without being converted into the collection being returned.
+ A collection that represents the converted contents of the original collection.
+
+
+ Represents a user or group account.
+
+
+ Initializes a new instance of the class by using the specified name.
+ The name used to create the object. This parameter cannot be or an empty string.
+
+ is .
+
+ is an empty string.
+-or-
+ is too long.
+
+
+ Initializes a new instance of the class by using the specified domain name and account name.
+ The name of the domain. This parameter can be or an empty string. Domain names that are null values are treated like an empty string.
+ The name of the account. This parameter cannot be or an empty string.
+
+ is .
+
+ is an empty string.
+-or-
+ is too long.
+-or-
+ is too long.
+
+
+ Returns a value that indicates whether this object is equal to a specified object.
+ An object to compare with this object, or .
+
+ if is an object with the same underlying type and value as this object; otherwise, .
+
+
+ Serves as a hash function for the current object. The method is suitable for hashing algorithms and data structures like a hash table.
+ A hash value for the current object.
+
+
+ Returns a value that indicates whether the specified type is a valid translation type for the class.
+ The type being queried for validity to serve as a conversion from . The following target types are valid:
+-
+-
+
+ if is a valid translation type for the class; otherwise .
+
+
+ Compares two objects to determine whether they are equal. They are considered equal if they have the same canonical name representation as the one returned by the property or if they are both .
+ The left operand to use for the equality comparison. This parameter can be .
+ The right operand to use for the equality comparison. This parameter can be .
+
+ if and are equal; otherwise .
+
+
+ Compares two objects to determine whether they are not equal. They are considered not equal if they have different canonical name representations than the one returned by the property or if one of the objects is and the other is not.
+ The left operand to use for the inequality comparison. This parameter can be .
+ The right operand to use for the inequality comparison. This parameter can be .
+
+ if and are not equal; otherwise .
+
+
+ Returns the account name, in Domain \ Account format, for the account represented by the object.
+ The account name, in Domain \ Account format.
+
+
+ Translates the account name represented by the object into another -derived type.
+ The target type for the conversion from . The target type must be a type that is considered valid by the method.
+ The converted identity.
+
+ is .
+
+ is not an type.
+ Some or all identity references could not be translated.
+ The source account name is too long.
+-or-
+A Win32 error code was returned.
+
+
+ Returns a string representation of this object.
+ The string representation of this object.
+
+
+ Represents a security identifier (SID) and provides marshaling and comparison operations for SIDs.
+
+
+ Initializes a new instance of the class by using a specified binary representation of a security identifier (SID).
+ The byte array that represents the SID.
+ The byte offset to use as the starting index in .
+
+
+ Initializes a new instance of the class by using an integer that represents the binary form of a security identifier (SID).
+ An integer that represents the binary form of a SID.
+
+
+ Initializes a new instance of the class by using the specified well known security identifier (SID) type and domain SID.
+ One of the enumeration values. This value must not be .
+ The domain SID. This value is required for the following values. This parameter is ignored for any other values.
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+-
+
+
+ Initializes a new instance of the class by using the specified security identifier (SID) in Security Descriptor Definition Language (SDDL) format.
+ SDDL string for the SID used to create the object.
+
+
+ Returns the account domain security identifier (SID) portion from the SID represented by the object if the SID represents a Windows account SID. If the SID does not represent a Windows account SID, this property returns .
+ The account domain SID portion from the SID represented by the object if the SID represents a Windows account SID; otherwise, it returns .
+
+
+ Returns the length, in bytes, of the security identifier (SID) represented by the object.
+ The length, in bytes, of the SID represented by the object.
+
+
+ Compares the current object with the specified object.
+ The object to compare with the current object.
+ A signed number indicating the relative values of this instance and .
+ Return Value
+
+ Description
+
+ Less than zero
+
+ This instance is less than .
+
+ Zero
+
+ This instance is equal to .
+
+ Greater than zero
+
+ This instance is greater than .
+
+
+ Returns a value that indicates whether this object is equal to a specified object.
+ An object to compare with this object, or .
+
+ if is an object with the same underlying type and value as this object; otherwise, .
+
+
+ Indicates whether the specified object is equal to the current object.
+ The object to compare with the current object.
+
+ if the value of is equal to the value of the current object.
+
+
+ Copies the binary representation of the specified security identifier (SID) represented by the class to a byte array.
+ The byte array to receive the copied SID.
+ The byte offset to use as the starting index in .
+
+
+ Serves as a hash function for the current object. The method is suitable for hashing algorithms and data structures like a hash table.
+ A hash value for the current object.
+
+
+ Returns a value that indicates whether the security identifier (SID) represented by this object is a valid Windows account SID.
+
+ if the SID represented by this object is a valid Windows account SID; otherwise, .
+
+
+ Returns a value that indicates whether the security identifier (SID) represented by this object is from the same domain as the specified SID.
+ The SID to compare with this object.
+
+ if the SID represented by this object is in the same domain as the SID; otherwise, .
+
+
+ Returns a value that indicates whether the specified type is a valid translation type for the class.
+ The type being queried for validity to serve as a conversion from . The following target types are valid:
+-
+-
+
+ if is a valid translation type for the class; otherwise, .
+
+
+ Returns a value that indicates whether the object matches the specified well known security identifier (SID) type.
+ A value to compare with the object.
+
+ if is the SID type for the object; otherwise, .
+
+
+ Returns the maximum size, in bytes, of the binary representation of the security identifier.
+
+
+ Returns the minimum size, in bytes, of the binary representation of the security identifier.
+
+
+ Compares two objects to determine whether they are equal. They are considered equal if they have the same canonical representation as the one returned by the property or if they are both .
+ The left operand to use for the equality comparison. This parameter can be .
+ The right operand to use for the equality comparison. This parameter can be .
+
+ if and are equal; otherwise, .
+
+
+ Compares two objects to determine whether they are not equal. They are considered not equal if they have different canonical name representations than the one returned by the property or if one of the objects is and the other is not.
+ The left operand to use for the inequality comparison. This parameter can be .
+ The right operand to use for the inequality comparison. This parameter can be .
+
+ if and are not equal; otherwise, .
+
+
+ Returns the security identifier (SID), in Security Descriptor Definition Language (SDDL) format, for the account represented by the object. An example of the SDDL format is S-1-5-9.
+ The SID, in SDDL format, for the account represented by the object.
+
+
+ Translates the account name represented by the object into another -derived type.
+ The target type for the conversion from . The target type must be a type that is considered valid by the method.
+ The converted identity.
+
+ is .
+
+ is not an type.
+ Some or all identity references could not be translated.
+ A Win32 error code was returned.
+
+
+ Returns an uppercase Security Descriptor Definition Language (SDDL) string for the security identifier (SID) represented by this object.
+ An uppercase SDDL string for the SID represented by the object.
+
+
+ Defines the privileges of the user account associated with the access token.
+
+
+ The user can change the default owner, primary group, or discretionary access control list (DACL) of the token.
+
+
+ The user can change the attributes of the groups in the token.
+
+
+ The user can enable or disable privileges in the token.
+
+
+ The user can adjust the session identifier of the token.
+
+
+ The user has all possible access to the token.
+
+
+ The user can attach a primary token to a process.
+
+
+ The user can duplicate the token.
+
+
+ The user can impersonate a client.
+
+
+ The maximum value that can be assigned for the enumeration.
+
+
+ The user can query the token.
+
+
+ The user can query the source of the token.
+
+
+ The user has standard read rights and the privilege for the token.
+
+
+ The user has standard write rights and the , and privileges for the token.
+
+
+ Defines a set of commonly used security identifiers (SIDs).
+
+
+ Indicates a SID that matches the account administrators group.
+
+
+ Indicates a SID that matches the certificate administrators group.
+
+
+ Indicates a SID that matches the account computer group.
+
+
+ Indicates a SID that matches the account controller group.
+
+
+ Indicates a SID that matches the account domain administrator group.
+
+
+ Indicates a SID that matches the account domain guests group.
+
+
+ Indicates a SID that matches the account domain users group.
+
+
+ Indicates a SID that matches the enterprise administrators group.
+
+
+ Indicates a SID that matches the account guest group.
+
+
+ Indicates a SID that matches the account Kerberos target group.
+
+
+ Indicates a SID that matches the policy administrators group.
+
+
+ Indicates a SID that matches the RAS and IAS server account.
+
+
+ Indicates a SID that matches the schema administrators group.
+
+
+ Indicates a SID for the anonymous account.
+
+
+ Indicates a SID for an authenticated user.
+
+
+ Indicates a SID for a batch process. This SID is added to the process of a token when it logs on as a batch job.
+
+
+ Indicates a SID that matches the account operators account.
+
+
+ Indicates a SID that matches the administrator account.
+
+
+ Indicates a SID that matches the Windows Authorization Access group.
+
+
+ Indicates a SID that matches the backup operators group.
+
+
+ Indicates a SID that matches the domain account.
+
+
+ Indicates a SID that matches the guest account.
+
+
+ Indicates a SID that allows a user to create incoming forest trusts. It is added to the token of users who are a member of the Incoming Forest Trust Builders built-in group in the root domain of the forest.
+
+
+ Indicates a SID that matches the network operators group.
+
+
+ Indicates a SID that matches the group of users that have remote access to monitor the computer.
+
+
+ Indicates a SID that matches the group of users that have remote access to schedule logging of performance counters on this computer.
+
+
+ Indicates a SID that matches the power users group.
+
+
+ Indicates a SID that matches pre-Windows 2000 compatible accounts.
+
+
+ Indicates a SID that matches the print operators group.
+
+
+ Indicates a SID that matches remote desktop users.
+
+
+ Indicates a SID that matches the replicator account.
+
+
+ Indicates a SID that matches the system operators group.
+
+
+ Indicates a SID that matches built-in user accounts.
+
+
+ Indicates a creator group server SID.
+
+
+ Indicates a SID that matches the creator group of an object.
+
+
+ Indicates a creator owner server SID.
+
+
+ Indicates a SID that matches the owner or creator of an object.
+
+
+ Indicates a SID for a dial-up account.
+
+
+ Indicates a SID present when the Microsoft Digest authentication package authenticated the client.
+
+
+ Indicates a SID for an enterprise controller.
+
+
+ Indicates a SID for an interactive account. This SID is added to the process of a token when it logs on interactively.
+
+
+ Indicates a SID that matches a local service.
+
+
+ Indicates a local SID.
+
+
+ Indicates a SID that matches the local system.
+
+
+ Indicates a SID that matches logon IDs.
+
+
+ Indicates the maximum defined SID in the enumeration.
+
+
+ Indicates a SID that matches a network service.
+
+
+ Indicates a SID for a network account. This SID is added to the process of a token when it logs on across a network.
+
+
+ Indicates a SID for the Windows NT authority.
+
+
+ Indicates a SID present when the Microsoft NTLM authentication package authenticated the client.
+
+
+ Indicates a null SID.
+
+
+ Indicates a SID present when the user authenticated across a forest with the selective authentication option enabled. If this SID is present, then cannot be present.
+
+
+ Indicates a proxy SID.
+
+
+ Indicates a SID that matches remote logons.
+
+
+ Indicates a SID for restricted code.
+
+
+ Indicates a SID present when the Secure Channel (SSL/TLS) authentication package authenticated the client.
+
+
+ Indicates a SID for self.
+
+
+ Indicates a SID for a service. This SID is added to the process of a token when it logs on as a service.
+
+
+ Indicates a SID that matches a terminal server account.
+
+
+ Indicates a SID present when the user authenticated from within the forest or across a trust that does not have the selective authentication option enabled. If this SID is present, then cannot be present.
+
+
+ Indicates a SID that matches an account read-only controllers group.
+
+
+ Indicates a SID that matches the application package authority.
+
+
+ Indicates a SID that applies to all app containers.
+
+
+ Indicates a SID that matches the built-in DCOM certification services access group.
+
+
+ Indicates a SID that allows a user to use cryptographic operations. It is added to the token of users who are a member of the CryptoOperators built-in group.
+
+
+ Indicates a SID that matches the distributed COM user group.
+
+
+ Indicates a SID that matches an event log readers group.
+
+
+ Indicates a SID that matches the Internet built-in user group.
+
+
+ Indicates a SID is present in a server that can issue Terminal Server licenses.
+
+
+ Indicates a SID that matches a cacheable principals group.
+
+
+ Indicates a SID for documents library capability for app containers.
+
+
+ Indicates a SID for Windows credentials capability for app containers.
+
+
+ Indicates a SID of Internet client and server capability for app containers.
+
+
+ Indicates a SID of Internet client capability for app containers.
+
+
+ Indicates a SID for music library capability for app containers.
+
+
+ Indicates a SID for pictures library capability for app containers.
+
+
+ Indicates a SID of private network client and server capability for app containers.
+
+
+ Indicates a SID for removable storage capability for app containers.
+
+
+ Indicates a SID for shared user certificates capability for app containers.
+
+
+ Indicates a SID for videos library capability for app containers.
+
+
+ Indicates a SID that matches a console logon group.
+
+
+ Indicates a SID that matches a creator and owner rights group.
+
+
+ Indicates a SID that matches an enterprise wide read-only controllers group.
+
+
+ Indicates a SID that matches a high level of trust label.
+
+
+ Indicates a SID that matches the Internet user group.
+
+
+ Indicates a SID that matches a local logon group.
+
+
+ Indicates a SID that matches an low level of trust label.
+
+
+ Indicates a SID that matches an medium level of trust label.
+
+
+ Indicates a SID that matches the medium plus integrity label.
+
+
+ Indicates a SID that matches a read-only enterprise domain controller.
+
+
+ Indicates a SID that matches a non-cacheable principals group.
+
+
+ Indicates a SID that matches a system label.
+
+
+ Indicates a SID that matches a certificate for the given organization.
+
+
+ Indicates a SID that matches an untrusted label.
+
+
+ Indicates a SID that matches a write restricted code group.
+
+
+ Indicates a SID that matches everyone.
+
+
+ Specifies the type of Windows account used.
+
+
+ An anonymous account.
+
+
+ A Windows guest account.
+
+
+ A standard user account.
+
+
+ A Windows system account.
+
+
+ Specifies common roles to be used with .
+
+
+ Account operators manage the user accounts on a computer or domain.
+
+
+ Administrators have complete and unrestricted access to the computer or domain.
+
+
+ Backup operators can override security restrictions for the sole purpose of backing up or restoring files.
+
+
+ Guests are more restricted than users.
+
+
+ Power users possess most administrative permissions with some restrictions. Thus, power users can run legacy applications, in addition to certified applications.
+
+
+ Print operators can take control of a printer.
+
+
+ Replicators support file replication in a domain.
+
+
+ System operators manage a particular computer.
+
+
+ Users are prevented from making accidental or intentional system-wide changes. Thus, users can run certified applications, but not most legacy applications.
+
+
+ Represents a Windows user.
+
+
+ Initializes a new instance of the class for the user represented by the specified Windows account token.
+ The account token for the user on whose behalf the code is running.
+
+ is 0.
+-or-
+ is duplicated and invalid for impersonation.
+ The caller does not have the correct permissions.
+-or-
+A Win32 error occurred.
+
+
+ Initializes a new instance of the class for the user represented by the specified Windows account token and the specified authentication type.
+ The account token for the user on whose behalf the code is running.
+ (Informational use only.) The type of authentication used to identify the user.
+
+ is 0.
+-or-
+ is duplicated and invalid for impersonation.
+ The caller does not have the correct permissions.
+-or-
+A Win32 error occurred.
+
+
+ Initializes a new instance of the class for the user represented by the specified Windows account token, the specified authentication type, and the specified Windows account type.
+ The account token for the user on whose behalf the code is running.
+ (Informational use only.) The type of authentication used to identify the user.
+ One of the enumeration values.
+
+ is 0.
+-or-
+ is duplicated and invalid for impersonation.
+ The caller does not have the correct permissions.
+-or-
+A Win32 error occurred.
+
+
+ Initializes a new instance of the class for the user represented by the specified Windows account token, the specified authentication type, the specified Windows account type, and the specified authentication status.
+ The account token for the user on whose behalf the code is running.
+ (Informational use only.) The type of authentication used to identify the user.
+ One of the enumeration values.
+
+ to indicate that the user is authenticated; otherwise, .
+
+ is 0.
+-or-
+ is duplicated and invalid for impersonation.
+ The caller does not have the correct permissions.
+-or-
+A Win32 error occurred.
+
+
+ Initializes a new instance of the class for the user represented by information in a stream.
+ The object containing the account information for the user.
+ An object that indicates the stream characteristics.
+ A cannot be serialized across processes.
+ The caller does not have the correct permissions.
+-or-
+A Win32 error occurred.
+
+
+ Initializes a new instance of the class by using the specified object.
+ The object from which to construct the new instance of .
+
+
+ Initializes a new instance of the class for the user represented by the specified User Principal Name (UPN).
+ The UPN for the user on whose behalf the code is running.
+ Windows returned the Windows NT status code STATUS_ACCESS_DENIED.
+ There is insufficient memory available.
+ The caller does not have the correct permissions.
+-or-
+The computer is not attached to a Windows 2003 or later domain.
+-or-
+The computer is not running Windows 2003 or later.
+-or-
+The user is not a member of the domain the computer is attached to.
+
+
+ Gets this for this instance.
+ Returns a .
+
+
+ Gets the type of authentication used to identify the user.
+ The type of authentication used to identify the user.
+ Windows returned the Windows NT status code STATUS_ACCESS_DENIED.
+ There is insufficient memory available.
+ The caller does not have the correct permissions.
+-or-
+The computer is not attached to a Windows 2003 or later domain.
+-or-
+The computer is not running Windows 2003 or later.
+-or-
+The user is not a member of the domain the computer is attached to.
+
+
+ Gets all claims for the user represented by this Windows identity.
+ A collection of claims for this object.
+
+
+ Creates a new object that is a copy of the current instance.
+ A copy of the current instance.
+
+
+ Identifies the name of the default issuer.
+
+
+ Gets claims that have the property key.
+ A collection of claims that have the property key.
+
+
+ Releases all resources used by the .
+
+
+ Releases the unmanaged resources used by the and optionally releases the managed resources.
+
+ to release both managed and unmanaged resources; to release only unmanaged resources.
+
+
+ Returns a object that you can use as a sentinel value in your code to represent an anonymous user. The property value does not represent the built-in anonymous identity used by the Windows operating system.
+ An object that represents an anonymous user.
+
+
+ Returns a object that represents the current Windows user.
+ An object that represents the current user.
+ The caller does not have the correct permissions.
+
+
+ Returns a object that represents the Windows identity for either the thread or the process, depending on the value of the parameter.
+
+ to return the only if the thread is currently impersonating; to return the of the thread if it is impersonating or the of the process if the thread is not currently impersonating.
+ An object that represents a Windows user.
+
+
+ Returns a object that represents the current Windows user, using the specified desired token access level.
+ A bitwise combination of the enumeration values.
+ An object that represents the current user.
+
+
+ Gets the groups the current Windows user belongs to.
+ An object representing the groups the current Windows user belongs to.
+
+
+ Gets the impersonation level for the user.
+ One of the enumeration values that specifies the impersonation level.
+
+
+ Gets a value that indicates whether the user account is identified as an anonymous account by the system.
+
+ if the user account is an anonymous account; otherwise, .
+
+
+ Gets a value indicating whether the user has been authenticated by Windows.
+
+ if the user was authenticated; otherwise, .
+
+
+ Gets a value indicating whether the user account is identified as a account by the system.
+
+ if the user account is a account; otherwise, .
+
+
+ Gets a value indicating whether the user account is identified as a account by the system.
+
+ if the user account is a account; otherwise, .
+
+
+ Gets the user's Windows logon name.
+ The Windows logon name of the user on whose behalf the code is being run.
+
+
+ Gets the security identifier (SID) for the token owner.
+ An object for the token owner.
+
+
+ Runs the specified action as the impersonated Windows identity. Instead of using an impersonated method call and running your function in , you can use and provide your function directly as a parameter.
+ The SafeAccessTokenHandle of the impersonated Windows identity.
+ The System.Action to run.
+
+
+ Runs the specified function as the impersonated Windows identity. Instead of using an impersonated method call and running your function in , you can use and provide your function directly as a parameter.
+ The SafeAccessTokenHandle of the impersonated Windows identity.
+ The System.Func to run.
+ The type of object used by and returned by the function.
+ The result of the function.
+
+
+ Implements the interface and is called back by the deserialization event when deserialization is complete.
+ The source of the deserialization event.
+
+
+ Sets the object with the logical context information needed to recreate an instance of this execution context.
+ An object containing the information required to serialize the .
+ An object containing the source and destination of the serialized stream associated with the .
+
+
+ Gets the Windows account token for the user.
+ The handle of the access token associated with the current execution thread.
+
+
+ Gets the security identifier (SID) for the user.
+ An object for the user.
+
+
+ Gets claims that have the property key.
+ A collection of claims that have the property key.
+
+
+ Enables code to check the Windows group membership of a Windows user.
+
+
+ Initializes a new instance of the class by using the specified object.
+ The object from which to construct the new instance of .
+
+ is .
+
+
+ Gets all Windows device claims from this principal.
+ A collection of all Windows device claims from this principal.
+
+
+ Gets the identity of the current principal.
+ The object of the current principal.
+
+
+ Determines whether the current principal belongs to the Windows user group with the specified relative identifier (RID).
+ The RID of the Windows user group in which to check for the principal's membership status.
+
+ if the current principal is a member of the specified Windows user group, that is, in a particular role; otherwise, .
+
+
+ Determines whether the current principal belongs to the Windows user group with the specified security identifier (SID).
+ A that uniquely identifies a Windows user group.
+
+ if the current principal is a member of the specified Windows user group; otherwise, .
+
+ is .
+ Windows returned a Win32 error.
+
+
+ Determines whether the current principal belongs to the Windows user group with the specified .
+ One of the values.
+
+ if the current principal is a member of the specified Windows user group; otherwise, .
+
+ is not a valid value.
+
+
+ Determines whether the current principal belongs to the Windows user group with the specified name.
+ The name of the Windows user group for which to check membership.
+
+ if the current principal is a member of the specified Windows user group; otherwise, .
+
+
+ Gets all Windows user claims from this principal.
+ A collection of all Windows user claims from this principal.
+
+
+
\ No newline at end of file
diff --git a/app/bin/Release/Ubiety.Dns.Core.dll b/app/bin/Release/Ubiety.Dns.Core.dll
new file mode 100644
index 0000000..b10ecf2
Binary files /dev/null and b/app/bin/Release/Ubiety.Dns.Core.dll differ
diff --git a/app/bin/Release/Zstandard.Net.dll b/app/bin/Release/Zstandard.Net.dll
new file mode 100644
index 0000000..83934d1
Binary files /dev/null and b/app/bin/Release/Zstandard.Net.dll differ
diff --git a/app/controller/AdminDAO.cs b/app/controller/AdminDAO.cs
new file mode 100644
index 0000000..8ebabe4
--- /dev/null
+++ b/app/controller/AdminDAO.cs
@@ -0,0 +1,33 @@
+using SIPP.model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace SIPP.controller
+{
+ class AdminDAO
+ {
+ Connection connection = new Connection();
+
+ public bool TambahData(Admin admin)
+ {
+ Boolean status = false;
+ try
+ {
+ connection.OpenConection();
+ connection.ExecuteQueries("INSERT INTO admin (nama, username, password) VALUES ('" + admin.Nama + "', '" + admin.Username + "','" + admin.Password + "')");
+ status = true;
+ MessageBox.Show("Tambah Data berhasil dilakukan. Silahkan login", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ connection.CloseConnection();
+ }
+ catch(Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ return status;
+ }
+ }
+}
diff --git a/app/controller/CekLogin.cs b/app/controller/CekLogin.cs
new file mode 100644
index 0000000..d070485
--- /dev/null
+++ b/app/controller/CekLogin.cs
@@ -0,0 +1,55 @@
+using MySql.Data.MySqlClient;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Cryptography;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace SIPP.controller
+{
+ class CekLogin
+ {
+ Connection connection = new Connection();
+
+ public bool cek_login(string username, string password)
+ {
+ try
+ {
+ connection.OpenConection();
+ MySqlDataReader reader = connection.DataReader("SELECT * FROM admin WHERE username='" + username + "' AND password='" + password + "'");
+ if (reader.Read())
+ {
+ connection.CloseConnection();
+ return true;
+ }
+ else
+ {
+ connection.CloseConnection();
+ return false;
+ }
+ }
+ catch(Exception e)
+ {
+ MessageBox.Show(e.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ return false;
+
+ }
+
+ public string HashMD5(string password)
+ {
+ MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
+ byte[] encrypt;
+ UTF8Encoding encoding = new UTF8Encoding();
+ encrypt = md5.ComputeHash(encoding.GetBytes(password));
+ StringBuilder builder = new StringBuilder();
+ for(int i = 0; i nama; set => nama = value; }
+ public string Username { get => username; set => username = value; }
+ public string Password { get => password; set => password = value; }
+ }
+}
diff --git a/app/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/app/obj/Debug/DesignTimeResolveAssemblyReferences.cache
index 033201a..c118203 100644
Binary files a/app/obj/Debug/DesignTimeResolveAssemblyReferences.cache and b/app/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/app/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/app/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
index d6e6d4d..afe19ef 100644
Binary files a/app/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/app/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/app/obj/Debug/SIPP.Properties.Resources.resources b/app/obj/Debug/SIPP.Properties.Resources.resources
index a853196..6b1a8ac 100644
Binary files a/app/obj/Debug/SIPP.Properties.Resources.resources and b/app/obj/Debug/SIPP.Properties.Resources.resources differ
diff --git a/app/obj/Debug/SIPP.SIPP.resources b/app/obj/Debug/SIPP.SIPP.resources
index 6c05a97..8ded75f 100644
Binary files a/app/obj/Debug/SIPP.SIPP.resources and b/app/obj/Debug/SIPP.SIPP.resources differ
diff --git a/app/obj/Debug/SIPP.csproj.CoreCompileInputs.cache b/app/obj/Debug/SIPP.csproj.CoreCompileInputs.cache
index 3d4a2e3..20744ed 100644
--- a/app/obj/Debug/SIPP.csproj.CoreCompileInputs.cache
+++ b/app/obj/Debug/SIPP.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-c2ba64dd3c280e98cdd8b4b90164fab36e739047
+94659da985185016b0874a157a08db9f157a1fea
diff --git a/app/obj/Debug/SIPP.csproj.FileListAbsolute.txt b/app/obj/Debug/SIPP.csproj.FileListAbsolute.txt
index ad08d56..5bae7e2 100644
--- a/app/obj/Debug/SIPP.csproj.FileListAbsolute.txt
+++ b/app/obj/Debug/SIPP.csproj.FileListAbsolute.txt
@@ -34,7 +34,6 @@ C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.exe
C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.pdb
C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.SIPP.resources
C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.view.usercontrols.Dashboard_User.resources
-C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.csprojAssemblyReference.cache
C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.view.usercontrols.Barang_User.resources
C:\Users\DELL\Documents\project\SIPP\bin\Debug\MySqlBackup.dll
C:\Users\DELL\Documents\project\SIPP\bin\Debug\Syroot.KnownFolders.dll
@@ -43,48 +42,52 @@ C:\Users\DELL\Documents\project\SIPP\bin\Debug\Syroot.KnownFolders.xml
C:\Users\DELL\Documents\project\SIPP\bin\Debug\System.Security.Principal.Windows.xml
C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.view.usercontrols.Cari_User.resources
C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.view.usercontrols.Laporan_User.resources
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\SIPP.exe.config
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\SIPP.exe
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\SIPP.pdb
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\BouncyCastle.Crypto.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\Google.Protobuf.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\Guna.UI2.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\K4os.Compression.LZ4.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\K4os.Compression.LZ4.Streams.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\K4os.Hash.xxHash.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\MySql.Data.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\MySqlBackup.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\Renci.SshNet.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\Syroot.KnownFolders.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\System.Buffers.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\System.Memory.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\System.Numerics.Vectors.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\System.Security.Principal.Windows.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\Ubiety.Dns.Core.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\Zstandard.Net.dll
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\Google.Protobuf.pdb
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\Google.Protobuf.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\K4os.Compression.LZ4.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\K4os.Compression.LZ4.Streams.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\K4os.Hash.xxHash.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\MySql.Data.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\Renci.SshNet.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\Syroot.KnownFolders.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\System.Buffers.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\System.Memory.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\System.Numerics.Vectors.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Debug\System.Security.Principal.Windows.xml
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.csprojAssemblyReference.cache
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.view.usercontrols.Barang_User.resources
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.view.usercontrols.Cari_User.resources
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.view.usercontrols.Dashboard_User.resources
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.view.usercontrols.Laporan_User.resources
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.SIPP.resources
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.Properties.Resources.resources
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.csproj.GenerateResource.cache
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.csproj.CoreCompileInputs.cache
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.csproj.CopyComplete
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.exe
-C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Debug\SIPP.pdb
+C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.view.winform.Login.resources
+C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.csprojAssemblyReference.cache
+C:\Users\DELL\Documents\project\SIPP\obj\Debug\SIPP.view.winform.Daftar.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\SIPP.exe.config
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\SIPP.exe
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\SIPP.pdb
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\BouncyCastle.Crypto.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\Google.Protobuf.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\Guna.UI2.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\K4os.Compression.LZ4.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\K4os.Compression.LZ4.Streams.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\K4os.Hash.xxHash.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\MySql.Data.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\MySqlBackup.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\Renci.SshNet.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\Syroot.KnownFolders.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\System.Buffers.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\System.Memory.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\System.Numerics.Vectors.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\System.Security.Principal.Windows.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\Ubiety.Dns.Core.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\Zstandard.Net.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\Google.Protobuf.pdb
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\Google.Protobuf.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\K4os.Compression.LZ4.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\K4os.Compression.LZ4.Streams.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\K4os.Hash.xxHash.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\MySql.Data.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\Renci.SshNet.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\Syroot.KnownFolders.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\System.Buffers.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\System.Memory.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\System.Numerics.Vectors.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Debug\System.Security.Principal.Windows.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.view.usercontrols.Barang_User.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.view.usercontrols.Cari_User.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.view.usercontrols.Dashboard_User.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.view.usercontrols.Laporan_User.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.view.winform.Daftar.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.SIPP.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.Properties.Resources.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.view.winform.Login.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.csproj.GenerateResource.cache
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.csproj.CoreCompileInputs.cache
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.csproj.CopyComplete
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.exe
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Debug\SIPP.pdb
diff --git a/app/obj/Debug/SIPP.csproj.GenerateResource.cache b/app/obj/Debug/SIPP.csproj.GenerateResource.cache
index 9ff1425..3ac309c 100644
Binary files a/app/obj/Debug/SIPP.csproj.GenerateResource.cache and b/app/obj/Debug/SIPP.csproj.GenerateResource.cache differ
diff --git a/app/obj/Debug/SIPP.exe b/app/obj/Debug/SIPP.exe
index 13c7e5f..a56f436 100644
Binary files a/app/obj/Debug/SIPP.exe and b/app/obj/Debug/SIPP.exe differ
diff --git a/app/obj/Debug/SIPP.pdb b/app/obj/Debug/SIPP.pdb
index 2e5a6fc..6cce072 100644
Binary files a/app/obj/Debug/SIPP.pdb and b/app/obj/Debug/SIPP.pdb differ
diff --git a/app/obj/Debug/SIPP.view.winform.Daftar.resources b/app/obj/Debug/SIPP.view.winform.Daftar.resources
new file mode 100644
index 0000000..8ded75f
Binary files /dev/null and b/app/obj/Debug/SIPP.view.winform.Daftar.resources differ
diff --git a/app/obj/Debug/SIPP.view.winform.Login.resources b/app/obj/Debug/SIPP.view.winform.Login.resources
new file mode 100644
index 0000000..8ded75f
Binary files /dev/null and b/app/obj/Debug/SIPP.view.winform.Login.resources differ
diff --git a/app/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/app/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
index e667c7b..b0f9425 100644
Binary files a/app/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll and b/app/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ
diff --git a/app/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/app/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs
new file mode 100644
index 0000000..3871b18
--- /dev/null
+++ b/app/obj/Release/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
diff --git a/app/obj/Release/DesignTimeResolveAssemblyReferences.cache b/app/obj/Release/DesignTimeResolveAssemblyReferences.cache
new file mode 100644
index 0000000..4ec6bd3
Binary files /dev/null and b/app/obj/Release/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/app/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/app/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..5909dac
Binary files /dev/null and b/app/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/app/obj/Release/SIPP.Properties.Resources.resources b/app/obj/Release/SIPP.Properties.Resources.resources
new file mode 100644
index 0000000..6b1a8ac
Binary files /dev/null and b/app/obj/Release/SIPP.Properties.Resources.resources differ
diff --git a/app/obj/Release/SIPP.SIPP.resources b/app/obj/Release/SIPP.SIPP.resources
new file mode 100644
index 0000000..8ded75f
Binary files /dev/null and b/app/obj/Release/SIPP.SIPP.resources differ
diff --git a/app/obj/Release/SIPP.csproj.CopyComplete b/app/obj/Release/SIPP.csproj.CopyComplete
new file mode 100644
index 0000000..e69de29
diff --git a/app/obj/Release/SIPP.csproj.CoreCompileInputs.cache b/app/obj/Release/SIPP.csproj.CoreCompileInputs.cache
new file mode 100644
index 0000000..5f4cfb6
--- /dev/null
+++ b/app/obj/Release/SIPP.csproj.CoreCompileInputs.cache
@@ -0,0 +1 @@
+29acd26c0a9702eb2cfd0af7c8ed1acb8cec39bb
diff --git a/app/obj/Release/SIPP.csproj.FileListAbsolute.txt b/app/obj/Release/SIPP.csproj.FileListAbsolute.txt
new file mode 100644
index 0000000..3b6bb03
--- /dev/null
+++ b/app/obj/Release/SIPP.csproj.FileListAbsolute.txt
@@ -0,0 +1,93 @@
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\SIPP.exe.config
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\SIPP.exe
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\SIPP.pdb
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\BouncyCastle.Crypto.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\Google.Protobuf.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\Guna.UI2.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\K4os.Compression.LZ4.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\K4os.Compression.LZ4.Streams.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\K4os.Hash.xxHash.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\MySql.Data.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\MySqlBackup.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\Renci.SshNet.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\Syroot.KnownFolders.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\System.Buffers.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\System.Memory.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\System.Numerics.Vectors.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\System.Runtime.CompilerServices.Unsafe.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\System.Security.Principal.Windows.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\Ubiety.Dns.Core.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\Zstandard.Net.dll
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\Google.Protobuf.pdb
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\Google.Protobuf.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\K4os.Compression.LZ4.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\K4os.Compression.LZ4.Streams.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\K4os.Hash.xxHash.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\MySql.Data.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\Renci.SshNet.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\Syroot.KnownFolders.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\System.Buffers.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\System.Memory.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\System.Numerics.Vectors.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\System.Runtime.CompilerServices.Unsafe.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\bin\Release\System.Security.Principal.Windows.xml
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.view.usercontrols.Barang_User.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.view.usercontrols.Cari_User.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.view.usercontrols.Dashboard_User.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.view.usercontrols.Laporan_User.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.view.winform.Daftar.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.SIPP.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.Properties.Resources.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.view.winform.Login.resources
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.csproj.GenerateResource.cache
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.csproj.CoreCompileInputs.cache
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.csproj.CopyComplete
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.exe
+C:\Users\DELL\Documents\project\pengeluaran\SIPP\obj\Release\SIPP.pdb
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\SIPP.exe.config
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\SIPP.exe
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\SIPP.pdb
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\BouncyCastle.Crypto.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\Google.Protobuf.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\Guna.UI2.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\K4os.Compression.LZ4.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\K4os.Compression.LZ4.Streams.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\K4os.Hash.xxHash.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\MySql.Data.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\MySqlBackup.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\Renci.SshNet.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\Syroot.KnownFolders.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\System.Buffers.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\System.Memory.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\System.Numerics.Vectors.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\System.Runtime.CompilerServices.Unsafe.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\System.Security.Principal.Windows.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\Ubiety.Dns.Core.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\Zstandard.Net.dll
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\Google.Protobuf.pdb
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\Google.Protobuf.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\K4os.Compression.LZ4.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\K4os.Compression.LZ4.Streams.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\K4os.Hash.xxHash.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\MySql.Data.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\Renci.SshNet.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\Syroot.KnownFolders.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\System.Buffers.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\System.Memory.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\System.Numerics.Vectors.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\System.Runtime.CompilerServices.Unsafe.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\bin\Release\System.Security.Principal.Windows.xml
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.csprojAssemblyReference.cache
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.view.usercontrols.Barang_User.resources
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.view.usercontrols.Cari_User.resources
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.view.usercontrols.Dashboard_User.resources
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.view.usercontrols.Laporan_User.resources
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.view.winform.Daftar.resources
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.SIPP.resources
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.Properties.Resources.resources
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.view.winform.Login.resources
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.csproj.GenerateResource.cache
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.csproj.CoreCompileInputs.cache
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.csproj.CopyComplete
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.exe
+C:\Users\DELL\Documents\GitHub\SIPP\app\obj\Release\SIPP.pdb
diff --git a/app/obj/Release/SIPP.csproj.GenerateResource.cache b/app/obj/Release/SIPP.csproj.GenerateResource.cache
new file mode 100644
index 0000000..3ac309c
Binary files /dev/null and b/app/obj/Release/SIPP.csproj.GenerateResource.cache differ
diff --git a/app/obj/Release/SIPP.csprojAssemblyReference.cache b/app/obj/Release/SIPP.csprojAssemblyReference.cache
new file mode 100644
index 0000000..cf1c198
Binary files /dev/null and b/app/obj/Release/SIPP.csprojAssemblyReference.cache differ
diff --git a/app/obj/Release/SIPP.exe b/app/obj/Release/SIPP.exe
new file mode 100644
index 0000000..16a5b3e
Binary files /dev/null and b/app/obj/Release/SIPP.exe differ
diff --git a/app/obj/Release/SIPP.pdb b/app/obj/Release/SIPP.pdb
new file mode 100644
index 0000000..349e5bf
Binary files /dev/null and b/app/obj/Release/SIPP.pdb differ
diff --git a/app/obj/Release/SIPP.view.usercontrols.Barang_User.resources b/app/obj/Release/SIPP.view.usercontrols.Barang_User.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/app/obj/Release/SIPP.view.usercontrols.Barang_User.resources differ
diff --git a/app/obj/Release/SIPP.view.usercontrols.Cari_User.resources b/app/obj/Release/SIPP.view.usercontrols.Cari_User.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/app/obj/Release/SIPP.view.usercontrols.Cari_User.resources differ
diff --git a/app/obj/Release/SIPP.view.usercontrols.Dashboard_User.resources b/app/obj/Release/SIPP.view.usercontrols.Dashboard_User.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/app/obj/Release/SIPP.view.usercontrols.Dashboard_User.resources differ
diff --git a/app/obj/Release/SIPP.view.usercontrols.Laporan_User.resources b/app/obj/Release/SIPP.view.usercontrols.Laporan_User.resources
new file mode 100644
index 0000000..6c05a97
Binary files /dev/null and b/app/obj/Release/SIPP.view.usercontrols.Laporan_User.resources differ
diff --git a/app/obj/Release/SIPP.view.winform.Daftar.resources b/app/obj/Release/SIPP.view.winform.Daftar.resources
new file mode 100644
index 0000000..8ded75f
Binary files /dev/null and b/app/obj/Release/SIPP.view.winform.Daftar.resources differ
diff --git a/app/obj/Release/SIPP.view.winform.Login.resources b/app/obj/Release/SIPP.view.winform.Login.resources
new file mode 100644
index 0000000..8ded75f
Binary files /dev/null and b/app/obj/Release/SIPP.view.winform.Login.resources differ
diff --git a/app/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/app/obj/Release/TempPE/Properties.Resources.Designer.cs.dll
new file mode 100644
index 0000000..c29f22b
Binary files /dev/null and b/app/obj/Release/TempPE/Properties.Resources.Designer.cs.dll differ
diff --git a/app/vendor/Ganti.cs b/app/vendor/Ganti.cs
new file mode 100644
index 0000000..94b7601
--- /dev/null
+++ b/app/vendor/Ganti.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace SIPP.vendor
+{
+ class Ganti
+ {
+
+ }
+}
diff --git a/app/view/usercontrols/Barang_User.Designer.cs b/app/view/usercontrols/Barang_User.Designer.cs
index c6a8bcf..54d4a54 100644
--- a/app/view/usercontrols/Barang_User.Designer.cs
+++ b/app/view/usercontrols/Barang_User.Designer.cs
@@ -38,12 +38,10 @@ private void InitializeComponent()
this.DataTable = new Guna.UI2.WinForms.Guna2DataGridView();
this.Table_header = new Guna.UI2.WinForms.Guna2Panel();
this.label7 = new System.Windows.Forms.Label();
- this.NamaBarang = new Guna.UI2.WinForms.Guna2TextBox();
this.Form_header = new Guna.UI2.WinForms.Guna2Panel();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
- this.HargaBarang = new Guna.UI2.WinForms.Guna2TextBox();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.Tombol_Simpan = new Guna.UI2.WinForms.Guna2Button();
@@ -52,6 +50,8 @@ private void InitializeComponent()
this.TanggalBeli = new Guna.UI2.WinForms.Guna2DateTimePicker();
this.Form_panel = new Guna.UI2.WinForms.Guna2Panel();
this.JumlahBarang = new Guna.UI2.WinForms.Guna2NumericUpDown();
+ this.HargaBarang = new Guna.UI2.WinForms.Guna2TextBox();
+ this.NamaBarang = new Guna.UI2.WinForms.Guna2TextBox();
this.label1 = new System.Windows.Forms.Label();
this.Table_Panel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.DataTable)).BeginInit();
@@ -193,30 +193,6 @@ private void InitializeComponent()
this.label7.TabIndex = 4;
this.label7.Text = "Table Data pengeluaran";
//
- // NamaBarang
- //
- this.NamaBarang.Animated = true;
- this.NamaBarang.Cursor = System.Windows.Forms.Cursors.IBeam;
- this.NamaBarang.DefaultText = "";
- this.NamaBarang.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
- this.NamaBarang.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
- this.NamaBarang.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
- this.NamaBarang.DisabledState.Parent = this.NamaBarang;
- this.NamaBarang.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
- this.NamaBarang.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(94)))), ((int)(((byte)(148)))), ((int)(((byte)(255)))));
- this.NamaBarang.FocusedState.Parent = this.NamaBarang;
- this.NamaBarang.Font = new System.Drawing.Font("Segoe UI", 9F);
- this.NamaBarang.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(94)))), ((int)(((byte)(148)))), ((int)(((byte)(255)))));
- this.NamaBarang.HoverState.Parent = this.NamaBarang;
- this.NamaBarang.Location = new System.Drawing.Point(12, 84);
- this.NamaBarang.Name = "NamaBarang";
- this.NamaBarang.PasswordChar = '\0';
- this.NamaBarang.PlaceholderText = "";
- this.NamaBarang.SelectedText = "";
- this.NamaBarang.ShadowDecoration.Parent = this.NamaBarang;
- this.NamaBarang.Size = new System.Drawing.Size(390, 40);
- this.NamaBarang.TabIndex = 0;
- //
// Form_header
//
this.Form_header.BackColor = System.Drawing.Color.Transparent;
@@ -265,30 +241,6 @@ private void InitializeComponent()
this.label4.TabIndex = 6;
this.label4.Text = "Jumlah";
//
- // HargaBarang
- //
- this.HargaBarang.Animated = true;
- this.HargaBarang.Cursor = System.Windows.Forms.Cursors.IBeam;
- this.HargaBarang.DefaultText = "";
- this.HargaBarang.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
- this.HargaBarang.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
- this.HargaBarang.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
- this.HargaBarang.DisabledState.Parent = this.HargaBarang;
- this.HargaBarang.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
- this.HargaBarang.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(94)))), ((int)(((byte)(148)))), ((int)(((byte)(255)))));
- this.HargaBarang.FocusedState.Parent = this.HargaBarang;
- this.HargaBarang.Font = new System.Drawing.Font("Segoe UI", 9F);
- this.HargaBarang.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(94)))), ((int)(((byte)(148)))), ((int)(((byte)(255)))));
- this.HargaBarang.HoverState.Parent = this.HargaBarang;
- this.HargaBarang.Location = new System.Drawing.Point(12, 258);
- this.HargaBarang.Name = "HargaBarang";
- this.HargaBarang.PasswordChar = '\0';
- this.HargaBarang.PlaceholderText = "";
- this.HargaBarang.SelectedText = "";
- this.HargaBarang.ShadowDecoration.Parent = this.HargaBarang;
- this.HargaBarang.Size = new System.Drawing.Size(390, 40);
- this.HargaBarang.TabIndex = 7;
- //
// label5
//
this.label5.AutoSize = true;
@@ -315,13 +267,15 @@ private void InitializeComponent()
//
// Tombol_Simpan
//
+ this.Tombol_Simpan.Animated = true;
+ this.Tombol_Simpan.BorderRadius = 3;
this.Tombol_Simpan.CheckedState.Parent = this.Tombol_Simpan;
this.Tombol_Simpan.CustomImages.Parent = this.Tombol_Simpan;
this.Tombol_Simpan.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
this.Tombol_Simpan.Font = new System.Drawing.Font("Segoe UI", 9F);
this.Tombol_Simpan.ForeColor = System.Drawing.Color.White;
this.Tombol_Simpan.HoverState.Parent = this.Tombol_Simpan;
- this.Tombol_Simpan.Location = new System.Drawing.Point(12, 395);
+ this.Tombol_Simpan.Location = new System.Drawing.Point(12, 407);
this.Tombol_Simpan.Name = "Tombol_Simpan";
this.Tombol_Simpan.ShadowDecoration.Parent = this.Tombol_Simpan;
this.Tombol_Simpan.Size = new System.Drawing.Size(390, 40);
@@ -331,13 +285,15 @@ private void InitializeComponent()
//
// Tombol_Ubah
//
+ this.Tombol_Ubah.Animated = true;
+ this.Tombol_Ubah.BorderRadius = 3;
this.Tombol_Ubah.CheckedState.Parent = this.Tombol_Ubah;
this.Tombol_Ubah.CustomImages.Parent = this.Tombol_Ubah;
this.Tombol_Ubah.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(87)))), ((int)(((byte)(101)))), ((int)(((byte)(166)))));
this.Tombol_Ubah.Font = new System.Drawing.Font("Segoe UI", 9F);
this.Tombol_Ubah.ForeColor = System.Drawing.Color.White;
this.Tombol_Ubah.HoverState.Parent = this.Tombol_Ubah;
- this.Tombol_Ubah.Location = new System.Drawing.Point(12, 441);
+ this.Tombol_Ubah.Location = new System.Drawing.Point(12, 453);
this.Tombol_Ubah.Name = "Tombol_Ubah";
this.Tombol_Ubah.ShadowDecoration.Parent = this.Tombol_Ubah;
this.Tombol_Ubah.Size = new System.Drawing.Size(390, 40);
@@ -347,13 +303,15 @@ private void InitializeComponent()
//
// Tombol_Hapus
//
+ this.Tombol_Hapus.Animated = true;
+ this.Tombol_Hapus.BorderRadius = 3;
this.Tombol_Hapus.CheckedState.Parent = this.Tombol_Hapus;
this.Tombol_Hapus.CustomImages.Parent = this.Tombol_Hapus;
this.Tombol_Hapus.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(157)))), ((int)(((byte)(182)))));
this.Tombol_Hapus.Font = new System.Drawing.Font("Segoe UI", 9F);
this.Tombol_Hapus.ForeColor = System.Drawing.Color.White;
this.Tombol_Hapus.HoverState.Parent = this.Tombol_Hapus;
- this.Tombol_Hapus.Location = new System.Drawing.Point(12, 487);
+ this.Tombol_Hapus.Location = new System.Drawing.Point(12, 499);
this.Tombol_Hapus.Name = "Tombol_Hapus";
this.Tombol_Hapus.ShadowDecoration.Parent = this.Tombol_Hapus;
this.Tombol_Hapus.Size = new System.Drawing.Size(390, 40);
@@ -365,6 +323,7 @@ private void InitializeComponent()
//
this.TanggalBeli.Animated = true;
this.TanggalBeli.BorderColor = System.Drawing.Color.Silver;
+ this.TanggalBeli.BorderRadius = 3;
this.TanggalBeli.BorderThickness = 1;
this.TanggalBeli.CheckedState.Parent = this.TanggalBeli;
this.TanggalBeli.FillColor = System.Drawing.Color.White;
@@ -382,6 +341,8 @@ private void InitializeComponent()
//
// Form_panel
//
+ this.Form_panel.BackColor = System.Drawing.Color.Transparent;
+ this.Form_panel.BorderRadius = 3;
this.Form_panel.Controls.Add(this.JumlahBarang);
this.Form_panel.Controls.Add(this.TanggalBeli);
this.Form_panel.Controls.Add(this.Tombol_Hapus);
@@ -400,12 +361,13 @@ private void InitializeComponent()
this.Form_panel.ShadowDecoration.Depth = 2;
this.Form_panel.ShadowDecoration.Enabled = true;
this.Form_panel.ShadowDecoration.Parent = this.Form_panel;
- this.Form_panel.Size = new System.Drawing.Size(412, 539);
+ this.Form_panel.Size = new System.Drawing.Size(412, 553);
this.Form_panel.TabIndex = 1;
//
// JumlahBarang
//
this.JumlahBarang.BackColor = System.Drawing.Color.Transparent;
+ this.JumlahBarang.BorderRadius = 3;
this.JumlahBarang.Cursor = System.Windows.Forms.Cursors.IBeam;
this.JumlahBarang.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
this.JumlahBarang.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
@@ -422,6 +384,62 @@ private void InitializeComponent()
this.JumlahBarang.ShadowDecoration.Parent = this.JumlahBarang;
this.JumlahBarang.Size = new System.Drawing.Size(390, 40);
this.JumlahBarang.TabIndex = 3;
+ this.JumlahBarang.UpDownButtonFillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.JumlahBarang.UpDownButtonForeColor = System.Drawing.Color.White;
+ //
+ // HargaBarang
+ //
+ this.HargaBarang.Animated = true;
+ this.HargaBarang.BorderRadius = 3;
+ this.HargaBarang.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.HargaBarang.DefaultText = "";
+ this.HargaBarang.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
+ this.HargaBarang.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
+ this.HargaBarang.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.HargaBarang.DisabledState.Parent = this.HargaBarang;
+ this.HargaBarang.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.HargaBarang.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.HargaBarang.FocusedState.Parent = this.HargaBarang;
+ this.HargaBarang.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.HargaBarang.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.HargaBarang.HoverState.Parent = this.HargaBarang;
+ this.HargaBarang.IconLeft = global::SIPP.Properties.Resources.icons8_pricing_100px;
+ this.HargaBarang.IconLeftSize = new System.Drawing.Size(25, 25);
+ this.HargaBarang.Location = new System.Drawing.Point(12, 258);
+ this.HargaBarang.Name = "HargaBarang";
+ this.HargaBarang.PasswordChar = '\0';
+ this.HargaBarang.PlaceholderText = "1000";
+ this.HargaBarang.SelectedText = "";
+ this.HargaBarang.ShadowDecoration.Parent = this.HargaBarang;
+ this.HargaBarang.Size = new System.Drawing.Size(390, 40);
+ this.HargaBarang.TabIndex = 7;
+ //
+ // NamaBarang
+ //
+ this.NamaBarang.Animated = true;
+ this.NamaBarang.BorderRadius = 3;
+ this.NamaBarang.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.NamaBarang.DefaultText = "";
+ this.NamaBarang.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
+ this.NamaBarang.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
+ this.NamaBarang.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.NamaBarang.DisabledState.Parent = this.NamaBarang;
+ this.NamaBarang.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.NamaBarang.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.NamaBarang.FocusedState.Parent = this.NamaBarang;
+ this.NamaBarang.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.NamaBarang.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.NamaBarang.HoverState.Parent = this.NamaBarang;
+ this.NamaBarang.IconLeft = global::SIPP.Properties.Resources.icons8_package_100px;
+ this.NamaBarang.IconLeftSize = new System.Drawing.Size(25, 25);
+ this.NamaBarang.Location = new System.Drawing.Point(12, 84);
+ this.NamaBarang.Name = "NamaBarang";
+ this.NamaBarang.PasswordChar = '\0';
+ this.NamaBarang.PlaceholderText = "Mie ayam";
+ this.NamaBarang.SelectedText = "";
+ this.NamaBarang.ShadowDecoration.Parent = this.NamaBarang;
+ this.NamaBarang.Size = new System.Drawing.Size(390, 40);
+ this.NamaBarang.TabIndex = 0;
//
// label1
//
diff --git a/app/view/usercontrols/Barang_User.cs b/app/view/usercontrols/Barang_User.cs
index 1ffdcf6..9bfe8b8 100644
--- a/app/view/usercontrols/Barang_User.cs
+++ b/app/view/usercontrols/Barang_User.cs
@@ -75,15 +75,17 @@ private void Barang_User_Load(object sender, EventArgs e)
DataTable.Columns[4].HeaderText = "Tanggal Pembelian";
DataTable.Columns[4].DefaultCellStyle.Format = "dddd, d MMMM yyyy";
- //Datepicker
+ //Utility
TanggalBeli.Value = DateTime.Today;
+ Tombol_Ubah.Enabled = false;
+ Tombol_Hapus.Enabled = false;
}
private void Tombol_Simpan_Click(object sender, EventArgs e)
{
if(NamaBarang.Text == "" || JumlahBarang.Value == 0 || HargaBarang.Text == "")
{
- MessageBox.Show("Form tidak boleh kosong!", "Info");
+ MessageBox.Show("Form tidak boleh kosong!", "Informasi",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else
{
@@ -107,7 +109,7 @@ private void Tombol_Ubah_Click(object sender, EventArgs e)
{
if (NamaBarang.Text == "" || JumlahBarang.Value == 0 || HargaBarang.Text == "")
{
- MessageBox.Show("Form tidak boleh kosong!", "Info");
+ MessageBox.Show("Form tidak boleh kosong!", "Infoormasi", MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else
{
@@ -130,7 +132,7 @@ private void Tombol_Ubah_Click(object sender, EventArgs e)
private void Tombol_Hapus_Click(object sender, EventArgs e)
{
- DialogResult pesan = MessageBox.Show("Yakin mau hapus data ini?", "Info", MessageBoxButtons.YesNo);
+ DialogResult pesan = MessageBox.Show("Yakin mau hapus data ini?", "Info", MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(pesan == DialogResult.Yes)
{
pengeluaran.HapusData(id);
@@ -141,7 +143,10 @@ private void Tombol_Hapus_Click(object sender, EventArgs e)
private void DataTable_CellClick(object sender, DataGridViewCellEventArgs e)
{
- if(e.RowIndex >= 0)
+ Tombol_Ubah.Enabled = true;
+ Tombol_Hapus.Enabled = true;
+
+ if (e.RowIndex >= 0)
{
id = DataTable.Rows[e.RowIndex].Cells[0].Value.ToString();
NamaBarang.Text = DataTable.Rows[e.RowIndex].Cells[1].Value.ToString();
diff --git a/app/view/usercontrols/Cari_User.Designer.cs b/app/view/usercontrols/Cari_User.Designer.cs
index 47f898d..b090a34 100644
--- a/app/view/usercontrols/Cari_User.Designer.cs
+++ b/app/view/usercontrols/Cari_User.Designer.cs
@@ -29,17 +29,17 @@ protected override void Dispose(bool disposing)
///
private void InitializeComponent()
{
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
this.TanggalBeli = new Guna.UI2.WinForms.Guna2DateTimePicker();
this.Tombol_Cari = new Guna.UI2.WinForms.Guna2Button();
this.label6 = new System.Windows.Forms.Label();
this.Form_panel = new Guna.UI2.WinForms.Guna2Panel();
+ this.Tombol_Reset = new Guna.UI2.WinForms.Guna2Button();
this.label3 = new System.Windows.Forms.Label();
this.Form_header = new Guna.UI2.WinForms.Guna2Panel();
this.label2 = new System.Windows.Forms.Label();
- this.NamaBarang = new Guna.UI2.WinForms.Guna2TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.Vertical = new Guna.UI2.WinForms.Guna2VScrollBar();
@@ -56,6 +56,7 @@ private void InitializeComponent()
this.guna2Panel5 = new Guna.UI2.WinForms.Guna2Panel();
this.LabelBarang = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
+ this.NamaBarang = new Guna.UI2.WinForms.Guna2TextBox();
this.Form_panel.SuspendLayout();
this.Form_header.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.DataTable)).BeginInit();
@@ -70,6 +71,7 @@ private void InitializeComponent()
//
this.TanggalBeli.Animated = true;
this.TanggalBeli.BorderColor = System.Drawing.Color.Silver;
+ this.TanggalBeli.BorderRadius = 3;
this.TanggalBeli.BorderThickness = 1;
this.TanggalBeli.CheckedState.Parent = this.TanggalBeli;
this.TanggalBeli.FillColor = System.Drawing.Color.White;
@@ -87,6 +89,8 @@ private void InitializeComponent()
//
// Tombol_Cari
//
+ this.Tombol_Cari.Animated = true;
+ this.Tombol_Cari.BorderRadius = 3;
this.Tombol_Cari.CheckedState.Parent = this.Tombol_Cari;
this.Tombol_Cari.CustomImages.Parent = this.Tombol_Cari;
this.Tombol_Cari.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
@@ -115,6 +119,9 @@ private void InitializeComponent()
//
// Form_panel
//
+ this.Form_panel.BackColor = System.Drawing.Color.Transparent;
+ this.Form_panel.BorderRadius = 3;
+ this.Form_panel.Controls.Add(this.Tombol_Reset);
this.Form_panel.Controls.Add(this.TanggalBeli);
this.Form_panel.Controls.Add(this.Tombol_Cari);
this.Form_panel.Controls.Add(this.label6);
@@ -127,9 +134,27 @@ private void InitializeComponent()
this.Form_panel.ShadowDecoration.Depth = 2;
this.Form_panel.ShadowDecoration.Enabled = true;
this.Form_panel.ShadowDecoration.Parent = this.Form_panel;
- this.Form_panel.Size = new System.Drawing.Size(412, 262);
+ this.Form_panel.Size = new System.Drawing.Size(412, 308);
this.Form_panel.TabIndex = 4;
//
+ // Tombol_Reset
+ //
+ this.Tombol_Reset.Animated = true;
+ this.Tombol_Reset.BorderRadius = 3;
+ this.Tombol_Reset.CheckedState.Parent = this.Tombol_Reset;
+ this.Tombol_Reset.CustomImages.Parent = this.Tombol_Reset;
+ this.Tombol_Reset.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(87)))), ((int)(((byte)(101)))), ((int)(((byte)(166)))));
+ this.Tombol_Reset.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.Tombol_Reset.ForeColor = System.Drawing.Color.White;
+ this.Tombol_Reset.HoverState.Parent = this.Tombol_Reset;
+ this.Tombol_Reset.Location = new System.Drawing.Point(12, 254);
+ this.Tombol_Reset.Name = "Tombol_Reset";
+ this.Tombol_Reset.ShadowDecoration.Parent = this.Tombol_Reset;
+ this.Tombol_Reset.Size = new System.Drawing.Size(390, 40);
+ this.Tombol_Reset.TabIndex = 18;
+ this.Tombol_Reset.Text = "Reset";
+ this.Tombol_Reset.Click += new System.EventHandler(this.Tombol_Reset_Click);
+ //
// label3
//
this.label3.AutoSize = true;
@@ -166,30 +191,6 @@ private void InitializeComponent()
this.label2.TabIndex = 3;
this.label2.Text = "Form cari pengeluaran";
//
- // NamaBarang
- //
- this.NamaBarang.Animated = true;
- this.NamaBarang.Cursor = System.Windows.Forms.Cursors.IBeam;
- this.NamaBarang.DefaultText = "";
- this.NamaBarang.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
- this.NamaBarang.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
- this.NamaBarang.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
- this.NamaBarang.DisabledState.Parent = this.NamaBarang;
- this.NamaBarang.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
- this.NamaBarang.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(94)))), ((int)(((byte)(148)))), ((int)(((byte)(255)))));
- this.NamaBarang.FocusedState.Parent = this.NamaBarang;
- this.NamaBarang.Font = new System.Drawing.Font("Segoe UI", 9F);
- this.NamaBarang.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(94)))), ((int)(((byte)(148)))), ((int)(((byte)(255)))));
- this.NamaBarang.HoverState.Parent = this.NamaBarang;
- this.NamaBarang.Location = new System.Drawing.Point(12, 84);
- this.NamaBarang.Name = "NamaBarang";
- this.NamaBarang.PasswordChar = '\0';
- this.NamaBarang.PlaceholderText = "";
- this.NamaBarang.SelectedText = "";
- this.NamaBarang.ShadowDecoration.Parent = this.NamaBarang;
- this.NamaBarang.Size = new System.Drawing.Size(390, 40);
- this.NamaBarang.TabIndex = 0;
- //
// label1
//
this.label1.AutoSize = true;
@@ -248,30 +249,30 @@ private void InitializeComponent()
// DataTable
//
this.DataTable.AllowUserToOrderColumns = true;
- dataGridViewCellStyle1.BackColor = System.Drawing.Color.White;
- this.DataTable.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
+ dataGridViewCellStyle4.BackColor = System.Drawing.Color.White;
+ this.DataTable.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle4;
this.DataTable.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.DataTable.BackgroundColor = System.Drawing.Color.White;
this.DataTable.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.DataTable.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.SingleHorizontal;
this.DataTable.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
- dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
- dataGridViewCellStyle2.BackColor = System.Drawing.Color.White;
- dataGridViewCellStyle2.Font = new System.Drawing.Font("Segoe UI", 10.5F);
- dataGridViewCellStyle2.ForeColor = System.Drawing.Color.Black;
- dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
- dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
- dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
- this.DataTable.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
+ dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle5.BackColor = System.Drawing.Color.White;
+ dataGridViewCellStyle5.Font = new System.Drawing.Font("Segoe UI", 10.5F);
+ dataGridViewCellStyle5.ForeColor = System.Drawing.Color.Black;
+ dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.DataTable.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5;
this.DataTable.ColumnHeadersHeight = 4;
- dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
- dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(248)))), ((int)(((byte)(249)))));
- dataGridViewCellStyle3.Font = new System.Drawing.Font("Segoe UI", 10.5F);
- dataGridViewCellStyle3.ForeColor = System.Drawing.Color.Black;
- dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(241)))), ((int)(((byte)(243)))));
- dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.Black;
- dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
- this.DataTable.DefaultCellStyle = dataGridViewCellStyle3;
+ dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(248)))), ((int)(((byte)(249)))));
+ dataGridViewCellStyle6.Font = new System.Drawing.Font("Segoe UI", 10.5F);
+ dataGridViewCellStyle6.ForeColor = System.Drawing.Color.Black;
+ dataGridViewCellStyle6.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(241)))), ((int)(((byte)(243)))));
+ dataGridViewCellStyle6.SelectionForeColor = System.Drawing.Color.Black;
+ dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
+ this.DataTable.DefaultCellStyle = dataGridViewCellStyle6;
this.DataTable.Dock = System.Windows.Forms.DockStyle.Fill;
this.DataTable.EnableHeadersVisualStyles = false;
this.DataTable.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(248)))), ((int)(((byte)(249)))));
@@ -337,6 +338,7 @@ private void InitializeComponent()
this.guna2Panel7.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.guna2Panel7.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel7.BorderRadius = 3;
this.guna2Panel7.Controls.Add(this.LabelHarga);
this.guna2Panel7.Controls.Add(this.label10);
this.guna2Panel7.FillColor = System.Drawing.Color.White;
@@ -374,6 +376,7 @@ private void InitializeComponent()
this.guna2Panel6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.guna2Panel6.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel6.BorderRadius = 3;
this.guna2Panel6.Controls.Add(this.LabelJumlah);
this.guna2Panel6.Controls.Add(this.label8);
this.guna2Panel6.FillColor = System.Drawing.Color.White;
@@ -411,6 +414,7 @@ private void InitializeComponent()
this.guna2Panel5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.guna2Panel5.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel5.BorderRadius = 3;
this.guna2Panel5.Controls.Add(this.LabelBarang);
this.guna2Panel5.Controls.Add(this.label4);
this.guna2Panel5.FillColor = System.Drawing.Color.White;
@@ -443,6 +447,33 @@ private void InitializeComponent()
this.label4.TabIndex = 6;
this.label4.Text = "Pengeluaran yang dicari";
//
+ // NamaBarang
+ //
+ this.NamaBarang.Animated = true;
+ this.NamaBarang.BorderRadius = 3;
+ this.NamaBarang.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.NamaBarang.DefaultText = "";
+ this.NamaBarang.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
+ this.NamaBarang.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
+ this.NamaBarang.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.NamaBarang.DisabledState.Parent = this.NamaBarang;
+ this.NamaBarang.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.NamaBarang.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.NamaBarang.FocusedState.Parent = this.NamaBarang;
+ this.NamaBarang.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.NamaBarang.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.NamaBarang.HoverState.Parent = this.NamaBarang;
+ this.NamaBarang.IconLeft = global::SIPP.Properties.Resources.icons8_package_100px;
+ this.NamaBarang.IconLeftSize = new System.Drawing.Size(25, 25);
+ this.NamaBarang.Location = new System.Drawing.Point(12, 84);
+ this.NamaBarang.Name = "NamaBarang";
+ this.NamaBarang.PasswordChar = '\0';
+ this.NamaBarang.PlaceholderText = "Mie ayam";
+ this.NamaBarang.SelectedText = "";
+ this.NamaBarang.ShadowDecoration.Parent = this.NamaBarang;
+ this.NamaBarang.Size = new System.Drawing.Size(390, 40);
+ this.NamaBarang.TabIndex = 0;
+ //
// Cari_User
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
@@ -501,5 +532,6 @@ private void InitializeComponent()
private Guna.UI2.WinForms.Guna2Panel guna2Panel5;
public System.Windows.Forms.Label LabelBarang;
private System.Windows.Forms.Label label4;
+ private Guna.UI2.WinForms.Guna2Button Tombol_Reset;
}
}
diff --git a/app/view/usercontrols/Cari_User.cs b/app/view/usercontrols/Cari_User.cs
index e252728..0c50407 100644
--- a/app/view/usercontrols/Cari_User.cs
+++ b/app/view/usercontrols/Cari_User.cs
@@ -50,6 +50,7 @@ private void Cari_User_Load(object sender, EventArgs e)
{
//Datepicker
TanggalBeli.Value = DateTime.Today;
+ Tombol_Reset.Enabled = false;
}
private void Tombol_Cari_Click(object sender, EventArgs e)
@@ -60,12 +61,15 @@ private void Tombol_Cari_Click(object sender, EventArgs e)
if (NamaBarang.Text == "")
{
- MessageBox.Show("Nama Barang tidak boleh kosong!", "Perhatian");
+ MessageBox.Show("Nama Barang tidak boleh kosong!", "Informasi", MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
else
{
try
{
+ //BUTTON
+ Tombol_Reset.Enabled = true;
+
//SCROLLBAR
ScrollV = new Guna.UI2.WinForms.Helpers.DataGridViewScrollHelper(DataTable, Vertical, true);
ScrollH = new Guna.UI2.WinForms.Helpers.DataGridViewScrollHelper(DataTable, Horizontal, true);
@@ -103,12 +107,24 @@ private void Tombol_Cari_Click(object sender, EventArgs e)
}
catch (Exception ex)
{
- LabelHarga.Text = "-";
- LabelJumlah.Text = "-";
- LabelBarang.Text = "-";
- MessageBox.Show(ex.Message, "Informasi");
+ MessageBox.Show(ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
+
+ private void Tombol_Reset_Click(object sender, EventArgs e)
+ {
+ //TABLE
+ DataTable.DataSource = null;
+
+ //TEXTBOX
+ LabelHarga.Text = "-";
+ LabelBarang.Text = "-";
+ LabelJumlah.Text = "-";
+ NamaBarang.Text = "";
+
+ //BUTTON
+ Tombol_Reset.Enabled = false;
+ }
}
}
diff --git a/app/view/usercontrols/Dashboard_User.Designer.cs b/app/view/usercontrols/Dashboard_User.Designer.cs
index 1f88fd9..4879176 100644
--- a/app/view/usercontrols/Dashboard_User.Designer.cs
+++ b/app/view/usercontrols/Dashboard_User.Designer.cs
@@ -29,9 +29,9 @@ protected override void Dispose(bool disposing)
///
private void InitializeComponent()
{
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
this.guna2Panel1 = new Guna.UI2.WinForms.Guna2Panel();
this.label2 = new System.Windows.Forms.Label();
this.LabelHariIni = new System.Windows.Forms.Label();
@@ -77,6 +77,7 @@ private void InitializeComponent()
// guna2Panel1
//
this.guna2Panel1.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel1.BorderRadius = 3;
this.guna2Panel1.Controls.Add(this.label2);
this.guna2Panel1.Controls.Add(this.LabelHariIni);
this.guna2Panel1.Controls.Add(this.guna2PictureBox1);
@@ -134,6 +135,7 @@ private void InitializeComponent()
// guna2Panel2
//
this.guna2Panel2.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel2.BorderRadius = 3;
this.guna2Panel2.Controls.Add(this.label3);
this.guna2Panel2.Controls.Add(this.LabelBulanIni);
this.guna2Panel2.Controls.Add(this.guna2PictureBox2);
@@ -180,6 +182,7 @@ private void InitializeComponent()
// guna2Panel3
//
this.guna2Panel3.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel3.BorderRadius = 3;
this.guna2Panel3.Controls.Add(this.label4);
this.guna2Panel3.Controls.Add(this.LabelTahunIni);
this.guna2Panel3.Controls.Add(this.guna2PictureBox3);
@@ -226,6 +229,7 @@ private void InitializeComponent()
// guna2Panel4
//
this.guna2Panel4.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel4.BorderRadius = 3;
this.guna2Panel4.Controls.Add(this.label5);
this.guna2Panel4.Controls.Add(this.PengeluaranRendah);
this.guna2Panel4.Controls.Add(this.guna2PictureBox4);
@@ -272,6 +276,7 @@ private void InitializeComponent()
// guna2Panel5
//
this.guna2Panel5.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel5.BorderRadius = 3;
this.guna2Panel5.Controls.Add(this.label6);
this.guna2Panel5.Controls.Add(this.PengeluaranTinggi);
this.guna2Panel5.Controls.Add(this.guna2PictureBox5);
@@ -317,6 +322,8 @@ private void InitializeComponent()
//
// Table_Panel
//
+ this.Table_Panel.BackColor = System.Drawing.Color.Transparent;
+ this.Table_Panel.BorderRadius = 3;
this.Table_Panel.Controls.Add(this.Vertical);
this.Table_Panel.Controls.Add(this.Horizontal);
this.Table_Panel.Controls.Add(this.DashboardTable);
@@ -364,30 +371,30 @@ private void InitializeComponent()
// DashboardTable
//
this.DashboardTable.AllowUserToOrderColumns = true;
- dataGridViewCellStyle1.BackColor = System.Drawing.Color.White;
- this.DashboardTable.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
+ dataGridViewCellStyle4.BackColor = System.Drawing.Color.White;
+ this.DashboardTable.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle4;
this.DashboardTable.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.DashboardTable.BackgroundColor = System.Drawing.Color.White;
this.DashboardTable.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.DashboardTable.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.SingleHorizontal;
this.DashboardTable.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
- dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
- dataGridViewCellStyle2.BackColor = System.Drawing.Color.White;
- dataGridViewCellStyle2.Font = new System.Drawing.Font("Segoe UI", 10.5F);
- dataGridViewCellStyle2.ForeColor = System.Drawing.Color.Black;
- dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
- dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
- dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
- this.DashboardTable.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
+ dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle5.BackColor = System.Drawing.Color.White;
+ dataGridViewCellStyle5.Font = new System.Drawing.Font("Segoe UI", 10.5F);
+ dataGridViewCellStyle5.ForeColor = System.Drawing.Color.Black;
+ dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.DashboardTable.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5;
this.DashboardTable.ColumnHeadersHeight = 4;
- dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
- dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(248)))), ((int)(((byte)(249)))));
- dataGridViewCellStyle3.Font = new System.Drawing.Font("Segoe UI", 10.5F);
- dataGridViewCellStyle3.ForeColor = System.Drawing.Color.Black;
- dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(241)))), ((int)(((byte)(243)))));
- dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.Black;
- dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
- this.DashboardTable.DefaultCellStyle = dataGridViewCellStyle3;
+ dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(248)))), ((int)(((byte)(249)))));
+ dataGridViewCellStyle6.Font = new System.Drawing.Font("Segoe UI", 10.5F);
+ dataGridViewCellStyle6.ForeColor = System.Drawing.Color.Black;
+ dataGridViewCellStyle6.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(241)))), ((int)(((byte)(243)))));
+ dataGridViewCellStyle6.SelectionForeColor = System.Drawing.Color.Black;
+ dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
+ this.DashboardTable.DefaultCellStyle = dataGridViewCellStyle6;
this.DashboardTable.Dock = System.Windows.Forms.DockStyle.Fill;
this.DashboardTable.EnableHeadersVisualStyles = false;
this.DashboardTable.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(248)))), ((int)(((byte)(249)))));
diff --git a/app/view/usercontrols/Dashboard_User.cs b/app/view/usercontrols/Dashboard_User.cs
index 7926f71..4ace3bb 100644
--- a/app/view/usercontrols/Dashboard_User.cs
+++ b/app/view/usercontrols/Dashboard_User.cs
@@ -104,7 +104,7 @@ public void TampilData()
}
catch
{
- MessageBox.Show("Data untuk hari ini kosong. Silahkan input data hari ini","Informasi");
+ MessageBox.Show("Data pengeluaran untuk hari ini kosong, silahkan input pengeluaran hari ini terlebih dahulu untuk melihat data", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);
label2.Text = "Rp. -";
label3.Text = "Rp. -";
label4.Text = "Rp. -";
diff --git a/app/view/usercontrols/Laporan_User.Designer.cs b/app/view/usercontrols/Laporan_User.Designer.cs
index 52efcd3..7c6686d 100644
--- a/app/view/usercontrols/Laporan_User.Designer.cs
+++ b/app/view/usercontrols/Laporan_User.Designer.cs
@@ -29,9 +29,9 @@ protected override void Dispose(bool disposing)
///
private void InitializeComponent()
{
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle();
this.Table_Panel = new Guna.UI2.WinForms.Guna2Panel();
this.Vertical = new Guna.UI2.WinForms.Guna2VScrollBar();
this.Horizontal = new Guna.UI2.WinForms.Guna2HScrollBar();
@@ -107,30 +107,30 @@ private void InitializeComponent()
// DataTable
//
this.DataTable.AllowUserToOrderColumns = true;
- dataGridViewCellStyle1.BackColor = System.Drawing.Color.White;
- this.DataTable.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
+ dataGridViewCellStyle10.BackColor = System.Drawing.Color.White;
+ this.DataTable.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle10;
this.DataTable.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.DataTable.BackgroundColor = System.Drawing.Color.White;
this.DataTable.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.DataTable.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.SingleHorizontal;
this.DataTable.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
- dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
- dataGridViewCellStyle2.BackColor = System.Drawing.Color.White;
- dataGridViewCellStyle2.Font = new System.Drawing.Font("Segoe UI", 10.5F);
- dataGridViewCellStyle2.ForeColor = System.Drawing.Color.Black;
- dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
- dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
- dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
- this.DataTable.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
+ dataGridViewCellStyle11.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle11.BackColor = System.Drawing.Color.White;
+ dataGridViewCellStyle11.Font = new System.Drawing.Font("Segoe UI", 10.5F);
+ dataGridViewCellStyle11.ForeColor = System.Drawing.Color.Black;
+ dataGridViewCellStyle11.SelectionBackColor = System.Drawing.SystemColors.Highlight;
+ dataGridViewCellStyle11.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
+ dataGridViewCellStyle11.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.DataTable.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle11;
this.DataTable.ColumnHeadersHeight = 4;
- dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
- dataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(248)))), ((int)(((byte)(249)))));
- dataGridViewCellStyle3.Font = new System.Drawing.Font("Segoe UI", 10.5F);
- dataGridViewCellStyle3.ForeColor = System.Drawing.Color.Black;
- dataGridViewCellStyle3.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(241)))), ((int)(((byte)(243)))));
- dataGridViewCellStyle3.SelectionForeColor = System.Drawing.Color.Black;
- dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
- this.DataTable.DefaultCellStyle = dataGridViewCellStyle3;
+ dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
+ dataGridViewCellStyle12.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(248)))), ((int)(((byte)(249)))));
+ dataGridViewCellStyle12.Font = new System.Drawing.Font("Segoe UI", 10.5F);
+ dataGridViewCellStyle12.ForeColor = System.Drawing.Color.Black;
+ dataGridViewCellStyle12.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(239)))), ((int)(((byte)(241)))), ((int)(((byte)(243)))));
+ dataGridViewCellStyle12.SelectionForeColor = System.Drawing.Color.Black;
+ dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
+ this.DataTable.DefaultCellStyle = dataGridViewCellStyle12;
this.DataTable.Dock = System.Windows.Forms.DockStyle.Fill;
this.DataTable.EnableHeadersVisualStyles = false;
this.DataTable.GridColor = System.Drawing.Color.FromArgb(((int)(((byte)(247)))), ((int)(((byte)(248)))), ((int)(((byte)(249)))));
@@ -226,6 +226,8 @@ private void InitializeComponent()
//
// Form_panel
//
+ this.Form_panel.BackColor = System.Drawing.Color.Transparent;
+ this.Form_panel.BorderRadius = 3;
this.Form_panel.Controls.Add(this.Tombol_Print);
this.Form_panel.Controls.Add(this.TanggalBeli);
this.Form_panel.Controls.Add(this.Tombol_Excel);
@@ -243,6 +245,8 @@ private void InitializeComponent()
//
// Tombol_Print
//
+ this.Tombol_Print.Animated = true;
+ this.Tombol_Print.BorderRadius = 3;
this.Tombol_Print.CheckedState.Parent = this.Tombol_Print;
this.Tombol_Print.CustomImages.Parent = this.Tombol_Print;
this.Tombol_Print.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(164)))), ((int)(((byte)(157)))), ((int)(((byte)(182)))));
@@ -261,6 +265,7 @@ private void InitializeComponent()
//
this.TanggalBeli.Animated = true;
this.TanggalBeli.BorderColor = System.Drawing.Color.Silver;
+ this.TanggalBeli.BorderRadius = 3;
this.TanggalBeli.BorderThickness = 1;
this.TanggalBeli.CheckedState.Parent = this.TanggalBeli;
this.TanggalBeli.FillColor = System.Drawing.Color.White;
@@ -278,6 +283,8 @@ private void InitializeComponent()
//
// Tombol_Excel
//
+ this.Tombol_Excel.Animated = true;
+ this.Tombol_Excel.BorderRadius = 3;
this.Tombol_Excel.CheckedState.Parent = this.Tombol_Excel;
this.Tombol_Excel.CustomImages.Parent = this.Tombol_Excel;
this.Tombol_Excel.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(87)))), ((int)(((byte)(101)))), ((int)(((byte)(166)))));
@@ -294,6 +301,8 @@ private void InitializeComponent()
//
// Tombol_Cari
//
+ this.Tombol_Cari.Animated = true;
+ this.Tombol_Cari.BorderRadius = 3;
this.Tombol_Cari.CheckedState.Parent = this.Tombol_Cari;
this.Tombol_Cari.CustomImages.Parent = this.Tombol_Cari;
this.Tombol_Cari.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
@@ -325,6 +334,7 @@ private void InitializeComponent()
this.guna2Panel5.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.guna2Panel5.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel5.BorderRadius = 3;
this.guna2Panel5.Controls.Add(this.LabelTotal);
this.guna2Panel5.Controls.Add(this.label4);
this.guna2Panel5.FillColor = System.Drawing.Color.White;
diff --git a/app/view/usercontrols/Laporan_User.cs b/app/view/usercontrols/Laporan_User.cs
index df50f67..4067778 100644
--- a/app/view/usercontrols/Laporan_User.cs
+++ b/app/view/usercontrols/Laporan_User.cs
@@ -79,14 +79,19 @@ private void ToCsV(Guna2DataGridView dGV, string filename)
private void Laporan_User_Load(object sender, EventArgs e)
{
- //Tanggal
+ //TAMBAHAN
TanggalBeli.Value = DateTime.Today;
+ Tombol_Excel.Enabled = false;
+ Tombol_Print.Enabled = false;
}
private void Tombol_Cari_Click(object sender, EventArgs e)
{
try
{
+ Tombol_Excel.Enabled = true;
+ Tombol_Print.Enabled = true;
+
int tahun = TanggalBeli.Value.Year;
int bulan = TanggalBeli.Value.Month;
@@ -117,7 +122,7 @@ private void Tombol_Cari_Click(object sender, EventArgs e)
catch(Exception ex)
{
LabelTotal.Text = "-";
- MessageBox.Show(ex.Message, "Informasi");
+ MessageBox.Show(ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
@@ -153,7 +158,7 @@ private void Tombol_Print_Click(object sender, EventArgs e)
}
catch(Exception ex)
{
- MessageBox.Show(ex.Message, "Informasi");
+ MessageBox.Show(ex.Message, "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
diff --git a/app/view/winform/Daftar.Designer.cs b/app/view/winform/Daftar.Designer.cs
new file mode 100644
index 0000000..9805188
--- /dev/null
+++ b/app/view/winform/Daftar.Designer.cs
@@ -0,0 +1,388 @@
+
+namespace SIPP.view.winform
+{
+ partial class Daftar
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Daftar));
+ this.Tombol_Masuk = new Guna.UI2.WinForms.Guna2Button();
+ this.LihatPassword = new Guna.UI2.WinForms.Guna2CheckBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.Tombol_Daftar = new Guna.UI2.WinForms.Guna2Button();
+ this.label7 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.guna2Panel2 = new Guna.UI2.WinForms.Guna2Panel();
+ this.label1 = new System.Windows.Forms.Label();
+ this.Minimize = new Guna.UI2.WinForms.Guna2ControlBox();
+ this.Close = new Guna.UI2.WinForms.Guna2ControlBox();
+ this.guna2Panel1 = new Guna.UI2.WinForms.Guna2Panel();
+ this.label2 = new System.Windows.Forms.Label();
+ this.NamaLengkap = new Guna.UI2.WinForms.Guna2TextBox();
+ this.Password = new Guna.UI2.WinForms.Guna2TextBox();
+ this.Username = new Guna.UI2.WinForms.Guna2TextBox();
+ this.guna2DragControl1 = new Guna.UI2.WinForms.Guna2DragControl(this.components);
+ this.guna2ShadowForm1 = new Guna.UI2.WinForms.Guna2ShadowForm(this.components);
+ this.guna2Panel2.SuspendLayout();
+ this.guna2Panel1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // Tombol_Masuk
+ //
+ this.Tombol_Masuk.Animated = true;
+ this.Tombol_Masuk.BorderRadius = 3;
+ this.Tombol_Masuk.CheckedState.Parent = this.Tombol_Masuk;
+ this.Tombol_Masuk.CustomImages.Parent = this.Tombol_Masuk;
+ this.Tombol_Masuk.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(87)))), ((int)(((byte)(101)))), ((int)(((byte)(166)))));
+ this.Tombol_Masuk.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.Tombol_Masuk.ForeColor = System.Drawing.Color.White;
+ this.Tombol_Masuk.HoverState.Parent = this.Tombol_Masuk;
+ this.Tombol_Masuk.Location = new System.Drawing.Point(22, 509);
+ this.Tombol_Masuk.Name = "Tombol_Masuk";
+ this.Tombol_Masuk.ShadowDecoration.Parent = this.Tombol_Masuk;
+ this.Tombol_Masuk.Size = new System.Drawing.Size(381, 40);
+ this.Tombol_Masuk.TabIndex = 14;
+ this.Tombol_Masuk.Text = "Masuk";
+ this.Tombol_Masuk.Click += new System.EventHandler(this.Tombol_Masuk_Click);
+ //
+ // LihatPassword
+ //
+ this.LihatPassword.AutoSize = true;
+ this.LihatPassword.CheckedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(94)))), ((int)(((byte)(148)))), ((int)(((byte)(255)))));
+ this.LihatPassword.CheckedState.BorderRadius = 0;
+ this.LihatPassword.CheckedState.BorderThickness = 0;
+ this.LihatPassword.CheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(94)))), ((int)(((byte)(148)))), ((int)(((byte)(255)))));
+ this.LihatPassword.Location = new System.Drawing.Point(278, 418);
+ this.LihatPassword.Name = "LihatPassword";
+ this.LihatPassword.Size = new System.Drawing.Size(125, 21);
+ this.LihatPassword.TabIndex = 13;
+ this.LihatPassword.Text = "Lihat password";
+ this.LihatPassword.UncheckedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(125)))), ((int)(((byte)(137)))), ((int)(((byte)(149)))));
+ this.LihatPassword.UncheckedState.BorderRadius = 0;
+ this.LihatPassword.UncheckedState.BorderThickness = 0;
+ this.LihatPassword.UncheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(125)))), ((int)(((byte)(137)))), ((int)(((byte)(149)))));
+ this.LihatPassword.CheckedChanged += new System.EventHandler(this.LihatPassword_CheckedChanged);
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label3.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
+ this.label3.Location = new System.Drawing.Point(19, 599);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(273, 19);
+ this.label3.TabIndex = 4;
+ this.label3.Text = "Dibuat oleh Muhammad Surya Jayadiprana";
+ //
+ // Tombol_Daftar
+ //
+ this.Tombol_Daftar.Animated = true;
+ this.Tombol_Daftar.BorderRadius = 3;
+ this.Tombol_Daftar.CheckedState.Parent = this.Tombol_Daftar;
+ this.Tombol_Daftar.CustomImages.Parent = this.Tombol_Daftar;
+ this.Tombol_Daftar.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Tombol_Daftar.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.Tombol_Daftar.ForeColor = System.Drawing.Color.White;
+ this.Tombol_Daftar.HoverState.Parent = this.Tombol_Daftar;
+ this.Tombol_Daftar.Location = new System.Drawing.Point(23, 463);
+ this.Tombol_Daftar.Name = "Tombol_Daftar";
+ this.Tombol_Daftar.ShadowDecoration.Parent = this.Tombol_Daftar;
+ this.Tombol_Daftar.Size = new System.Drawing.Size(380, 40);
+ this.Tombol_Daftar.TabIndex = 12;
+ this.Tombol_Daftar.Text = "Daftar";
+ this.Tombol_Daftar.Click += new System.EventHandler(this.Tombol_Daftar_Click);
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.BackColor = System.Drawing.Color.Transparent;
+ this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.label7.Location = new System.Drawing.Point(19, 325);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(83, 20);
+ this.label7.TabIndex = 8;
+ this.label7.Text = "Password";
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.BackColor = System.Drawing.Color.Transparent;
+ this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.label6.Location = new System.Drawing.Point(19, 233);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(86, 20);
+ this.label6.TabIndex = 6;
+ this.label6.Text = "Username";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label5.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
+ this.label5.Location = new System.Drawing.Point(20, 100);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(180, 17);
+ this.label5.TabIndex = 2;
+ this.label5.Text = "Daftar agar anda bisa login";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label4.Location = new System.Drawing.Point(18, 70);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(70, 25);
+ this.label4.TabIndex = 1;
+ this.label4.Text = "Daftar";
+ //
+ // guna2Panel2
+ //
+ this.guna2Panel2.BackColor = System.Drawing.Color.White;
+ this.guna2Panel2.Controls.Add(this.label1);
+ this.guna2Panel2.Controls.Add(this.Minimize);
+ this.guna2Panel2.Controls.Add(this.Close);
+ this.guna2Panel2.Dock = System.Windows.Forms.DockStyle.Top;
+ this.guna2Panel2.Location = new System.Drawing.Point(0, 0);
+ this.guna2Panel2.Name = "guna2Panel2";
+ this.guna2Panel2.ShadowDecoration.Parent = this.guna2Panel2;
+ this.guna2Panel2.Size = new System.Drawing.Size(431, 53);
+ this.guna2Panel2.TabIndex = 0;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label1.ForeColor = System.Drawing.Color.Black;
+ this.label1.Location = new System.Drawing.Point(19, 15);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(96, 23);
+ this.label1.TabIndex = 13;
+ this.label1.Text = "Daftar SIPP";
+ //
+ // Minimize
+ //
+ this.Minimize.ControlBoxType = Guna.UI2.WinForms.Enums.ControlBoxType.MinimizeBox;
+ this.Minimize.Dock = System.Windows.Forms.DockStyle.Right;
+ this.Minimize.FillColor = System.Drawing.Color.White;
+ this.Minimize.HoverState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Minimize.HoverState.IconColor = System.Drawing.Color.White;
+ this.Minimize.HoverState.Parent = this.Minimize;
+ this.Minimize.IconColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.Minimize.Location = new System.Drawing.Point(283, 0);
+ this.Minimize.Name = "Minimize";
+ this.Minimize.ShadowDecoration.Parent = this.Minimize;
+ this.Minimize.Size = new System.Drawing.Size(74, 53);
+ this.Minimize.TabIndex = 5;
+ //
+ // Close
+ //
+ this.Close.Dock = System.Windows.Forms.DockStyle.Right;
+ this.Close.FillColor = System.Drawing.Color.White;
+ this.Close.HoverState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Close.HoverState.IconColor = System.Drawing.Color.White;
+ this.Close.HoverState.Parent = this.Close;
+ this.Close.IconColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.Close.Location = new System.Drawing.Point(357, 0);
+ this.Close.Name = "Close";
+ this.Close.ShadowDecoration.Parent = this.Close;
+ this.Close.Size = new System.Drawing.Size(74, 53);
+ this.Close.TabIndex = 3;
+ this.Close.Click += new System.EventHandler(this.Close_Click);
+ //
+ // guna2Panel1
+ //
+ this.guna2Panel1.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel1.Controls.Add(this.label2);
+ this.guna2Panel1.Controls.Add(this.NamaLengkap);
+ this.guna2Panel1.Controls.Add(this.Tombol_Masuk);
+ this.guna2Panel1.Controls.Add(this.LihatPassword);
+ this.guna2Panel1.Controls.Add(this.label3);
+ this.guna2Panel1.Controls.Add(this.Tombol_Daftar);
+ this.guna2Panel1.Controls.Add(this.label7);
+ this.guna2Panel1.Controls.Add(this.Password);
+ this.guna2Panel1.Controls.Add(this.label6);
+ this.guna2Panel1.Controls.Add(this.Username);
+ this.guna2Panel1.Controls.Add(this.label5);
+ this.guna2Panel1.Controls.Add(this.label4);
+ this.guna2Panel1.Controls.Add(this.guna2Panel2);
+ this.guna2Panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.guna2Panel1.FillColor = System.Drawing.Color.White;
+ this.guna2Panel1.Location = new System.Drawing.Point(0, 0);
+ this.guna2Panel1.Name = "guna2Panel1";
+ this.guna2Panel1.ShadowDecoration.Parent = this.guna2Panel1;
+ this.guna2Panel1.Size = new System.Drawing.Size(431, 637);
+ this.guna2Panel1.TabIndex = 14;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.BackColor = System.Drawing.Color.Transparent;
+ this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.label2.Location = new System.Drawing.Point(18, 138);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(121, 20);
+ this.label2.TabIndex = 16;
+ this.label2.Text = "Nama Lengkap";
+ //
+ // NamaLengkap
+ //
+ this.NamaLengkap.Animated = true;
+ this.NamaLengkap.BorderRadius = 3;
+ this.NamaLengkap.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.NamaLengkap.DefaultText = "";
+ this.NamaLengkap.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
+ this.NamaLengkap.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
+ this.NamaLengkap.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.NamaLengkap.DisabledState.Parent = this.NamaLengkap;
+ this.NamaLengkap.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.NamaLengkap.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.NamaLengkap.FocusedState.Parent = this.NamaLengkap;
+ this.NamaLengkap.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.NamaLengkap.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.NamaLengkap.HoverState.Parent = this.NamaLengkap;
+ this.NamaLengkap.IconLeft = global::SIPP.Properties.Resources.icons8_name_tag_100px;
+ this.NamaLengkap.IconLeftSize = new System.Drawing.Size(25, 25);
+ this.NamaLengkap.Location = new System.Drawing.Point(22, 166);
+ this.NamaLengkap.Name = "NamaLengkap";
+ this.NamaLengkap.PasswordChar = '\0';
+ this.NamaLengkap.PlaceholderText = "Username";
+ this.NamaLengkap.SelectedText = "";
+ this.NamaLengkap.ShadowDecoration.Parent = this.NamaLengkap;
+ this.NamaLengkap.Size = new System.Drawing.Size(380, 40);
+ this.NamaLengkap.Style = Guna.UI2.WinForms.Enums.TextBoxStyle.Material;
+ this.NamaLengkap.TabIndex = 15;
+ //
+ // Password
+ //
+ this.Password.Animated = true;
+ this.Password.BorderRadius = 3;
+ this.Password.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.Password.DefaultText = "";
+ this.Password.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
+ this.Password.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
+ this.Password.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.Password.DisabledState.Parent = this.Password;
+ this.Password.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.Password.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Password.FocusedState.Parent = this.Password;
+ this.Password.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.Password.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Password.HoverState.Parent = this.Password;
+ this.Password.IconLeft = global::SIPP.Properties.Resources.icons8_lock_100px;
+ this.Password.IconLeftSize = new System.Drawing.Size(25, 25);
+ this.Password.Location = new System.Drawing.Point(23, 353);
+ this.Password.Name = "Password";
+ this.Password.PasswordChar = '•';
+ this.Password.PlaceholderText = "Password";
+ this.Password.SelectedText = "";
+ this.Password.ShadowDecoration.Parent = this.Password;
+ this.Password.Size = new System.Drawing.Size(380, 40);
+ this.Password.Style = Guna.UI2.WinForms.Enums.TextBoxStyle.Material;
+ this.Password.TabIndex = 7;
+ //
+ // Username
+ //
+ this.Username.Animated = true;
+ this.Username.BorderRadius = 3;
+ this.Username.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.Username.DefaultText = "";
+ this.Username.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
+ this.Username.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
+ this.Username.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.Username.DisabledState.Parent = this.Username;
+ this.Username.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.Username.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Username.FocusedState.Parent = this.Username;
+ this.Username.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.Username.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Username.HoverState.Parent = this.Username;
+ this.Username.IconLeft = global::SIPP.Properties.Resources.icons8_customer_100px;
+ this.Username.IconLeftSize = new System.Drawing.Size(25, 25);
+ this.Username.Location = new System.Drawing.Point(23, 261);
+ this.Username.Name = "Username";
+ this.Username.PasswordChar = '\0';
+ this.Username.PlaceholderText = "Username";
+ this.Username.SelectedText = "";
+ this.Username.ShadowDecoration.Parent = this.Username;
+ this.Username.Size = new System.Drawing.Size(380, 40);
+ this.Username.Style = Guna.UI2.WinForms.Enums.TextBoxStyle.Material;
+ this.Username.TabIndex = 5;
+ //
+ // guna2DragControl1
+ //
+ this.guna2DragControl1.ContainerControl = this;
+ this.guna2DragControl1.TargetControl = this.guna2Panel2;
+ //
+ // Daftar
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(431, 637);
+ this.Controls.Add(this.guna2Panel1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "Daftar";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Daftar";
+ this.Load += new System.EventHandler(this.Daftar_Load);
+ this.guna2Panel2.ResumeLayout(false);
+ this.guna2Panel2.PerformLayout();
+ this.guna2Panel1.ResumeLayout(false);
+ this.guna2Panel1.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private Guna.UI2.WinForms.Guna2Button Tombol_Masuk;
+ private Guna.UI2.WinForms.Guna2CheckBox LihatPassword;
+ private System.Windows.Forms.Label label3;
+ private Guna.UI2.WinForms.Guna2Button Tombol_Daftar;
+ private System.Windows.Forms.Label label7;
+ private Guna.UI2.WinForms.Guna2TextBox Password;
+ private System.Windows.Forms.Label label6;
+ private Guna.UI2.WinForms.Guna2TextBox Username;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label4;
+ private Guna.UI2.WinForms.Guna2Panel guna2Panel2;
+ private System.Windows.Forms.Label label1;
+ private Guna.UI2.WinForms.Guna2ControlBox Minimize;
+ private Guna.UI2.WinForms.Guna2ControlBox Close;
+ private Guna.UI2.WinForms.Guna2Panel guna2Panel1;
+ private System.Windows.Forms.Label label2;
+ private Guna.UI2.WinForms.Guna2TextBox NamaLengkap;
+ private Guna.UI2.WinForms.Guna2DragControl guna2DragControl1;
+ private Guna.UI2.WinForms.Guna2ShadowForm guna2ShadowForm1;
+ }
+}
\ No newline at end of file
diff --git a/app/view/winform/Daftar.cs b/app/view/winform/Daftar.cs
new file mode 100644
index 0000000..81bfcd8
--- /dev/null
+++ b/app/view/winform/Daftar.cs
@@ -0,0 +1,74 @@
+using SIPP.controller;
+using SIPP.model;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace SIPP.view.winform
+{
+ public partial class Daftar : Form
+ {
+ Admin admin = new Admin();
+ CekLogin cek = new CekLogin();
+ AdminDAO AdminDAO = new AdminDAO();
+
+ public Daftar()
+ {
+ InitializeComponent();
+ }
+
+ private void Daftar_Load(object sender, EventArgs e)
+ {
+ guna2ShadowForm1.SetShadowForm(this);
+ }
+
+ private void Close_Click(object sender, EventArgs e)
+ {
+ Application.Exit();
+ }
+
+ private void Tombol_Masuk_Click(object sender, EventArgs e)
+ {
+ Login login = new Login();
+ login.Show();
+ this.Hide();
+ }
+
+ private void Tombol_Daftar_Click(object sender, EventArgs e)
+ {
+ if(Username.Text == "" || Password.Text == "" || NamaLengkap.Text == "")
+ {
+ MessageBox.Show("Form tidak boleh kosong!", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ else
+ {
+ admin.Nama = NamaLengkap.Text;
+ admin.Username = Username.Text;
+ admin.Password = cek.HashMD5(Password.Text);
+
+ AdminDAO.TambahData(admin);
+ NamaLengkap.Text = "";
+ Username.Text = "";
+ Password.Text = "";
+ }
+ }
+
+ private void LihatPassword_CheckedChanged(object sender, EventArgs e)
+ {
+ if (LihatPassword.Checked == true)
+ {
+ Password.PasswordChar = '\0';
+ }
+ else
+ {
+ Password.PasswordChar = '\u25CF';
+ }
+ }
+ }
+}
diff --git a/app/view/winform/Daftar.resx b/app/view/winform/Daftar.resx
new file mode 100644
index 0000000..2288c5c
--- /dev/null
+++ b/app/view/winform/Daftar.resx
@@ -0,0 +1,1889 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 215, 27
+
+
+
+
+ AAABAAYAAAAAAAEAIAB4FgAAZgAAAICAAAABACAAKAgBAN4WAABAQAAAAQAgAChCAAAGHwEAMDAAAAEA
+ IACoJQAALmEBACAgAAABACAAqBAAANaGAQAQEAAAAQAgAGgEAAB+lwEAiVBORw0KGgoAAAANSUhEUgAA
+ AQAAAAEACAYAAABccqhmAAAWP0lEQVR42u3dWZAcd30H8G93z33sqWN1WFqt1pIP2bJkJBsfAdsFtoHY
+ gcIBDCFSpaDihEpBJU+8JE8pHvIQEkIqBCoqKsaYhMRgmxBjBRAgS9iWvLqv3R1p73tnds6ePvKwaC3J
+ q+mZnb77+6nChbWtmf+/vf3t/v/63/8WQGSxfX2Z2wA8CeB+AHcC2AggDUB0um0epgMoARgFcAHAmwBe
+ A3DkwM5urd4PEZzuBfnTvr5MGMCzAL4E4H1OtydALgP4FoBvHtjZPW+0MQOATLevL/MEgK8D2OZ0WwJs
+ FsBfA/jnAzu71ZttxAAg0+zry8SxeOB/wem20JJDAJ49sLN7ZLkfMgDIFPv6MqsBvAJgr9NtofcYA/DR
+ Azu7j9/4AwYANW1fX6YTwC8A7HC6LXRTcwAePbCz+51r/5ABQE3Z15eJADgI4CGn20KGxgDsPbCze/jq
+ H/A2DDXrb8GD3yvWAfjevr6MdPUPGAC0Yvv6MvcB+LLT7aCGPAzguav/wiEArcjn3xmAKIi/BvCg022h
+ hs0C6DmwszvLKwBaEVEQHwEPfq/qwO+uAhgAtFJ/6nQDqClf3HciI3AIQA3b15dJAJgCkHC6LdSU+0NO
+ t4A86UH47OD/xI9fxOrpyZrbfOePn4Mi+eqQ+ZCvekO28d1svw1jw9g4cqXmNoKuO91Ms+1lDYBWYrvT
+ DSBTbGMA0Ep0Od0AMkUXA4BWIup0A8gUKQYArQTvHvmDxAAgCjAGAFGAMQCIAoxjOWrYvr7MISw+VeYJ
+ kqpi6+BFbLt0DuvHhtExN4NYpXzdff2IXIGo1V5MtxyLL/1/XQDkSBRzrR0YXbcB/T3bcL73NlTDEae7
+ 2xAGADXMKwEQkSt46MghPHDkENL5nOXfV47F8Obu9+MXDz+GfDLtdPfrwgCghnkhAG4/fxoff/kHaM3N
+ 2/7d5VgcrzzxB3hz9/1O7wZDnApMviLoOj78fz/BI4d+5tjU3Vi5hE++9AK2XO7HD5/6NFRJav5DLcIi
+ IPnKUz/5Lzz6y9dcMW//3uO/xede/DfD2oKTGADkGw8f/jkeOHrI6WZc545zJ/H7P/1vp5txUwwA8oUN
+ Y8N48mcvO92MZT1w5BDuOHfK6WYsiwFAvvD0K/8BSVWb/yCLPPWTHyKkKE434z1YBCTP237xLDYPZere
+ XhcE5FPpphb3EDUNqcJC3aHTPj+L9x0/iiN73LWMIgOAPO++t35T13aFRBKvP/Ikjt99L0rx5hc0CitV
+ bL9wBo8ffBVrpiaM2/nmbxgARGaKVGVsv3jWcLuZjlX41v4vYb613bTvrobCOHXHTlzovR2ff+HbuLX/
+ fM3t14+PoHN2GjMdq5zebUtYAyBPu2X4suHYWhNEPP+p/aYe/NeSIxE8/4f7sZBqMdx2y+V+R/bTzTAA
+ yNNWTxtfep/bdgdG1m20tB2leByH7zOeHLl2cty2fVMPBgB5Wjq/YLhNf8+ttrSlv2ebcXsXrH8moREM
+ APK0em6tlWL2rGCeTyQNt4lUZVvaUi8GAHmaXMfjt212PRBUz3t2XDBF+VoMAPK0bGub4TZ3nDvpdDNd
+ i7cBydPGujYYbrNx5Ap2njyGvrt2W9qWajiCC7231dxm1OJiZKMYAORpY13rUUgkkSwWam73yR99H6V4
+ wvAAbUYu3YLvfP45p3dJQ9z7oDK51j3PfXk/gM1OtwNYnNbbOTeDjaNDNbeTVBW7TryNNdMTUMJh5FMt
+ UEI8/3EPkOcd3vsw9r512HANAEHXsfPkMew8eQyaKGJ03Ub0d/diYEsvMpu2ohyLOd0V23FJMGqYG5cE
+ +8x/fhf3nHh7xX//aiAMdPeif0svMpt6rlsE1K8YANQwNwZAeiGHr/zT1wxrAfXSRBGjXRswsOVWDHT3
+ YnCzPwOBAUANc2MAAIuPBe97/luWLMH1biD0YqC7F5nNW1HyQSAwAKhhbg0AANj9zpt45qXvWb4OnyaK
+ GOvasDRkGNy81ZNXCAwAapibAwBYnPjz6R/+O6KVsm3fqUoSzvfejjfue9jSW41mYwBQw9weAADQMTeD
+ T/z4RcNn9K0w2L0VL330GYyvXef0bjDEeQDUMDfNA7iZUjyBY/fsQWbzViRKJXTOTdu2VHj7/Bz2HD+C
+ fDKNkfW3OL0rauIVADXMC1cAN0oUC+gdvIiewYvoGbyENdMTtgTCa49+BAc/+LjT3b8pBgA1zIsBcKNU
+ fgE9mUuL/7M4EF762DN4Y+9DTnd5WQwAapgfAuBG1wbC1sFLWG1iIKiShG9+4SsYduFwgAFADfNjANzo
+ xkBYM9XcUl6jXRvwD8/9FXTBXU/g81kAomXkU2mc2LELJ3bsAvBuIGzNXELP4EWsnpqEgPqvENaPj2Dn
+ yeN45+57ne7adRgARHW4MRDSvwuEHWf6cNfpPgi68cSjh974JQOAyA8WUmn07diFvh270H1lAH/0wneQ
+ KuRr/p1bRi677r0ADADytG2XzuHuU8drbvPW7vuQ2dRjWRsym3pw4HNfxHP/+nVIWu1XhfUOXGAAEJll
+ 7eQY9hw7UnObzOYeSwMAAIY2bMaxXXuw5+3abVk/Nmz7PqrFXSVJIg87cecuw23a5uecbuZ1GADkfzat
+ xD3b3mm4TVSuOLwzrheaePrpPU43wm7nWjbhL3f/eeDCT1MUXatWmj4c1KqeksLumEKi1vGK73i5aEtb
+ InUc3KrkrsdvQgB+63Qj7CZc809qXGlBQaoj7HQzACxW441sudyPXz3wiOVt2XJ5wHCbQjJly36pV+DO
+ guQvk6vXGm5z+/nTTc/kMxJSqnjwyC+N27vKuL12YgCQp02u7kLR4J18oqbhsz84gKTBffqVEjUNn3zp
+ ++icnTbcNrPZ2rsRDbfd6QYQNUMXBJy5bYfhdl0TY/iLf/k73H3qOCRVreOT67NpOIMvHvgGdp14y3Db
+ YiKJwc1bHd1fN+I8APK8o/c+gPcdO2q4Xdv8HD77gwOoRKKYWrUGSmjldQxR09A+P4t0vv7Xfb+1a68r
+ i4BEnnbllm5c3Lq97uW/onLF8E1CZpMjEVsKkY3iEIB84eUnP+HqV30d/MDjyKVbnW7GezAAyBcm1nTh
+ 1cefdroZy7rUsw2HHnzU6WYsiwFAvnH4vt/Dr9//AaebcZ3xtevw/Kf2QxPdeai595qJaAVeeeLjqIYi
+ eORXP3O6KbiysRsHPvcFFOMJp5tyUwwA8hVdEPDTD30Mwxs24eMvv2j4jL4VNFHEr9//AfzvYx9zdV0C
+ YACQT5264270b+nFB3/1Ou5/6zeIla1/S5AuCDi7/U689uhHMNa1weldUBcGAPlWKZ7A/3z4KRz84BO4
+ /fwp3HbxDDaODKF9fgbharXpz9dEEQupFox1rcelnm04eec9mG9td7rbDWEAkO/JkQj67tqNvrt2AwAE
+ XYeoadct+/1n3/57bDCYG/A3X/0aqtdMHtJE0bXFvXoxAChwdEF4z4w8XTB+OlQJhVw/pm+Ut+OLiJrC
+ ACAKMAYAUYAxAKhhunlP05KDNEVjAFDjqrLxW3DI/aplhQFAjZMLvATwg3KubM5tQCGsQ4zb80uh5iVA
+ c8eCnq3SAtKi9SvOahAwWl3jdHeXFLOK000wXbalDfFS7f+Wus8Wki1MF80JgOimEloeM14PzQwz318P
+ NeeOe7H7O17CZ9tftfx7cmoKj/V/2+nuLsnPKtA1HYLonwPiu5/5E6ebYLvcWI5DAGqcpujITTU/lZac
+ Uy1VsTCRZwDQysxccdcbbqgxUxdnoGs6A4BWJjcpo5TzXy0gCDRFw8TZSQCcB0BNGD1rzyu3yFyjJ8dR
+ LS0O4RgAtGIL01XMDnEo4CXFuRLGTr37liQGADVl+HQB5QXOC/ACVVZx6RcD0NV3H4NmAFBTNFXHwJs5
+ yCXODnQzTdVw8ef9KGevXxmJAUBNk0saLh3JocIZgq6kVlVcONiP3NjCe37GACBTyEUVFw9nkZvk/AA3
+ Kc2XcebV88iNLv8KM3dMqSNfUOTF4UDnpijWbU8gFOH5xSm6qmP8zARG+sagKTcfnjEAyHQzVyqYH5Wx
+ alMYnZtjiCRW/hJOaoxaVTHdP4vxU+Oo5GXD7RkAZAlV0THRX8HI24NIrYqhdWMr0muSiLfFIUXc9YZc
+ L9MUDeVcBfmpPLKjOWRHcjXP+DdiAJB1BAFiog258Snkxt8tQIkhEVJYQh3rcBpaf/c6rLltte1dmx/K
+ YujtEaiyM7MhdSwe/GpVXfyXFWIAkKXEaBJitAitUlj6M03RGjpL1RJtidraH7lYxZWjQ5i9PGfr91qF
+ AUCWC6U7UVVk6Kr5dwiSnfa8d0/XdUyem8LwsdHFs65PMADIeoKIUOtaKPPj0DXzLpmjqQhCUet/hYuz
+ RQwevoLCdKH5D3MZBgDZQpBCCLV1QclOmHYlkOxMWtpmVdEwcnwUE2cnoWtNDLRdjAFAthGkEMLt66As
+ zFxXE1ipxCrrLv/nh7LIHL0CuY5baV7GACB7CSJCLauhVRJQC3PQ1ZUPCawY/8vFKi4fvYK5y/MO7iR7
+ COEYA4CcIUaTECMJaJU81NICdKXxM62ZAeDXIt9yxEgcYrwFYiTOACAHCQLEWBpiLA1dVaDLJWhKBbpS
+ BTQVun7zW4VmFgCLM0UMvmFRkU9wdjq0IIqAGIIghSGGoxAjcUB8dyIWA4BcQZBCEOJpiEjXtX3rukjT
+ 37lU5DszCV03ucgniJCSbZDiLVbsLtMwAMiT4q3N/erOD2WROXIFcsH8Ip8YTUBKdUIQ3T/lmQFAnpRY
+ YQDIRRmXjw5ZUuQTpBCkVAfEiD2Tk8zAACBPirc09qtrbZFPgJRIQ0q0w5QHHGzEACDPiSREhCL1H2iF
+ mSIyFhX5hFAUoXQnhFDzNQknMADIc+q9/NcUHcPvjGHi9LhFRb52SPH6ipZuxQAgz6mnAJidkDFyuoD8
+ 0ARg8sEvRpOQUh2eKPIZYQCQ59S6AqiWNQyfLiA7Li/OMtTNW614scjXuXgv3ScYAOQ5yxUAdR2YvlzG
+ +PkiVGXxjK8rZr20RICUaIGUaPNckc8IA4A8ZbkCYCmrYOhkAcXs9c8VrGR68Y2EcBShlHeLfEYYAOQp
+ 117+a4qOsQtFTGfKyw7zmwoAnxT5jDAAyFOuFgCvFvlqvZFIq65sCOCnIp8RBgB5SjgiYvDtBWTHa5/d
+ V1IA9GORzwgDgDxl6FS+ruO6sQKgf4t8RhgA5Cn1ntTrHf/7vchnhAFAvmR4BRCQIp8RBgD5kla9+RVA
+ kIp8RhgA5Ds3KwAGschnhAFAvvPey//gFvmMMADId64tAAa9yGeEAUC+oyuVxeXHk+0QA17kM8IAIP8R
+ wwh3rGaRrw4MAPKdULrT6SZ4hrOLlhORoxgARAHGACAKMNYAqKaOuIhndsScbsaSF06UkKv481XdTmAA
+ UE2pqIAnb4063YwlPzpbZgCYiEMAogBjABAFGAOAKMAYAEQBxgAgCjAGAFGAMQCIAozzAKimibyGr76+
+ 4HQzlsyWOAfATAwAqqmi6DgzqTT/QeRKHAIQBRgDgCjAGABEAcYAIAowBgBRgDEAiAKMAUAUYAwAogBj
+ ABAFGAOAKMAYAEQBxgAgCjAGAFGAMQCIAowBQBRgDACiAGMAEAUYA4AowBgARAHGACAKMAYAUYAxAIgC
+ jAFAFGAMAKIAYwAQBRgDgCjAGABEAcYAIAowBgBRgDEAiAKMAUAUYAwAogBjABAFWMjpBpC7tUQFPLIl
+ 6nQzlrw+UEFB1p1uhm8wAKimtriI/bvjTjdjydFhmQFgIg4BiAKMAUAUYKYMAXQd0FXB6b7YTtElVPSI
+ 5d8j62Gnu0o+ZUoAVAYSmBpION0X231j+ll8Y/pZp5tBtGIcAhAFGAOAKMAYAEQBxnkAVNNsUcM/Hik4
+ 3Ywl2QrnAJiJAUA15WUdBwdkp5tBFuEQgCjAGABEAcYAIAowBgBRgDEAiAKMAUAUYAwAogBjABAFGAOA
+ KMAYAEQBxgAgCjAGAFGAMQCIAowBQBRgDACiAGMAEAWYbQuCyNUqyrKMarUKRVWh6Ysru4iiiLAkIRIO
+ IxaNIiRJTu8T8+g61HIeajkPTS5BV2TomgZBECBIIQjhGKRYElK8BYLEtVnIfpb/1pUrFSwUi6gqyrI/
+ V1UVqqqiLMvIFQqIRiJoSSYRDnn4gNB1KPlZVHPT0NXqcj+GrqlAtQK1mAWEMYQSbQi3roEQ4jsAyD6W
+ HWWapmF+YQFlubHlpCqyjClZRjIeR0syCUHw1gtHtGoZ8vQwtGq5/r+k61AKc1CKWUTauxBKdTjdDQoI
+ SwJAUVXMZLNQVXXFn1EolVBVFHS0tkL0SAio5TwqU1cAXVvZB+ga5NlRaHIZkY71TneHAsD0IqCqaZiZ
+ n2/q4L9KrlYxm81C192/EqxaLqAydXnlB/81lPws5NlRp7tEAWBqAOgAZrNZqFrzB8FVcrWKbD5v935p
+ rN9qFfL00OLg3iRKfhZKftbprpHPmRoAhRrFvmYUy2VUGqwl2EmeHYOumd9veW582SIikVlMCwBN17FQ
+ LFrW0FzBPS+nuK7flSLUUs6aD9c1VLOTTneRfMy0ACiWSpaO1auKArnqvrNhdWHG0s9XCvOLtwyJLGBa
+ AJQqFcsba8d3NETXoJYWLP4O3borDAo8UwJA03VLxv43clsdQK2UTKn6G9HK7hz+kPeZEgCKDQc/sDi/
+ wE23BPVGJvs0oaFJRUQNMOcKwMTbfobf5aYAUO0JPru+h4LHlACw9ZB0UQDY1nNX9Zn8xJQAsHOqrque
+ DRBseppa9NETkuQqpvwGSzY9wisIAkTRPUsYCKGILd8j8glBsogpR1NIkmy5Coi47BFhMRK36XsSTneV
+ fMq002k0Yv3ZMBqNWv4djRDDUVuuAqR4yumukk+ZFgCJWMzShgqCgITLAgAAQql2a/sdikKMJp3uJvmU
+ qVcAVl6iJ2IxV43/rwqlOiBYWKQLt65yuovkY6YeUS3ptDWNFEWkE+4cBwuihHDbWmv6HU0glLT2CoOC
+ zdQAiIRCaEmaf7nank678ux/VSjVASnRYupnCqKEaOdGp7tGPmf6UZVKJJCMm1cdb0unbSkwNivaudG0
+ sbogioiu3mzbbUYKLktOq62pVNOX7IIgoL2lxfLiomkEEbE1m5u+EhCkMKJrtkCMunPIQ/5iWdUunUwi
+ Eokgu7AApcH1AaPhMFrTae+9I0AQEV21CUp+DtX58Yaf4w8l2xBuX2dpUZHoWpbOrImGw1jT0YFiuYxi
+ uVxzQQ9BEBANh5GMxz1xyV9LKNUOKdEKJT8LtTAHrXrzdQwEUYKUaEEo3Qkx7JGrHfINW6bWJWIxJGIx
+ aJoGWVGgqurSE4SiKCIUCiESCrlrnn+TBFFEuGUVwi2roCsyNLkETakCugpAgCCFIUZiiwe9j/pN3mLr
+ 3FpRFBHz+Nl9JYRQBFIoAl7Yk9u4994aEVmOAUAUYAwAogBjABAFGAOAKMAYAEQBxgAgCjAGAFGAMQCI
+ AowBQBRgDACiAGMAEAUYA4AowBgARAHGACAKMAYAUYAxAIgCjAFAFGAMAKIAYwAQBRgDgCjAGABEAcYA
+ IAowBgBRgDEAiALs/wH3VRPlGRc8ZwAAAABJRU5ErkJggigAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAA
+ AAAAAAAAAAAAAAAAAABPT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/01N
+ 5v9FRd3/QUHX/z8/1f9BQdj/Rkbe/05O5/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/TizP/w4Av/7p6Lf+4eCz/vHst/8iDMP/XjjT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9GRt7/OzvQ/zo6z/86Os//OjrP/zo6z/86Os//OzvR/0dH
+ 4P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/wn8v/65yKv+tcSr/rXEq/61xKv+tcSr/rXEq/7F0
+ K//MhjH/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/RETc/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/0ZG3v9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/758
+ Lv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/65xKv/LhTH/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0pK4v86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrQ/0xM5f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/KhDD/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/69zK//VjDP/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/QEDW/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//QkLZ/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/7R2
+ LP+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/8J/L//ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/05O6P86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/88PNH/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/TizP/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/tXYs/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/TEzl/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/9OTuj/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/86H
+ Mf+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+vcyv/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9MTOX/OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/05O6P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/zogy/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/7BzK//ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f87O9D/OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/89PdP/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/WjTP/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/uHgs/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0JC2f86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/0RE3P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+5eS3/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv/HgzD/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/TEzm/zs70P86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/88PNL/Tk7n/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9CJMv+ucir/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/tHYs/9iO
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SUnh/zs70P86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/86Os//OzvR/0pK4/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/8mEMP+ucSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/7F0K//SijL/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/S0vk/z8/1f86Os//OjrP/zo6z/86Os//OjrP/0BA1v9MTOX/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/86HMf+1diz/rXEq/61xKv+tcSr/rXEq/61xKv+7ey3/1Iwz/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0tL
+ 5P9GRt7/RUXd/0dH3/9MTOX/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/QiTL/xoIw/8SBL//IhDD/1Isz/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/Uqnf/2cSp/9nEqf/ZxKn/2cSp/9nEqf/ZxKn/2cSp/9nE
+ qf/ZxKn/2cSp/9nEqf/ZxKn/2cSp/9nEqf/ZxKn/2cSp/9nEqf/Oijj/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9e7
+ l//e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/86MPP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/TVfr/0GA9P9BgPT/QYD0/0GA9P9BgPT/QYD0/0GA
+ 9P9BgPT/QYD0/0GA9P9BgPT/QYD0/0GA9P9OUur/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/8OUT/+IoZb/iKGW/4ihlv+IoZb/iKGW/4ih
+ lv+IoZb/iKGW/4ihlv+IoZb/iKGW/4ihlv+LoZP/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/17uX/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/zow8/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/Xu5f/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/OjDz/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9Sse//Zx6//2cev/9nHr//Zx6//2cev/9nH
+ r//Zx6//2cev/9nHr//Zx6//2cev/9nHr//Zx6//2cev/9nHr//Zx6//2cev/86LOf/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZ
+ bP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph
+ 7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/9OncP/Yvp3/2L6d/9i+nf/Yvp3/2L6d/9i+nf/Yvp3/2L6d/9i+nf/Yvp3/2L6d/9i+
+ nf/Yvp3/2L6d/9i+nf/Yvp3/2L6d/86KOP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/17uX/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/zow8/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/Xu5f/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/OjDz/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9e7l//e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/86M
+ PP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/1bCC/9rNvP/azbz/2s28/9rNvP/azbz/2s28/9rNvP/azbz/2s28/9rN
+ vP/azbz/2s28/9rNvP/azbz/2s28/9rNvP/azbz/zos6/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZ
+ bP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/8J/Lv/Bfi7/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/xoEv/61x
+ Kv+1dyz/yIMv/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph
+ 7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/MhTD/rnEq/61xKv+ucir/vXwt/8yFMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP+zdSv/rXEq/61xKv+tcSr/snQr/8WBL//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/SmDv/zYYw/82GMP/NhjD/zYYw/7l5LP+tcSr/rXEq/61xKv+tcSr/rXEq/7l5
+ LP/LhDD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9u8Uv/aulH/z482/82G
+ MP/NhjD/wH0t/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/7BzKv/Bfi7/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/161J/+DRYP/fzV7/1adF/82HMf/GgS//rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+1diz/yIMv/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/Tnj//4NFg/+DR
+ YP/g0WD/3MJX/9CVOv+ucSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+ucir/vXwt/8yF
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/8+PNf/g0WD/4NFg/+DRYP/g0WD/4NBf/8qoSf+wdi3/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/snQr/8WBL//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/97K
+ XP/g0WD/4NFg/+DRYP/g0WD/4NFg/9rGWv+9jzv/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/7l5LP/LhDD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/27xS/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/Qs0//s3ww/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/7BzKv/Bfi7/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8OALv+5eSz/snQr/65yKv+ucir/rnIq/65y
+ Kv/Io0b/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/ezF3/xJtC/65yK/+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+ucir/rnIq/65yKv+ucir/rnIq/65yKv+ucir/rnIq/65y
+ Kv+ucir/rnIq/65yKv+ucir/rnIq/65yKv+ucir/sHMr/7V2LP+/fS3/y4Uw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8eC
+ L/+zdSv/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/72PO//g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/1r5V/7eFNf+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+vcir/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/EgC7/rnIq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/s3ww/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/39Bf/8qo
+ Sf+wdi3/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/x4Iv/65y
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/3Mlb/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9rHWv+9kDv/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZ
+ bP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP+3fC//vpE8/8ahRf/Jpkj/yaZI/8mmSP/Jpkj/yaZI/8mm
+ SP/Jpkj/yaZI/8mmSP/bx1r/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/StlH/yaZI/8mmSP/Jpkj/yaZI/8mmSP/Jpkj/yaZI/8mmSP/Jpkj/yaZI/8mm
+ SP/Jpkj/yaZI/8mmSP/Jpkj/yaVH/8ScQv+5hzb/rnIr/61xKv+tcSr/rXEq/61xKv+tcSr/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/PjTX/2LRN/9/O
+ X//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/axlr/wphA/61yKv+tcSr/rXEq/61xKv9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph
+ 7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/0po9/9/MXf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/07hS/7B3Lv+tcSr/rXEq/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9KZPP/fz1//4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/1b1V/691LP+tcSr/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/OizP/3spb/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/y6lK/61x
+ Kv9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9euSf/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/f0F//tYAy/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhzH/3stc/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/JpUf/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PUOn/TVbr/01W6/9NVuv/TVbr/01W
+ 6/9NVuv/TVbr/01W6/9NVuv/TVbr/01W6/9NVuv/TVbr/09Q6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/1pA4/82SQv/NkkL/zZJC/82S
+ Qv/NkkL/zZJC/82SQv/NkkL/zZJC/82SQv/NkkL/zZJC/86SQv/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9GVOf/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2dl0v9ZWOD/WVjg/1lY4P+akqL/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9a/Vv9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/059A/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/Xlzb/09P6f9PT+n/T0/p/5WOp//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/3s1e/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/UokL/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9eXNv/T0/p/09P6f9PT+n/lY6n/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/9SiQv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/15c2/9PT+n/T0/p/09P6f+Vjqf/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/1KJC/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/97QYf+9sYH/n5ae/5aOpv+Vjqf/Vlbi/09P6f9PT+n/T0/p/3Ft
+ yf+Vjqf/lo+m/6adl//Lv3P/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/UokL/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+xp43/YmDX/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f94dML/y750/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9Si
+ Qv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/lI2o/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9XVuL/vbGB/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/1KJC/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/6eelf9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9YV+D/z8Fw/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/UokL/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/Yymj/WVjg/09P6f9PT+n/T0/p/09P6f9RUef/X13a/2Be2f9gXtn/YF7Z/2Be
+ 2f9gXtn/YF7Z/2Be2f9aWd7/T0/p/09P6f9PT+n/T0/p/09P6f+BfLn/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9SiQv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/6iflf9PT+n/T0/p/09P
+ 6f9PT+n/e3bA/9PFbP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+8sYL/XFvd/09P
+ 6f9PT+n/T0/p/1JR5v/WyGr/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/1KJC/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/hYC2/09P6f9PT+n/T0/p/1ta3v/azGb/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+wpo3/T0/p/09P6f9PT+n/T0/p/7ariP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P
+ 6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P
+ 6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGl5W
+ 1RrYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iP
+ NBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iP
+ NBvWjTMbzYYwGs2GMBrNhjAazYYwGs2GMBrNhjAazYYwGs2GMBrdxllx4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP94dML/T0/p/09P
+ 6f9PT+n/eXXB/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9TG
+ a/9PT+n/T0/p/09P6f9PT+n/qqCT/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/3dzw/9PT+n/T0/p/09P6f98d77/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/wLR+/09P6f9PT+n/T0/p/09P6f+xp43/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/wLR//7Op
+ iv+zqYr/s6mK/8G1ff/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9jJ
+ aP9vbMr/T0/p/09P6f9PT+n/T0/p/8y/cv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/0MNv/6yjkf+IgrP/XFrd/09P6f9PT+n/T0/p/09P6f9ua8z/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9HDb/+so5H/iIKz/2Ri1f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/UFDo/7uwg//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/RxG7/raOR/4iC
+ s/9kYtX/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bk6H/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/BtX7/dXHF/1BQ6P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9YV+H/qJ+V/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/pJuZ/1FR5/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/1dW4v95dML/oZmb/9bIav/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/7Gnjf9QT+j/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9XVuL/eXXB/52V
+ n//BtX3/3s9i/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/ay2b/XFvd/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/V1bh/3l1wf+dlZ//wrZ9/97PYv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/6mflP9PT+n/T0/p/09P6f9PT+n/a2jO/76ygf/ez2L/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/g324/09P6f9PT+n/T0/p/1ZW
+ 4v/Uxmz/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/XyWj/Y2HW/2Nh
+ 1v9jYdb/Y2HW/7Wqif/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP9yb8j/T0/p/09P6f9PT+n/eHTC/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/9bIav9PT+n/T0/p/09P6f9PT+n/rqSP/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/3ZyxP9PT+n/T0/p/09P
+ 6f9ua8v/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/xrp4/09P
+ 6f9PT+n/T0/p/09P6f+1qon/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/joeu/09P6f9PT+n/T0/p/09P6f+1q4j/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/97QYf9+eb3/T0/p/09P6f9PT+n/T0/p/83Acv/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+9soH/T0/p/09P
+ 6f9PT+n/T0/p/1JS5v+GgLX/oJed/6CYnP+gmJz/oJic/6CYnP+gmJz/oJic/6CYnP+bk6H/bWrM/09P
+ 6f9PT+n/T0/p/09P6f9raM7/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP91ccX/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/7Sqif/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9DC
+ b/9eXdr/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f+Nh67/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/83Acv9sac3/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9RUef/l5Cl/9/QYf/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/97QYv+to5D/eXXB/11b3P9UU+X/U1Pl/09P6f9PT+n/T0/p/09P6f9RUef/U1Pl/1VV
+ 4/9nZNP/jYav/8m8dv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/Xlzb/09P6f9PT+n/T0/p/5WOp//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9eXNv/T0/p/09P6f9PT+n/lY6n/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYF/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/15c2/9PT+n/T0/p/09P6f+Vjqf/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYPsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgR+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/Xlzb/09P6f9PT+n/T0/p/5WO
+ p//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg4gAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WAU4NFg/ODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP+vpY7/qaCU/6mglP+poJT/xLh7/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WCsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADg0WC64NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYFYAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYD/g0WD+4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WDW4NFgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAODRYJXg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg+eDRYDgAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgBeDRYKzg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYPng0WBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgAuDRYHjg0WD14NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WDW4NFgOAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YBng0WB84NFgxuDRYPDg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/ODR
+ YOTg0WCu4NFgV+DRYAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////wAAAAAAAAA////////
+ ///8AAAAAAAAAP///////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP//
+ /////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAA
+ AAD///////////wAAAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAAAAD///////////wA
+ AAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAAAAD///////////wAAAAAAAAA////////
+ ///8AAAAAAAAAP///////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP//
+ /////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAA
+ AAD///////////4AAAAAAAAA///////////+AAAAAAAAAP///////////wAAAAAAAAH///////////8A
+ AAAAAAAD////////////gAAAAAAAB////////////+AAAAAAAA8oAAAAQAAAAIAAAAABACAAAAAAAABA
+ AAAAAAAAAAAAAAAAAAAAAAAAT0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/TEzl/0dH4P9JSeL/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/8yGMf/KhDD/1Iwz/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/RUXc/zo6z/86Os//OjrP/z4+1P9NTeb/T0/p/09P
+ 6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/0ooy/7N1K/+tcSr/rXEq/65yKv/HgzD/2Y80/9mP
+ NP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/Skrj/zo6z/86Os//OjrP/zo6
+ z/86Os//QEDX/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/7Z3LP+tcSr/rXEq/61x
+ Kv+tcSr/rnEq/9KKMv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/0RE
+ 2/86Os//OjrP/zo6z/86Os//OjrP/zo60P9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9WM
+ M/+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv/GgjD/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9ERNv/OjrP/zo6z/86Os//OjrP/zo6z/87O9D/T0/p/09P6f9PT+n/T0/p/5ty
+ hf/ZjzT/2Y80/9mPNP/WjTP/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/xoIw/9mPNP/ZjzT/2Y80/9iO
+ NP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/S0vk/zo6z/86Os//OjrP/zo6z/86Os//QkLZ/09P
+ 6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/7l5Lf+tcSr/rXEq/61xKv+tcSr/r3Iq/9SM
+ M//ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9HR+D/OzvQ/zo6
+ z/86Os//QEDX/05O6P9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/VjDP/t3gs/61x
+ Kv+tcSr/sXMr/8yGMf/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/05O6P9KSuP/TEzl/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/SijL/0Iky/9iONP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/0p9g/9Olbf/TpW3/06Vt/9Olbf/TpW3/06Vt/9Olbf/TpW3/zYcy/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/0td7P9IaO7/SGju/0ho7v9IaO7/SGju/0ho7v9PUOn/T0/p/09P
+ 6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9OQO/+wmGX/sJhl/7CYZf+wmGX/sJhl/7CYZf/Fk0z/2Y80/9mP
+ NP/ZjzT/2I40/82GMP/NhjD/zYYw/9rNvP/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/86J
+ Nv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/ZxKj/3NTI/9zUyP/c1Mj/3NTI/9zU
+ yP/c1Mj/3NTI/9zUyP/OiTX/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mP
+ NP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P
+ 6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mP
+ NP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L
+ 9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KU
+ UP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5ty
+ hf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iO
+ NP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T
+ 6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ih
+ lv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mP
+ NP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82G
+ MP/RnFv/0qJn/9KiZ//Somf/0qJn/9KiZ//Somf/0qJn/9KiZ//NhzL/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P
+ 6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mP
+ NP/YjjT/zYYw/82GMP/NhjD/2s28/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/zok2/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/9nGrf/c187/3NfO/9zXzv/c187/3NfO/9zX
+ zv/c187/3NfO/86JNf/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP++fC3/xoEv/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P
+ 6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mP
+ NP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/vnwt/61xKv+6eiz/y4Uw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/VpUT/zogx/8WBLv+tcSr/rXEq/7BzK//Cfy7/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/2rtS/93GWf/QmDz/rXEq/61xKv+tcSr/rXEq/7Z3
+ LP/Jgy//zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mP
+ NP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9esSP/g0WD/4NFg/82t
+ TP+xeS7/rXEq/61xKv+tcSr/rnIq/758Lf/MhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P
+ 6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mP
+ NP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/FgS//v3wt/718
+ Lf/HlT3/4NFg/+DRYP/g0WD/3Mpc/8CVPv+tcSr/rXEq/61xKv+tcSr/s3Ur/718Lf+9fC3/vXwt/718
+ Lf+9fC3/vXwt/718Lf++fC3/wH0u/8mDL/9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8uE
+ MP+1dyz/rXEq/61xKv+tcSr/snsw/+DRYP/g0WD/4NFg/+DRYP/g0WD/07lS/7WAMv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/T0/p/09P6f9PT+n/T0/p/z2L
+ 9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KU
+ UP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP+6gDH/uoo4/7uMOf+7jDn/u4w5/7uMOf/ezF3/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/fzl//x6JF/7uMOf+7jDn/u4w5/7uMOf+7jDn/u4w5/7uMOf+7izn/toEz/61xKv+tcSr/rXEq/09P
+ 6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5ty
+ hf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iO
+ NP/NhjD/zYYw/82GMP/NhjD/zYYw/86LM//Zt1D/4NBg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/XwFb/t4U1/61xKv9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T
+ 6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ih
+ lv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82HMf/cwVX/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/93MXf+1gDL/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/UoUH/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/z7JO/09P6f9PT+n/T0/p/09P
+ 6f9OUen/TlPq/05T6v9OU+r/TlPq/05T6v9OU+r/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mP
+ NP/YjzX/05A7/9OQO//TkDv/05A7/9OQO//TkDv/1pA3/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82G
+ MP/NhjD/2bZO/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/6GZ
+ m/9UU+T/dnLE/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/93M
+ Xf9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/YjjT/zYYw/82GMP/NhjD/zYYw/9q6Uf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP+fl53/T0/p/3JuyP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/aulH/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/1MZr/5OMqf91ccb/YmDX/09P6f9XV+H/cm/I/4R+t//BtX7/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/2rpR/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/0sRt/2Be2f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/UVHn/7Gnjf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/zYYw/9q6Uf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/4qEsf9PT+n/Wlnf/5mR
+ o/+gmJ3/oJid/6CYnf+elp7/bmrM/09P6f9cW9z/3c9i/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/T0/pjU9P6Y1PT+mNT0/pjU9P6Y1PT+mNT0/pjU9P6Y1PT+mNT0/pjU9P6Y1PT+mNT0/pjU9P
+ 6Y1PT+mNm3KFjdmPNI3ZjzSN2Y80jdmPNI3ZjzSN2Y80jdmPNI3ZjzSN2Y80jdmPNI3ZjzSN2Y80jdmP
+ NI3ZjzSN2I40jc2GMI3NhjCNzYYwjc2GMI3cwlbc4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP9nZNL/T0/p/6Sbmf/g0WD/4NFg/+DRYP/g0WD/4NFg/9HEbv9PT+n/T0/p/8i7d//g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgsODRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/joit/4F8uv+/tH//4NFg/+DRYP/g0WD/4NFg/+DRYP+6r4T/T0/p/09P
+ 6f/PwnD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YLDg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/czmT/vbKB/5mR
+ o/91ccb/UlLm/09P6f9ybsj/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WCw4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/2Mpn/52V
+ n/91ccX/VFTk/09P6f9PT+n/T0/p/09P6f9nZdL/z8Jw/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgsODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/1MZr/2Vj1P9PT+n/T0/p/09P6f9RUef/bWrN/5GKq/+2rIf/3c9i/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYLDg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/4uFsP9PT+n/VlXi/5CKq/+2q4j/2Mpo/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADg0WCw4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9lY9T/T0/p/6GYnP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/9vNZP9ZWOD/WVjg/8m8dv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgsODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/aWbR/09P
+ 6f+Vjqf/4NFg/+DRYP/g0WD/4NFg/+DRYP/BtX7/T0/p/09P6f/Rw2//4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYLDg0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/5iRpP9PT+n/UFDo/3Ftyf94dMP/eHTD/3h0w/92csT/V1bi/09P6f9vbMr/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WCw4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/czWT/enXB/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9iYNf/y750/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFgsODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+6r4T/nJSg/3h0
+ wv9PT+n/YV/Y/5qSov+to5D/2sxl/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYK/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP+fl53/T0/p/3JuyP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WCW4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/s6mK/3x3vv+Ujaj/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgPuDR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYIwAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WCR4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YNHg0WAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgAeDRYGLg0WDQ4NFg++DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD+4NFg5ODRYIzg0WAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////+AA
+ AAD/////4AAAAP/////gAAAA/////+AAAAD/////4AAAAP/////gAAAA/////+AAAAD/////4AAAAP//
+ ///gAAAA/////+AAAAD/////4AAAAP/////gAAAA/////+AAAAD/////8AAAAP/////wAAABKAAAADAA
+ AABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAE9P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/Tk7o/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/05O6P9CQtj/OzvQ/zw8
+ 0v9ISOD/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/8+IMv+0diz/r3Iq/7h5Lf/VjDP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/0VF
+ 3P86Os//OjrP/zo6z/87O9D/TU3m/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/7J0K/+tcSr/rXEq/61x
+ Kv+8ey3/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/0FB2P86Os//OjrP/zo6z/86Os//Skri/09P6f9PT+n/iGqe/9mPNP/ZjzT/1Ywz/61x
+ Kv+tcSr/rXEq/61xKv+0diz/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/0ZG3v86Os//OjrP/zo6z/87O9H/TU3n/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/7R2LP+tcSr/rXEq/61xKv++fS7/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9ERNv/PDzS/z4+1P9KSuL/T0/p/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9KKMv+4eS3/sXQr/718Lv/WjTP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/Rnl7/2sq2/9rK
+ tv/ayrb/2sq2/9rKtv/ayrb/0ZlV/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zyQ9/8zrv3/M679/zOu/f8zrv3/R2nv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yZNI/z2y8f89svH/PbLx/z2y8f9Srdf/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/Somb/3NfO/9zXzv/c187/3NfO/9zXzv/c187/0Zxc/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1
+ //8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/QlU3/1bGF/9Wxhf/VsYX/1bGF/9Wxhf/VsYX/z5JH/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1
+ //8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/TpW3/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/0p9h/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/Oizr/0JZO/9CW
+ Tv/Qlk7/0JZO/9CWTv/Qlk7/zoo4/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8yFMP+6ei3/yoQv/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/z400/82GMP+0div/r3Mq/8B+
+ Lv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/169K/9ix
+ TP+8fy//rXEq/61xKv+1div/yIIv/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1
+ //8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/1KFB/+DRYP/bx1r/vpE8/61yKv+tcSr/rnEq/7x7Lf/MhTD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/xoEv/7Z3LP+ydCv/uIIz/+DRYP/g0WD/4NFg/9G0UP+0fjH/rXEq/61xKv+wcyr/sXQr/7F0
+ K/+xdCv/sXQr/7F0K/+ydCv/uXks/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/HgzD/t4M0/7iFNf+4hTX/uIY2/9/OX//g0WD/4NFg/+DRYP/dzF3/xZ1D/7iF
+ Nf+4hTX/uIU1/7iFNf+4hTX/t4U1/7J6L/+tcSr/rXEq/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/9OcPv/eylv/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DQYP/Or03/r3Us/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/z482/9/OXv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/yqdI/09P
+ 6f9PT+n/T0/p/0li7f9Ha+//R2vv/0dr7/9Ha+//TVfr/09P6f9PT+n/iGqe/9mPNP/ZjzT/1JA6/6uZ
+ bP+rmWz/q5ls/6uZbP+xmGT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/1ahF/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/6Kamv93c8P/2ctn/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/3Mpc/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/161J/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/2Mpo/4eBtP9PT+n/zcBy/9zOY//g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/161J/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9XHa/95dcH/UlHm/09P6f9PT+n/T0/p/11b
+ 3P+roZL/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/161J/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/4V/tv9QUOj/fnm9/4yF
+ sP+MhbD/i4Ww/2Be2f9TUub/yr11/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6WpPT+lqT0/pak9P
+ 6WpPT+lqT0/pak9P6WpPT+lqT0/pak9P6WpPT+lqiGqeatmPNGrZjzRq2Y80atmPNGrZjzRq2Y80atmP
+ NGrZjzRq2Y80atmPNGrZjzRqz4gxas2GMGrNhjBq27xTt+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2Be
+ 2f9sac3/4NFg/+DRYP/g0WD/4NFg/7Gnjf9PT+n/qqCT/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/8G1fv/GuXn/4NFg/+DRYP/XyWj/uK2F/3Rwxv9PT+n/v7N//+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/GuXn/lI2o/3Bsyv9UVOT/T0/p/09P6f+Mhq//39Bh/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/7Ooi/9SUeb/T0/p/1ta3f98d77/oJic/8e7
+ d//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2toz/9aWd//v7R//93O
+ Y//g0WD/4NFg/87Bcf+fl53/x7t3/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2Ff
+ 2P9mZNP/3s9i/+DRYP/g0WD/4NFg/6mglP9PT+n/rqWP/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/5KLqv9PT+n/YmDX/25qzP9uasz/bWrN/1NT5f9bWd7/1MZr/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/9zNZP+Vjqf/Z2XS/1dW4f9PT+n/YmDX/3h0wv/Dt3v/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/4uFsP9PT+n/1shp/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgZ+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/7Sq
+ if+Vjqf/28xl/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg4QAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgEODRYOPg0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFgbwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYCfg0WC34NFg+ODR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YOHg0WBv4NFgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////wAAAAAD////AAAAAAP///8AAAAAA////wAAAAAD////AAAAAAP///8AAAAAA////wAAA
+ AAD////AAAAAAP///8AAAAAA////wAAAAAD////gAAAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAA
+ AAAAAAAAAAAAAAAAAABPT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/dWG3/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/SijL/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f91Ybf/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/3Vh
+ t//ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/0ooy/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/0xM5v9CQtn/RETb/05O
+ 6P9PT+n/dWG3/9mPNP/ZjzT/zYcx/7x7Lf/JhDD/2Y80/9mPNP/SijL/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/QEDX/zo6
+ z/86Os//Rkbe/09P6f91Ybf/2Y80/9iONP+vcyv/rXEq/61xKv/SizP/2Y80/9KKMv/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9BQdf/OjrP/zo6z/9HR9//T0/p/3Vht//ZjzT/2I40/7BzK/+tcSr/rXEq/9OLM//ZjzT/0ooy/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/01N5/9DQ9v/RUXd/09P6f9PT+n/dWG3/9mPNP/ZjzT/0Iky/799Lv/LhjH/2Y80/9mP
+ NP/SijL/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f91Ybf/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/3Vht//ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/0ooy/82GMP/QlEv/0JZO/9CWTv/Qlk7/z45A/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/0CB9P88jvf/PI73/0Vw8P9PT+n/dWG3/9mP
+ NP/SkT3/caey/3Gnsv9xp7L/wJVS/9mPNP/SijL/zYYw/9vRw//d2tT/3drU/93a1P/VsYX/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/N6D6/zG1//8xtf//P4T0/09P
+ 6f91Ybf/2Y80/82SQv8xtf//MbX//zG1//+wmGX/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f83oPr/MbX//zG1
+ //8/hPT/T0/p/3Vht//ZjzT/zZJC/zG1//8xtf//MbX//7CYZf/ZjzT/0ooy/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/zeg
+ +v8xtf//MbX//z+E9P9PT+n/dWG3/9mPNP/NkkL/MbX//zG1//8xtf//sJhl/9mPNP/SijL/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/N6D6/zG1//8xtf//P4T0/09P6f91Ybf/2Y80/82SQv8xtf//MbX//zG1//+wmGX/2Y80/9KK
+ Mv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f83oPr/MbX//zG1//8/hPT/T0/p/3Vht//ZjzT/zZJC/zG1//8xtf//MbX//7CY
+ Zf/ZjzT/0ooy/82GMP/Xu5f/2MGj/9jBo//YwaP/06Rs/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/zeg+v8xtf//MbX//z+E9P9PT+n/dWG3/9mPNP/NkkL/MbX//zG1
+ //8xtf//sJhl/9mPNP/SijL/zYYw/9Sqd//Vrn//1a5//9Wuf//Rm1n/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/N6D6/zG1//8xtf//P4T0/09P6f91Ybf/2Y80/82S
+ Qv8xtf//MbX//zG1//+wmGX/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/FgS//v30t/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f83oPr/MbX//zG1//8/hPT/T0/p/3Vh
+ t//ZjzT/zZJC/zG1//8xtf//MbX//7CYZf/ZjzT/0ooy/82GMP/NhjD/zYYw/82GMP/NhjD/0ps9/9Ca
+ Pf+tcSr/s3Ur/8aCL//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/zeg+v8xtf//MbX//z+E
+ 9P9PT+n/dWG3/9mPNP/NkkL/MbX//zG1//8xtf//sJhl/9mPNP/SijL/zYYw/82GMP/NhjD/zYYw/8iC
+ L//KkTj/4NFg/8+wTv+yei//rXEq/7t6Lf/FgS//xYEv/8WBL//FgS//yYMv/09P6f9PT+n/N6D6/zG1
+ //8xtf//P4T0/09P6f91Ybf/2Y80/82SQv8xtf//MbX//zG1//+wmGX/2Y80/9KKMv/NhjD/zYYw/82G
+ MP+9gTH/tH4x/7WBM//f0F//4NFg/93LXf/CmED/tH4x/7R+Mf+0fjH/tH4x/691LP+tcSr/T0/p/09P
+ 6f83oPr/MbX//zG1//8/hPT/T0/p/3Vht//ZjzT/zZJC/zG1//8xtf//MbX//7CYZf/ZjzT/0ooy/82G
+ MP/NhjD/2bVO/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/3s1e/76Q
+ PP9PT+n/T0/p/0N58v8/hPT/P4T0/0dq7/9PT+n/dWG3/9mPNP/TkDv/gqOd/4Kjnf+Co53/xJRN/9mP
+ NP/SijL/zYYw/9KZPP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+tpJD/xbl5/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/28hb/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f91Ybf/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9KKMv/NhjD/1KBB/+DRYP/g0WD/4NFg/+DRYP/dzmP/sqiM/2hl0v+HgbT/wbV9/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/3Vht//ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/0ooy/82GMP/UoEH/4NFg/+DRYP/g0WD/4NFg/4N9uP9kYtX/d3PD/3dz
+ w/9XVuH/s6iL/+DRYP/g0WD/4NFg/+DRYP9PT+lGT0/pRk9P6UZPT+lGT0/pRk9P6UZPT+lGdWG3RtmP
+ NEfZjzRH2Y80R9mPNEfZjzRH2Y80R9mPNEfSijJGzYYwRtm3T4bg0WD/4NFg/+DRYP/g0WD/cW7J/8m8
+ dv/g0WD/4NFg/4qEsf+Nh67/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgWODRYP/g0WD/4NFg/+DR
+ YP/ez2L/taqJ/4+JrP9raM//VlXi/8C0fv/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBY4NFg/+DR
+ YP/g0WD/4NFg/4V/tv9hX9j/i4Ww/7Cmjv/Vx2r/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YFjg0WD/4NFg/+DRYP/g0WD/W1re/72ygf/g0WD/4NFg/5GKq/+Qiqv/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFgWODRYP/g0WD/4NFg/+DRYP+Piaz/WFfh/2Nh1v9jYdb/VlXj/7+zgP/g0WD/4NFg/+DR
+ YP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WBY4NFg/+DRYP/g0WD/4NFg/+DRYP/FuXn/bWrM/5OMqP/SxG3/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYDXg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+8sYL/zcBy/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYH3g0WDy4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYNvg0WA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP//gAD//4AA//+AAP//gAD//4AA//+AAP//wAAoAAAAEAAAACAAAAABACAAAAAAAAAE
+ AAAAAAAAAAAAAAAAAAAAAAAAT0/p/09P6f9PT+n/YljQ/9mPNP/ZjzT/2Y80/9aNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9LS+T/TEzl/2JY0P/ZjzT/z4gy/9WMM//WjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/PT3T/0BA1/9iWND/2Y80/65yKv/Afi7/1o0z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/0xM5f9NTeb/YljQ/9mPNP/QiTL/1o0z/9aN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9Ha+//SGfu/2JY0P/Xjzb/pZtz/7mW
+ W//WjTP/0Zxc/9a4kf/UrHr/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/NKr9/zic+v9iWND/05A7/zG1
+ //9xp7L/1o0z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/zSq/f84nPr/YljQ/9OQ
+ O/8xtf//caey/9aNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f80qv3/OJz6/2JY
+ 0P/TkDv/MbX//3Gnsv/WjTP/0Zxc/9a4kf/UrHr/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/NKr9/zic
+ +v9iWND/05A7/zG1//9xp7L/1o0z/82GMP/NhjD/zosz/8CCMf/FgS7/zYYw/82GMP/NhjD/T0/p/zSq
+ /f84nPr/YljQ/9OQO/8xtf//caey/9aNM//NhjD/yYUw/7+FM//byFv/v5Q9/7p+MP+9gDD/u3st/09P
+ 6f87lPj/Por2/2JY0P/VkDn/WqzO/4qhlP/WjTP/zosz/97KW//g0WD/4NFg/83Acv/g0WD/4NFg/9a9
+ Vf9PT+n/T0/p/09P6f9iWND/2Y80/9mPNP/ZjzT/1o0z/9CTOP/g0WD/4NFg/52Vn/93c8P/q6GS/+DR
+ YP/g0WD/T0/pI09P6SNPT+kjYljQI9mPNCPZjzQj2Y80I9aNMyPYs01J4NFg/+DRYP+zqYr/r6WP/4uF
+ sP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgLODRYP/g0WD/gHu7/7+z
+ f/+2q4j/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYCzg0WD/4NFg/6Oa
+ mv9ybsj/saeM/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WAN4NFg2+DR
+ YP/g0WD/0sVt/+DRYP/g0WD/4NFgvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAA=
+
+
+
+ 22, 27
+
+
\ No newline at end of file
diff --git a/app/view/winform/Form1.Designer.cs b/app/view/winform/Form1.Designer.cs
index 5ee9c4d..c8fd1d3 100644
--- a/app/view/winform/Form1.Designer.cs
+++ b/app/view/winform/Form1.Designer.cs
@@ -30,27 +30,29 @@ protected override void Dispose(bool disposing)
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SIPP));
this.guna2Panel1 = new Guna.UI2.WinForms.Guna2Panel();
+ this.guna2Panel3 = new Guna.UI2.WinForms.Guna2Panel();
+ this.guna2HtmlLabel1 = new Guna.UI2.WinForms.Guna2HtmlLabel();
+ this.guna2Panel2 = new Guna.UI2.WinForms.Guna2Panel();
+ this.Minimize = new Guna.UI2.WinForms.Guna2ControlBox();
+ this.Maximize = new Guna.UI2.WinForms.Guna2ControlBox();
+ this.Close = new Guna.UI2.WinForms.Guna2ControlBox();
+ this.guna2DragControl1 = new Guna.UI2.WinForms.Guna2DragControl(this.components);
+ this.guna2ShadowForm1 = new Guna.UI2.WinForms.Guna2ShadowForm(this.components);
+ this.Badan_panel = new Guna.UI2.WinForms.Guna2Panel();
+ this.guna2ResizeForm1 = new Guna.UI2.WinForms.Guna2ResizeForm(this.components);
this.Tombol_Backup = new Guna.UI2.WinForms.Guna2Button();
this.Tombol_Truncate = new Guna.UI2.WinForms.Guna2Button();
this.Tombol_Laporan = new Guna.UI2.WinForms.Guna2Button();
this.Tombol_CariP = new Guna.UI2.WinForms.Guna2Button();
this.Tombol_DataP = new Guna.UI2.WinForms.Guna2Button();
this.Tombol_Dashboard = new Guna.UI2.WinForms.Guna2Button();
- this.guna2Panel3 = new Guna.UI2.WinForms.Guna2Panel();
this.guna2PictureBox1 = new Guna.UI2.WinForms.Guna2PictureBox();
- this.guna2HtmlLabel1 = new Guna.UI2.WinForms.Guna2HtmlLabel();
- this.guna2Panel2 = new Guna.UI2.WinForms.Guna2Panel();
- this.guna2ControlBox1 = new Guna.UI2.WinForms.Guna2ControlBox();
- this.guna2DragControl1 = new Guna.UI2.WinForms.Guna2DragControl(this.components);
- this.guna2ShadowForm1 = new Guna.UI2.WinForms.Guna2ShadowForm(this.components);
- this.Badan_panel = new Guna.UI2.WinForms.Guna2Panel();
- this.guna2ControlBox2 = new Guna.UI2.WinForms.Guna2ControlBox();
- this.guna2ControlBox3 = new Guna.UI2.WinForms.Guna2ControlBox();
this.guna2Panel1.SuspendLayout();
this.guna2Panel3.SuspendLayout();
- ((System.ComponentModel.ISupportInitialize)(this.guna2PictureBox1)).BeginInit();
this.guna2Panel2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.guna2PictureBox1)).BeginInit();
this.SuspendLayout();
//
// guna2Panel1
@@ -70,10 +72,113 @@ private void InitializeComponent()
this.guna2Panel1.Size = new System.Drawing.Size(288, 914);
this.guna2Panel1.TabIndex = 0;
//
+ // guna2Panel3
+ //
+ this.guna2Panel3.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel3.Controls.Add(this.guna2PictureBox1);
+ this.guna2Panel3.Controls.Add(this.guna2HtmlLabel1);
+ this.guna2Panel3.Dock = System.Windows.Forms.DockStyle.Top;
+ this.guna2Panel3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.guna2Panel3.Location = new System.Drawing.Point(0, 0);
+ this.guna2Panel3.Name = "guna2Panel3";
+ this.guna2Panel3.ShadowDecoration.Parent = this.guna2Panel3;
+ this.guna2Panel3.Size = new System.Drawing.Size(288, 103);
+ this.guna2Panel3.TabIndex = 2;
+ //
+ // guna2HtmlLabel1
+ //
+ this.guna2HtmlLabel1.AutoSize = false;
+ this.guna2HtmlLabel1.BackColor = System.Drawing.Color.Transparent;
+ this.guna2HtmlLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.guna2HtmlLabel1.ForeColor = System.Drawing.Color.White;
+ this.guna2HtmlLabel1.Location = new System.Drawing.Point(124, 23);
+ this.guna2HtmlLabel1.Name = "guna2HtmlLabel1";
+ this.guna2HtmlLabel1.Size = new System.Drawing.Size(283, 81);
+ this.guna2HtmlLabel1.TabIndex = 0;
+ this.guna2HtmlLabel1.Text = "SIPP";
+ //
+ // guna2Panel2
+ //
+ this.guna2Panel2.Controls.Add(this.Minimize);
+ this.guna2Panel2.Controls.Add(this.Maximize);
+ this.guna2Panel2.Controls.Add(this.Close);
+ this.guna2Panel2.Dock = System.Windows.Forms.DockStyle.Top;
+ this.guna2Panel2.FillColor = System.Drawing.Color.White;
+ this.guna2Panel2.Location = new System.Drawing.Point(288, 0);
+ this.guna2Panel2.Name = "guna2Panel2";
+ this.guna2Panel2.ShadowDecoration.Parent = this.guna2Panel2;
+ this.guna2Panel2.Size = new System.Drawing.Size(1479, 52);
+ this.guna2Panel2.TabIndex = 1;
+ //
+ // Minimize
+ //
+ this.Minimize.ControlBoxType = Guna.UI2.WinForms.Enums.ControlBoxType.MinimizeBox;
+ this.Minimize.Dock = System.Windows.Forms.DockStyle.Right;
+ this.Minimize.FillColor = System.Drawing.Color.White;
+ this.Minimize.HoverState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Minimize.HoverState.IconColor = System.Drawing.Color.White;
+ this.Minimize.HoverState.Parent = this.Minimize;
+ this.Minimize.IconColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.Minimize.Location = new System.Drawing.Point(1257, 0);
+ this.Minimize.Name = "Minimize";
+ this.Minimize.ShadowDecoration.Parent = this.Minimize;
+ this.Minimize.Size = new System.Drawing.Size(74, 52);
+ this.Minimize.TabIndex = 2;
+ //
+ // Maximize
+ //
+ this.Maximize.ControlBoxType = Guna.UI2.WinForms.Enums.ControlBoxType.MaximizeBox;
+ this.Maximize.Dock = System.Windows.Forms.DockStyle.Right;
+ this.Maximize.FillColor = System.Drawing.Color.White;
+ this.Maximize.HoverState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Maximize.HoverState.IconColor = System.Drawing.Color.White;
+ this.Maximize.HoverState.Parent = this.Maximize;
+ this.Maximize.IconColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.Maximize.Location = new System.Drawing.Point(1331, 0);
+ this.Maximize.Name = "Maximize";
+ this.Maximize.ShadowDecoration.Parent = this.Maximize;
+ this.Maximize.Size = new System.Drawing.Size(74, 52);
+ this.Maximize.TabIndex = 1;
+ //
+ // Close
+ //
+ this.Close.Dock = System.Windows.Forms.DockStyle.Right;
+ this.Close.FillColor = System.Drawing.Color.White;
+ this.Close.HoverState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Close.HoverState.IconColor = System.Drawing.Color.White;
+ this.Close.HoverState.Parent = this.Close;
+ this.Close.IconColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.Close.Location = new System.Drawing.Point(1405, 0);
+ this.Close.Name = "Close";
+ this.Close.ShadowDecoration.Parent = this.Close;
+ this.Close.Size = new System.Drawing.Size(74, 52);
+ this.Close.TabIndex = 0;
+ this.Close.Click += new System.EventHandler(this.Close_Click);
+ //
+ // guna2DragControl1
+ //
+ this.guna2DragControl1.ContainerControl = this;
+ this.guna2DragControl1.DockForm = true;
+ this.guna2DragControl1.TargetControl = this.guna2Panel2;
+ //
+ // Badan_panel
+ //
+ this.Badan_panel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.Badan_panel.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.Badan_panel.Location = new System.Drawing.Point(288, 52);
+ this.Badan_panel.Name = "Badan_panel";
+ this.Badan_panel.ShadowDecoration.Parent = this.Badan_panel;
+ this.Badan_panel.Size = new System.Drawing.Size(1479, 862);
+ this.Badan_panel.TabIndex = 2;
+ //
+ // guna2ResizeForm1
+ //
+ this.guna2ResizeForm1.TargetForm = this;
+ //
// Tombol_Backup
//
this.Tombol_Backup.BackColor = System.Drawing.Color.Transparent;
- this.Tombol_Backup.BorderRadius = 10;
+ this.Tombol_Backup.BorderRadius = 3;
this.Tombol_Backup.CheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
this.Tombol_Backup.CheckedState.ForeColor = System.Drawing.Color.White;
this.Tombol_Backup.CheckedState.Image = global::SIPP.Properties.Resources.icons8_print_100px_1;
@@ -101,7 +206,7 @@ private void InitializeComponent()
// Tombol_Truncate
//
this.Tombol_Truncate.BackColor = System.Drawing.Color.Transparent;
- this.Tombol_Truncate.BorderRadius = 10;
+ this.Tombol_Truncate.BorderRadius = 3;
this.Tombol_Truncate.CheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
this.Tombol_Truncate.CheckedState.ForeColor = System.Drawing.Color.White;
this.Tombol_Truncate.CheckedState.Image = global::SIPP.Properties.Resources.icons8_print_100px_1;
@@ -129,7 +234,7 @@ private void InitializeComponent()
// Tombol_Laporan
//
this.Tombol_Laporan.BackColor = System.Drawing.Color.Transparent;
- this.Tombol_Laporan.BorderRadius = 10;
+ this.Tombol_Laporan.BorderRadius = 3;
this.Tombol_Laporan.ButtonMode = Guna.UI2.WinForms.Enums.ButtonMode.RadioButton;
this.Tombol_Laporan.CheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
this.Tombol_Laporan.CheckedState.ForeColor = System.Drawing.Color.White;
@@ -158,7 +263,7 @@ private void InitializeComponent()
// Tombol_CariP
//
this.Tombol_CariP.BackColor = System.Drawing.Color.Transparent;
- this.Tombol_CariP.BorderRadius = 10;
+ this.Tombol_CariP.BorderRadius = 3;
this.Tombol_CariP.ButtonMode = Guna.UI2.WinForms.Enums.ButtonMode.RadioButton;
this.Tombol_CariP.CheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
this.Tombol_CariP.CheckedState.ForeColor = System.Drawing.Color.White;
@@ -187,7 +292,7 @@ private void InitializeComponent()
// Tombol_DataP
//
this.Tombol_DataP.BackColor = System.Drawing.Color.Transparent;
- this.Tombol_DataP.BorderRadius = 10;
+ this.Tombol_DataP.BorderRadius = 3;
this.Tombol_DataP.ButtonMode = Guna.UI2.WinForms.Enums.ButtonMode.RadioButton;
this.Tombol_DataP.CheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
this.Tombol_DataP.CheckedState.ForeColor = System.Drawing.Color.White;
@@ -216,7 +321,7 @@ private void InitializeComponent()
// Tombol_Dashboard
//
this.Tombol_Dashboard.BackColor = System.Drawing.Color.Transparent;
- this.Tombol_Dashboard.BorderRadius = 10;
+ this.Tombol_Dashboard.BorderRadius = 3;
this.Tombol_Dashboard.ButtonMode = Guna.UI2.WinForms.Enums.ButtonMode.RadioButton;
this.Tombol_Dashboard.CheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
this.Tombol_Dashboard.CheckedState.ForeColor = System.Drawing.Color.White;
@@ -242,23 +347,10 @@ private void InitializeComponent()
this.Tombol_Dashboard.TextAlign = System.Windows.Forms.HorizontalAlignment.Left;
this.Tombol_Dashboard.Click += new System.EventHandler(this.Tombol_Dashboard_Click);
//
- // guna2Panel3
- //
- this.guna2Panel3.BackColor = System.Drawing.Color.Transparent;
- this.guna2Panel3.Controls.Add(this.guna2PictureBox1);
- this.guna2Panel3.Controls.Add(this.guna2HtmlLabel1);
- this.guna2Panel3.Dock = System.Windows.Forms.DockStyle.Top;
- this.guna2Panel3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
- this.guna2Panel3.Location = new System.Drawing.Point(0, 0);
- this.guna2Panel3.Name = "guna2Panel3";
- this.guna2Panel3.ShadowDecoration.Parent = this.guna2Panel3;
- this.guna2Panel3.Size = new System.Drawing.Size(288, 103);
- this.guna2Panel3.TabIndex = 2;
- //
// guna2PictureBox1
//
- this.guna2PictureBox1.Image = global::SIPP.Properties.Resources.icons8_inscription_100px;
- this.guna2PictureBox1.Location = new System.Drawing.Point(35, 12);
+ this.guna2PictureBox1.Image = global::SIPP.Properties.Resources.binder_4x;
+ this.guna2PictureBox1.Location = new System.Drawing.Point(25, 12);
this.guna2PictureBox1.Name = "guna2PictureBox1";
this.guna2PictureBox1.ShadowDecoration.Parent = this.guna2PictureBox1;
this.guna2PictureBox1.Size = new System.Drawing.Size(70, 73);
@@ -266,90 +358,6 @@ private void InitializeComponent()
this.guna2PictureBox1.TabIndex = 0;
this.guna2PictureBox1.TabStop = false;
//
- // guna2HtmlLabel1
- //
- this.guna2HtmlLabel1.AutoSize = false;
- this.guna2HtmlLabel1.BackColor = System.Drawing.Color.Transparent;
- this.guna2HtmlLabel1.Font = new System.Drawing.Font("Microsoft Sans Serif", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
- this.guna2HtmlLabel1.ForeColor = System.Drawing.Color.White;
- this.guna2HtmlLabel1.Location = new System.Drawing.Point(124, 23);
- this.guna2HtmlLabel1.Name = "guna2HtmlLabel1";
- this.guna2HtmlLabel1.Size = new System.Drawing.Size(283, 81);
- this.guna2HtmlLabel1.TabIndex = 0;
- this.guna2HtmlLabel1.Text = "SIPP";
- //
- // guna2Panel2
- //
- this.guna2Panel2.Controls.Add(this.guna2ControlBox3);
- this.guna2Panel2.Controls.Add(this.guna2ControlBox2);
- this.guna2Panel2.Controls.Add(this.guna2ControlBox1);
- this.guna2Panel2.Dock = System.Windows.Forms.DockStyle.Top;
- this.guna2Panel2.FillColor = System.Drawing.Color.White;
- this.guna2Panel2.Location = new System.Drawing.Point(288, 0);
- this.guna2Panel2.Name = "guna2Panel2";
- this.guna2Panel2.ShadowDecoration.Parent = this.guna2Panel2;
- this.guna2Panel2.Size = new System.Drawing.Size(1479, 52);
- this.guna2Panel2.TabIndex = 1;
- //
- // guna2ControlBox1
- //
- this.guna2ControlBox1.Dock = System.Windows.Forms.DockStyle.Right;
- this.guna2ControlBox1.FillColor = System.Drawing.Color.White;
- this.guna2ControlBox1.HoverState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
- this.guna2ControlBox1.HoverState.IconColor = System.Drawing.Color.White;
- this.guna2ControlBox1.HoverState.Parent = this.guna2ControlBox1;
- this.guna2ControlBox1.IconColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
- this.guna2ControlBox1.Location = new System.Drawing.Point(1405, 0);
- this.guna2ControlBox1.Name = "guna2ControlBox1";
- this.guna2ControlBox1.ShadowDecoration.Parent = this.guna2ControlBox1;
- this.guna2ControlBox1.Size = new System.Drawing.Size(74, 52);
- this.guna2ControlBox1.TabIndex = 0;
- //
- // guna2DragControl1
- //
- this.guna2DragControl1.ContainerControl = this;
- this.guna2DragControl1.DockForm = true;
- this.guna2DragControl1.TargetControl = this.guna2Panel2;
- //
- // Badan_panel
- //
- this.Badan_panel.Dock = System.Windows.Forms.DockStyle.Fill;
- this.Badan_panel.Location = new System.Drawing.Point(288, 52);
- this.Badan_panel.Name = "Badan_panel";
- this.Badan_panel.ShadowDecoration.Parent = this.Badan_panel;
- this.Badan_panel.Size = new System.Drawing.Size(1479, 862);
- this.Badan_panel.TabIndex = 2;
- //
- // guna2ControlBox2
- //
- this.guna2ControlBox2.ControlBoxType = Guna.UI2.WinForms.Enums.ControlBoxType.MaximizeBox;
- this.guna2ControlBox2.Dock = System.Windows.Forms.DockStyle.Right;
- this.guna2ControlBox2.FillColor = System.Drawing.Color.White;
- this.guna2ControlBox2.HoverState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
- this.guna2ControlBox2.HoverState.IconColor = System.Drawing.Color.White;
- this.guna2ControlBox2.HoverState.Parent = this.guna2ControlBox2;
- this.guna2ControlBox2.IconColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
- this.guna2ControlBox2.Location = new System.Drawing.Point(1331, 0);
- this.guna2ControlBox2.Name = "guna2ControlBox2";
- this.guna2ControlBox2.ShadowDecoration.Parent = this.guna2ControlBox2;
- this.guna2ControlBox2.Size = new System.Drawing.Size(74, 52);
- this.guna2ControlBox2.TabIndex = 1;
- //
- // guna2ControlBox3
- //
- this.guna2ControlBox3.ControlBoxType = Guna.UI2.WinForms.Enums.ControlBoxType.MinimizeBox;
- this.guna2ControlBox3.Dock = System.Windows.Forms.DockStyle.Right;
- this.guna2ControlBox3.FillColor = System.Drawing.Color.White;
- this.guna2ControlBox3.HoverState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
- this.guna2ControlBox3.HoverState.IconColor = System.Drawing.Color.White;
- this.guna2ControlBox3.HoverState.Parent = this.guna2ControlBox3;
- this.guna2ControlBox3.IconColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
- this.guna2ControlBox3.Location = new System.Drawing.Point(1257, 0);
- this.guna2ControlBox3.Name = "guna2ControlBox3";
- this.guna2ControlBox3.ShadowDecoration.Parent = this.guna2ControlBox3;
- this.guna2ControlBox3.Size = new System.Drawing.Size(74, 52);
- this.guna2ControlBox3.TabIndex = 2;
- //
// SIPP
//
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
@@ -359,14 +367,15 @@ private void InitializeComponent()
this.Controls.Add(this.guna2Panel2);
this.Controls.Add(this.guna2Panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "SIPP";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "SIPP";
this.Load += new System.EventHandler(this.SIPP_Load);
this.guna2Panel1.ResumeLayout(false);
this.guna2Panel3.ResumeLayout(false);
- ((System.ComponentModel.ISupportInitialize)(this.guna2PictureBox1)).EndInit();
this.guna2Panel2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.guna2PictureBox1)).EndInit();
this.ResumeLayout(false);
}
@@ -380,7 +389,7 @@ private void InitializeComponent()
private Guna.UI2.WinForms.Guna2Button Tombol_CariP;
private Guna.UI2.WinForms.Guna2Button Tombol_DataP;
private Guna.UI2.WinForms.Guna2Panel guna2Panel2;
- private Guna.UI2.WinForms.Guna2ControlBox guna2ControlBox1;
+ private Guna.UI2.WinForms.Guna2ControlBox Close;
private Guna.UI2.WinForms.Guna2DragControl guna2DragControl1;
private Guna.UI2.WinForms.Guna2ShadowForm guna2ShadowForm1;
private Guna.UI2.WinForms.Guna2Panel Badan_panel;
@@ -388,8 +397,9 @@ private void InitializeComponent()
private Guna.UI2.WinForms.Guna2PictureBox guna2PictureBox1;
private Guna.UI2.WinForms.Guna2Button Tombol_Truncate;
private Guna.UI2.WinForms.Guna2Button Tombol_Backup;
- private Guna.UI2.WinForms.Guna2ControlBox guna2ControlBox3;
- private Guna.UI2.WinForms.Guna2ControlBox guna2ControlBox2;
+ private Guna.UI2.WinForms.Guna2ControlBox Minimize;
+ private Guna.UI2.WinForms.Guna2ControlBox Maximize;
+ private Guna.UI2.WinForms.Guna2ResizeForm guna2ResizeForm1;
}
}
diff --git a/app/view/winform/Form1.cs b/app/view/winform/Form1.cs
index 32e8271..7622afc 100644
--- a/app/view/winform/Form1.cs
+++ b/app/view/winform/Form1.cs
@@ -104,11 +104,11 @@ private void Tombol_Laporan_Click(object sender, EventArgs e)
private void Tombol_Truncate_Click(object sender, EventArgs e)
{
- DialogResult pesan = MessageBox.Show("Yakin mau mengkosongkan table di database?", "Perhatian", MessageBoxButtons.YesNo);
+ DialogResult pesan = MessageBox.Show("Yakin mau mengkosongkan table di database?", "Perhatian", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (pesan == DialogResult.Yes)
{
Truncate_Table();
- MessageBox.Show("Berhasil mengkosongkan database", "Informasi");
+ MessageBox.Show("Berhasil mengkosongkan database", "Informasi",MessageBoxButtons.OK,MessageBoxIcon.Information);
RefreshDashboard();
RefreshBarang();
}
@@ -118,5 +118,10 @@ private void Tombol_Backup_Click(object sender, EventArgs e)
{
Backup_Database();
}
+
+ private void Close_Click(object sender, EventArgs e)
+ {
+ Application.Exit();
+ }
}
}
diff --git a/app/view/winform/Form1.resx b/app/view/winform/Form1.resx
index a64c028..4df6ce9 100644
--- a/app/view/winform/Form1.resx
+++ b/app/view/winform/Form1.resx
@@ -120,7 +120,1773 @@
17, 17
+
+
+
+ AAABAAYAAAAAAAEAIAB4FgAAZgAAAICAAAABACAAKAgBAN4WAABAQAAAAQAgAChCAAAGHwEAMDAAAAEA
+ IACoJQAALmEBACAgAAABACAAqBAAANaGAQAQEAAAAQAgAGgEAAB+lwEAiVBORw0KGgoAAAANSUhEUgAA
+ AQAAAAEACAYAAABccqhmAAAWP0lEQVR42u3dWZAcd30H8G93z33sqWN1WFqt1pIP2bJkJBsfAdsFtoHY
+ gcIBDCFSpaDihEpBJU+8JE8pHvIQEkIqBCoqKsaYhMRgmxBjBRAgS9iWvLqv3R1p73tnds6ePvKwaC3J
+ q+mZnb77+6nChbWtmf+/vf3t/v/63/8WQGSxfX2Z2wA8CeB+AHcC2AggDUB0um0epgMoARgFcAHAmwBe
+ A3DkwM5urd4PEZzuBfnTvr5MGMCzAL4E4H1OtydALgP4FoBvHtjZPW+0MQOATLevL/MEgK8D2OZ0WwJs
+ FsBfA/jnAzu71ZttxAAg0+zry8SxeOB/wem20JJDAJ49sLN7ZLkfMgDIFPv6MqsBvAJgr9NtofcYA/DR
+ Azu7j9/4AwYANW1fX6YTwC8A7HC6LXRTcwAePbCz+51r/5ABQE3Z15eJADgI4CGn20KGxgDsPbCze/jq
+ H/A2DDXrb8GD3yvWAfjevr6MdPUPGAC0Yvv6MvcB+LLT7aCGPAzguav/wiEArcjn3xmAKIi/BvCg022h
+ hs0C6DmwszvLKwBaEVEQHwEPfq/qwO+uAhgAtFJ/6nQDqClf3HciI3AIQA3b15dJAJgCkHC6LdSU+0NO
+ t4A86UH47OD/xI9fxOrpyZrbfOePn4Mi+eqQ+ZCvekO28d1svw1jw9g4cqXmNoKuO91Ms+1lDYBWYrvT
+ DSBTbGMA0Ep0Od0AMkUXA4BWIup0A8gUKQYArQTvHvmDxAAgCjAGAFGAMQCIAoxjOWrYvr7MISw+VeYJ
+ kqpi6+BFbLt0DuvHhtExN4NYpXzdff2IXIGo1V5MtxyLL/1/XQDkSBRzrR0YXbcB/T3bcL73NlTDEae7
+ 2xAGADXMKwEQkSt46MghPHDkENL5nOXfV47F8Obu9+MXDz+GfDLtdPfrwgCghnkhAG4/fxoff/kHaM3N
+ 2/7d5VgcrzzxB3hz9/1O7wZDnApMviLoOj78fz/BI4d+5tjU3Vi5hE++9AK2XO7HD5/6NFRJav5DLcIi
+ IPnKUz/5Lzz6y9dcMW//3uO/xede/DfD2oKTGADkGw8f/jkeOHrI6WZc545zJ/H7P/1vp5txUwwA8oUN
+ Y8N48mcvO92MZT1w5BDuOHfK6WYsiwFAvvD0K/8BSVWb/yCLPPWTHyKkKE434z1YBCTP237xLDYPZere
+ XhcE5FPpphb3EDUNqcJC3aHTPj+L9x0/iiN73LWMIgOAPO++t35T13aFRBKvP/Ikjt99L0rx5hc0CitV
+ bL9wBo8ffBVrpiaM2/nmbxgARGaKVGVsv3jWcLuZjlX41v4vYb613bTvrobCOHXHTlzovR2ff+HbuLX/
+ fM3t14+PoHN2GjMdq5zebUtYAyBPu2X4suHYWhNEPP+p/aYe/NeSIxE8/4f7sZBqMdx2y+V+R/bTzTAA
+ yNNWTxtfep/bdgdG1m20tB2leByH7zOeHLl2cty2fVMPBgB5Wjq/YLhNf8+ttrSlv2ebcXsXrH8moREM
+ APK0em6tlWL2rGCeTyQNt4lUZVvaUi8GAHmaXMfjt212PRBUz3t2XDBF+VoMAPK0bGub4TZ3nDvpdDNd
+ i7cBydPGujYYbrNx5Ap2njyGvrt2W9qWajiCC7231dxm1OJiZKMYAORpY13rUUgkkSwWam73yR99H6V4
+ wvAAbUYu3YLvfP45p3dJQ9z7oDK51j3PfXk/gM1OtwNYnNbbOTeDjaNDNbeTVBW7TryNNdMTUMJh5FMt
+ UEI8/3EPkOcd3vsw9r512HANAEHXsfPkMew8eQyaKGJ03Ub0d/diYEsvMpu2ohyLOd0V23FJMGqYG5cE
+ +8x/fhf3nHh7xX//aiAMdPeif0svMpt6rlsE1K8YANQwNwZAeiGHr/zT1wxrAfXSRBGjXRswsOVWDHT3
+ YnCzPwOBAUANc2MAAIuPBe97/luWLMH1biD0YqC7F5nNW1HyQSAwAKhhbg0AANj9zpt45qXvWb4OnyaK
+ GOvasDRkGNy81ZNXCAwAapibAwBYnPjz6R/+O6KVsm3fqUoSzvfejjfue9jSW41mYwBQw9weAADQMTeD
+ T/z4RcNn9K0w2L0VL330GYyvXef0bjDEeQDUMDfNA7iZUjyBY/fsQWbzViRKJXTOTdu2VHj7/Bz2HD+C
+ fDKNkfW3OL0rauIVADXMC1cAN0oUC+gdvIiewYvoGbyENdMTtgTCa49+BAc/+LjT3b8pBgA1zIsBcKNU
+ fgE9mUuL/7M4EF762DN4Y+9DTnd5WQwAapgfAuBG1wbC1sFLWG1iIKiShG9+4SsYduFwgAFADfNjANzo
+ xkBYM9XcUl6jXRvwD8/9FXTBXU/g81kAomXkU2mc2LELJ3bsAvBuIGzNXELP4EWsnpqEgPqvENaPj2Dn
+ yeN45+57ne7adRgARHW4MRDSvwuEHWf6cNfpPgi68cSjh974JQOAyA8WUmn07diFvh270H1lAH/0wneQ
+ KuRr/p1bRi677r0ADADytG2XzuHuU8drbvPW7vuQ2dRjWRsym3pw4HNfxHP/+nVIWu1XhfUOXGAAEJll
+ 7eQY9hw7UnObzOYeSwMAAIY2bMaxXXuw5+3abVk/Nmz7PqrFXSVJIg87cecuw23a5uecbuZ1GADkfzat
+ xD3b3mm4TVSuOLwzrheaePrpPU43wm7nWjbhL3f/eeDCT1MUXatWmj4c1KqeksLumEKi1vGK73i5aEtb
+ InUc3KrkrsdvQgB+63Qj7CZc809qXGlBQaoj7HQzACxW441sudyPXz3wiOVt2XJ5wHCbQjJly36pV+DO
+ guQvk6vXGm5z+/nTTc/kMxJSqnjwyC+N27vKuL12YgCQp02u7kLR4J18oqbhsz84gKTBffqVEjUNn3zp
+ ++icnTbcNrPZ2rsRDbfd6QYQNUMXBJy5bYfhdl0TY/iLf/k73H3qOCRVreOT67NpOIMvHvgGdp14y3Db
+ YiKJwc1bHd1fN+I8APK8o/c+gPcdO2q4Xdv8HD77gwOoRKKYWrUGSmjldQxR09A+P4t0vv7Xfb+1a68r
+ i4BEnnbllm5c3Lq97uW/onLF8E1CZpMjEVsKkY3iEIB84eUnP+HqV30d/MDjyKVbnW7GezAAyBcm1nTh
+ 1cefdroZy7rUsw2HHnzU6WYsiwFAvnH4vt/Dr9//AaebcZ3xtevw/Kf2QxPdeai595qJaAVeeeLjqIYi
+ eORXP3O6KbiysRsHPvcFFOMJp5tyUwwA8hVdEPDTD30Mwxs24eMvv2j4jL4VNFHEr9//AfzvYx9zdV0C
+ YACQT5264270b+nFB3/1Ou5/6zeIla1/S5AuCDi7/U689uhHMNa1weldUBcGAPlWKZ7A/3z4KRz84BO4
+ /fwp3HbxDDaODKF9fgbharXpz9dEEQupFox1rcelnm04eec9mG9td7rbDWEAkO/JkQj67tqNvrt2AwAE
+ XYeoadct+/1n3/57bDCYG/A3X/0aqtdMHtJE0bXFvXoxAChwdEF4z4w8XTB+OlQJhVw/pm+Ut+OLiJrC
+ ACAKMAYAUYAxAKhhunlP05KDNEVjAFDjqrLxW3DI/aplhQFAjZMLvATwg3KubM5tQCGsQ4zb80uh5iVA
+ c8eCnq3SAtKi9SvOahAwWl3jdHeXFLOK000wXbalDfFS7f+Wus8Wki1MF80JgOimEloeM14PzQwz318P
+ NeeOe7H7O17CZ9tftfx7cmoKj/V/2+nuLsnPKtA1HYLonwPiu5/5E6ebYLvcWI5DAGqcpujITTU/lZac
+ Uy1VsTCRZwDQysxccdcbbqgxUxdnoGs6A4BWJjcpo5TzXy0gCDRFw8TZSQCcB0BNGD1rzyu3yFyjJ8dR
+ LS0O4RgAtGIL01XMDnEo4CXFuRLGTr37liQGADVl+HQB5QXOC/ACVVZx6RcD0NV3H4NmAFBTNFXHwJs5
+ yCXODnQzTdVw8ef9KGevXxmJAUBNk0saLh3JocIZgq6kVlVcONiP3NjCe37GACBTyEUVFw9nkZvk/AA3
+ Kc2XcebV88iNLv8KM3dMqSNfUOTF4UDnpijWbU8gFOH5xSm6qmP8zARG+sagKTcfnjEAyHQzVyqYH5Wx
+ alMYnZtjiCRW/hJOaoxaVTHdP4vxU+Oo5GXD7RkAZAlV0THRX8HI24NIrYqhdWMr0muSiLfFIUXc9YZc
+ L9MUDeVcBfmpPLKjOWRHcjXP+DdiAJB1BAFiog258Snkxt8tQIkhEVJYQh3rcBpaf/c6rLltte1dmx/K
+ YujtEaiyM7MhdSwe/GpVXfyXFWIAkKXEaBJitAitUlj6M03RGjpL1RJtidraH7lYxZWjQ5i9PGfr91qF
+ AUCWC6U7UVVk6Kr5dwiSnfa8d0/XdUyem8LwsdHFs65PMADIeoKIUOtaKPPj0DXzLpmjqQhCUet/hYuz
+ RQwevoLCdKH5D3MZBgDZQpBCCLV1QclOmHYlkOxMWtpmVdEwcnwUE2cnoWtNDLRdjAFAthGkEMLt66As
+ zFxXE1ipxCrrLv/nh7LIHL0CuY5baV7GACB7CSJCLauhVRJQC3PQ1ZUPCawY/8vFKi4fvYK5y/MO7iR7
+ COEYA4CcIUaTECMJaJU81NICdKXxM62ZAeDXIt9yxEgcYrwFYiTOACAHCQLEWBpiLA1dVaDLJWhKBbpS
+ BTQVun7zW4VmFgCLM0UMvmFRkU9wdjq0IIqAGIIghSGGoxAjcUB8dyIWA4BcQZBCEOJpiEjXtX3rukjT
+ 37lU5DszCV03ucgniJCSbZDiLVbsLtMwAMiT4q3N/erOD2WROXIFcsH8Ip8YTUBKdUIQ3T/lmQFAnpRY
+ YQDIRRmXjw5ZUuQTpBCkVAfEiD2Tk8zAACBPirc09qtrbZFPgJRIQ0q0w5QHHGzEACDPiSREhCL1H2iF
+ mSIyFhX5hFAUoXQnhFDzNQknMADIc+q9/NcUHcPvjGHi9LhFRb52SPH6ipZuxQAgz6mnAJidkDFyuoD8
+ 0ARg8sEvRpOQUh2eKPIZYQCQ59S6AqiWNQyfLiA7Li/OMtTNW614scjXuXgv3ScYAOQ5yxUAdR2YvlzG
+ +PkiVGXxjK8rZr20RICUaIGUaPNckc8IA4A8ZbkCYCmrYOhkAcXs9c8VrGR68Y2EcBShlHeLfEYYAOQp
+ 117+a4qOsQtFTGfKyw7zmwoAnxT5jDAAyFOuFgCvFvlqvZFIq65sCOCnIp8RBgB5SjgiYvDtBWTHa5/d
+ V1IA9GORzwgDgDxl6FS+ruO6sQKgf4t8RhgA5Cn1ntTrHf/7vchnhAFAvmR4BRCQIp8RBgD5kla9+RVA
+ kIp8RhgA5Ds3KwAGschnhAFAvvPey//gFvmMMADId64tAAa9yGeEAUC+oyuVxeXHk+0QA17kM8IAIP8R
+ wwh3rGaRrw4MAPKdULrT6SZ4hrOLlhORoxgARAHGACAKMNYAqKaOuIhndsScbsaSF06UkKv481XdTmAA
+ UE2pqIAnb4063YwlPzpbZgCYiEMAogBjABAFGAOAKMAYAEQBxgAgCjAGAFGAMQCIAozzAKimibyGr76+
+ 4HQzlsyWOAfATAwAqqmi6DgzqTT/QeRKHAIQBRgDgCjAGABEAcYAIAowBgBRgDEAiAKMAUAUYAwAogBj
+ ABAFGAOAKMAYAEQBxgAgCjAGAFGAMQCIAowBQBRgDACiAGMAEAUYA4AowBgARAHGACAKMAYAUYAxAIgC
+ jAFAFGAMAKIAYwAQBRgDgCjAGABEAcYAIAowBgBRgDEAiAKMAUAUYAwAogBjABAFWMjpBpC7tUQFPLIl
+ 6nQzlrw+UEFB1p1uhm8wAKimtriI/bvjTjdjydFhmQFgIg4BiAKMAUAUYKYMAXQd0FXB6b7YTtElVPSI
+ 5d8j62Gnu0o+ZUoAVAYSmBpION0X231j+ll8Y/pZp5tBtGIcAhAFGAOAKMAYAEQBxnkAVNNsUcM/Hik4
+ 3Ywl2QrnAJiJAUA15WUdBwdkp5tBFuEQgCjAGABEAcYAIAowBgBRgDEAiAKMAUAUYAwAogBjABAFGAOA
+ KMAYAEQBxgAgCjAGAFGAMQCIAowBQBRgDACiAGMAEAWYbQuCyNUqyrKMarUKRVWh6Ysru4iiiLAkIRIO
+ IxaNIiRJTu8T8+g61HIeajkPTS5BV2TomgZBECBIIQjhGKRYElK8BYLEtVnIfpb/1pUrFSwUi6gqyrI/
+ V1UVqqqiLMvIFQqIRiJoSSYRDnn4gNB1KPlZVHPT0NXqcj+GrqlAtQK1mAWEMYQSbQi3roEQ4jsAyD6W
+ HWWapmF+YQFlubHlpCqyjClZRjIeR0syCUHw1gtHtGoZ8vQwtGq5/r+k61AKc1CKWUTauxBKdTjdDQoI
+ SwJAUVXMZLNQVXXFn1EolVBVFHS0tkL0SAio5TwqU1cAXVvZB+ga5NlRaHIZkY71TneHAsD0IqCqaZiZ
+ n2/q4L9KrlYxm81C192/EqxaLqAydXnlB/81lPws5NlRp7tEAWBqAOgAZrNZqFrzB8FVcrWKbD5v935p
+ rN9qFfL00OLg3iRKfhZKftbprpHPmRoAhRrFvmYUy2VUGqwl2EmeHYOumd9veW582SIikVlMCwBN17FQ
+ LFrW0FzBPS+nuK7flSLUUs6aD9c1VLOTTneRfMy0ACiWSpaO1auKArnqvrNhdWHG0s9XCvOLtwyJLGBa
+ AJQqFcsba8d3NETXoJYWLP4O3borDAo8UwJA03VLxv43clsdQK2UTKn6G9HK7hz+kPeZEgCKDQc/sDi/
+ wE23BPVGJvs0oaFJRUQNMOcKwMTbfobf5aYAUO0JPru+h4LHlACw9ZB0UQDY1nNX9Zn8xJQAsHOqrque
+ DRBseppa9NETkuQqpvwGSzY9wisIAkTRPUsYCKGILd8j8glBsogpR1NIkmy5Coi47BFhMRK36XsSTneV
+ fMq002k0Yv3ZMBqNWv4djRDDUVuuAqR4yumukk+ZFgCJWMzShgqCgITLAgAAQql2a/sdikKMJp3uJvmU
+ qVcAVl6iJ2IxV43/rwqlOiBYWKQLt65yuovkY6YeUS3ptDWNFEWkE+4cBwuihHDbWmv6HU0glLT2CoOC
+ zdQAiIRCaEmaf7nank678ux/VSjVASnRYupnCqKEaOdGp7tGPmf6UZVKJJCMm1cdb0unbSkwNivaudG0
+ sbogioiu3mzbbUYKLktOq62pVNOX7IIgoL2lxfLiomkEEbE1m5u+EhCkMKJrtkCMunPIQ/5iWdUunUwi
+ Eokgu7AApcH1AaPhMFrTae+9I0AQEV21CUp+DtX58Yaf4w8l2xBuX2dpUZHoWpbOrImGw1jT0YFiuYxi
+ uVxzQQ9BEBANh5GMxz1xyV9LKNUOKdEKJT8LtTAHrXrzdQwEUYKUaEEo3Qkx7JGrHfINW6bWJWIxJGIx
+ aJoGWVGgqurSE4SiKCIUCiESCrlrnn+TBFFEuGUVwi2roCsyNLkETakCugpAgCCFIUZiiwe9j/pN3mLr
+ 3FpRFBHz+Nl9JYRQBFIoAl7Yk9u4994aEVmOAUAUYAwAogBjABAFGAOAKMAYAEQBxgAgCjAGAFGAMQCI
+ AowBQBRgDACiAGMAEAUYA4AowBgARAHGACAKMAYAUYAxAIgCjAFAFGAMAKIAYwAQBRgDgCjAGABEAcYA
+ IAowBgBRgDEAiALs/wH3VRPlGRc8ZwAAAABJRU5ErkJggigAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAA
+ AAAAAAAAAAAAAAAAAABPT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/01N
+ 5v9FRd3/QUHX/z8/1f9BQdj/Rkbe/05O5/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/TizP/w4Av/7p6Lf+4eCz/vHst/8iDMP/XjjT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9GRt7/OzvQ/zo6z/86Os//OjrP/zo6z/86Os//OzvR/0dH
+ 4P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/wn8v/65yKv+tcSr/rXEq/61xKv+tcSr/rXEq/7F0
+ K//MhjH/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/RETc/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/0ZG3v9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/758
+ Lv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/65xKv/LhTH/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0pK4v86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrQ/0xM5f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/KhDD/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/69zK//VjDP/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/QEDW/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//QkLZ/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/7R2
+ LP+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/8J/L//ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/05O6P86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/88PNH/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/TizP/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/tXYs/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/TEzl/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/9OTuj/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/86H
+ Mf+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+vcyv/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9MTOX/OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/05O6P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/zogy/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/7BzK//ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f87O9D/OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/89PdP/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/WjTP/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/uHgs/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0JC2f86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/0RE3P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+5eS3/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv/HgzD/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/TEzm/zs70P86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/88PNL/Tk7n/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9CJMv+ucir/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/tHYs/9iO
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SUnh/zs70P86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/86Os//OzvR/0pK4/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/8mEMP+ucSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/7F0K//SijL/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/S0vk/z8/1f86Os//OjrP/zo6z/86Os//OjrP/0BA1v9MTOX/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/86HMf+1diz/rXEq/61xKv+tcSr/rXEq/61xKv+7ey3/1Iwz/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0tL
+ 5P9GRt7/RUXd/0dH3/9MTOX/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/QiTL/xoIw/8SBL//IhDD/1Isz/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/Uqnf/2cSp/9nEqf/ZxKn/2cSp/9nEqf/ZxKn/2cSp/9nE
+ qf/ZxKn/2cSp/9nEqf/ZxKn/2cSp/9nEqf/ZxKn/2cSp/9nEqf/Oijj/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9e7
+ l//e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/86MPP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/TVfr/0GA9P9BgPT/QYD0/0GA9P9BgPT/QYD0/0GA
+ 9P9BgPT/QYD0/0GA9P9BgPT/QYD0/0GA9P9OUur/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/8OUT/+IoZb/iKGW/4ihlv+IoZb/iKGW/4ih
+ lv+IoZb/iKGW/4ihlv+IoZb/iKGW/4ihlv+LoZP/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/17uX/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/zow8/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/Xu5f/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/OjDz/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9Sse//Zx6//2cev/9nHr//Zx6//2cev/9nH
+ r//Zx6//2cev/9nHr//Zx6//2cev/9nHr//Zx6//2cev/9nHr//Zx6//2cev/86LOf/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZ
+ bP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph
+ 7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/9OncP/Yvp3/2L6d/9i+nf/Yvp3/2L6d/9i+nf/Yvp3/2L6d/9i+nf/Yvp3/2L6d/9i+
+ nf/Yvp3/2L6d/9i+nf/Yvp3/2L6d/86KOP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/17uX/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/zow8/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/Xu5f/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/OjDz/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9e7l//e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/86M
+ PP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/1bCC/9rNvP/azbz/2s28/9rNvP/azbz/2s28/9rNvP/azbz/2s28/9rN
+ vP/azbz/2s28/9rNvP/azbz/2s28/9rNvP/azbz/zos6/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZ
+ bP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/8J/Lv/Bfi7/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/xoEv/61x
+ Kv+1dyz/yIMv/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph
+ 7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/MhTD/rnEq/61xKv+ucir/vXwt/8yFMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP+zdSv/rXEq/61xKv+tcSr/snQr/8WBL//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/SmDv/zYYw/82GMP/NhjD/zYYw/7l5LP+tcSr/rXEq/61xKv+tcSr/rXEq/7l5
+ LP/LhDD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9u8Uv/aulH/z482/82G
+ MP/NhjD/wH0t/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/7BzKv/Bfi7/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/161J/+DRYP/fzV7/1adF/82HMf/GgS//rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+1diz/yIMv/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/Tnj//4NFg/+DR
+ YP/g0WD/3MJX/9CVOv+ucSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+ucir/vXwt/8yF
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/8+PNf/g0WD/4NFg/+DRYP/g0WD/4NBf/8qoSf+wdi3/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/snQr/8WBL//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/97K
+ XP/g0WD/4NFg/+DRYP/g0WD/4NFg/9rGWv+9jzv/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/7l5LP/LhDD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/27xS/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/Qs0//s3ww/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/7BzKv/Bfi7/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8OALv+5eSz/snQr/65yKv+ucir/rnIq/65y
+ Kv/Io0b/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/ezF3/xJtC/65yK/+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+ucir/rnIq/65yKv+ucir/rnIq/65yKv+ucir/rnIq/65y
+ Kv+ucir/rnIq/65yKv+ucir/rnIq/65yKv+ucir/sHMr/7V2LP+/fS3/y4Uw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8eC
+ L/+zdSv/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/72PO//g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/1r5V/7eFNf+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+vcir/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/EgC7/rnIq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/s3ww/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/39Bf/8qo
+ Sf+wdi3/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/x4Iv/65y
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/3Mlb/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9rHWv+9kDv/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZ
+ bP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP+3fC//vpE8/8ahRf/Jpkj/yaZI/8mmSP/Jpkj/yaZI/8mm
+ SP/Jpkj/yaZI/8mmSP/bx1r/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/StlH/yaZI/8mmSP/Jpkj/yaZI/8mmSP/Jpkj/yaZI/8mmSP/Jpkj/yaZI/8mm
+ SP/Jpkj/yaZI/8mmSP/Jpkj/yaVH/8ScQv+5hzb/rnIr/61xKv+tcSr/rXEq/61xKv+tcSr/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/PjTX/2LRN/9/O
+ X//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/axlr/wphA/61yKv+tcSr/rXEq/61xKv9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph
+ 7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/0po9/9/MXf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/07hS/7B3Lv+tcSr/rXEq/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9KZPP/fz1//4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/1b1V/691LP+tcSr/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/OizP/3spb/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/y6lK/61x
+ Kv9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9euSf/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/f0F//tYAy/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhzH/3stc/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/JpUf/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PUOn/TVbr/01W6/9NVuv/TVbr/01W
+ 6/9NVuv/TVbr/01W6/9NVuv/TVbr/01W6/9NVuv/TVbr/09Q6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/1pA4/82SQv/NkkL/zZJC/82S
+ Qv/NkkL/zZJC/82SQv/NkkL/zZJC/82SQv/NkkL/zZJC/86SQv/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9GVOf/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2dl0v9ZWOD/WVjg/1lY4P+akqL/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9a/Vv9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/059A/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/Xlzb/09P6f9PT+n/T0/p/5WOp//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/3s1e/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/UokL/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9eXNv/T0/p/09P6f9PT+n/lY6n/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/9SiQv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/15c2/9PT+n/T0/p/09P6f+Vjqf/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/1KJC/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/97QYf+9sYH/n5ae/5aOpv+Vjqf/Vlbi/09P6f9PT+n/T0/p/3Ft
+ yf+Vjqf/lo+m/6adl//Lv3P/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/UokL/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+xp43/YmDX/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f94dML/y750/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9Si
+ Qv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/lI2o/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9XVuL/vbGB/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/1KJC/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/6eelf9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9YV+D/z8Fw/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/UokL/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/Yymj/WVjg/09P6f9PT+n/T0/p/09P6f9RUef/X13a/2Be2f9gXtn/YF7Z/2Be
+ 2f9gXtn/YF7Z/2Be2f9aWd7/T0/p/09P6f9PT+n/T0/p/09P6f+BfLn/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9SiQv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/6iflf9PT+n/T0/p/09P
+ 6f9PT+n/e3bA/9PFbP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+8sYL/XFvd/09P
+ 6f9PT+n/T0/p/1JR5v/WyGr/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/1KJC/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/hYC2/09P6f9PT+n/T0/p/1ta3v/azGb/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+wpo3/T0/p/09P6f9PT+n/T0/p/7ariP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P
+ 6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P
+ 6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGl5W
+ 1RrYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iP
+ NBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iP
+ NBvWjTMbzYYwGs2GMBrNhjAazYYwGs2GMBrNhjAazYYwGs2GMBrdxllx4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP94dML/T0/p/09P
+ 6f9PT+n/eXXB/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9TG
+ a/9PT+n/T0/p/09P6f9PT+n/qqCT/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/3dzw/9PT+n/T0/p/09P6f98d77/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/wLR+/09P6f9PT+n/T0/p/09P6f+xp43/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/wLR//7Op
+ iv+zqYr/s6mK/8G1ff/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9jJ
+ aP9vbMr/T0/p/09P6f9PT+n/T0/p/8y/cv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/0MNv/6yjkf+IgrP/XFrd/09P6f9PT+n/T0/p/09P6f9ua8z/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9HDb/+so5H/iIKz/2Ri1f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/UFDo/7uwg//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/RxG7/raOR/4iC
+ s/9kYtX/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bk6H/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/BtX7/dXHF/1BQ6P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9YV+H/qJ+V/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/pJuZ/1FR5/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/1dW4v95dML/oZmb/9bIav/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/7Gnjf9QT+j/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9XVuL/eXXB/52V
+ n//BtX3/3s9i/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/ay2b/XFvd/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/V1bh/3l1wf+dlZ//wrZ9/97PYv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/6mflP9PT+n/T0/p/09P6f9PT+n/a2jO/76ygf/ez2L/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/g324/09P6f9PT+n/T0/p/1ZW
+ 4v/Uxmz/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/XyWj/Y2HW/2Nh
+ 1v9jYdb/Y2HW/7Wqif/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP9yb8j/T0/p/09P6f9PT+n/eHTC/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/9bIav9PT+n/T0/p/09P6f9PT+n/rqSP/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/3ZyxP9PT+n/T0/p/09P
+ 6f9ua8v/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/xrp4/09P
+ 6f9PT+n/T0/p/09P6f+1qon/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/joeu/09P6f9PT+n/T0/p/09P6f+1q4j/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/97QYf9+eb3/T0/p/09P6f9PT+n/T0/p/83Acv/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+9soH/T0/p/09P
+ 6f9PT+n/T0/p/1JS5v+GgLX/oJed/6CYnP+gmJz/oJic/6CYnP+gmJz/oJic/6CYnP+bk6H/bWrM/09P
+ 6f9PT+n/T0/p/09P6f9raM7/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP91ccX/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/7Sqif/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9DC
+ b/9eXdr/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f+Nh67/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/83Acv9sac3/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9RUef/l5Cl/9/QYf/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/97QYv+to5D/eXXB/11b3P9UU+X/U1Pl/09P6f9PT+n/T0/p/09P6f9RUef/U1Pl/1VV
+ 4/9nZNP/jYav/8m8dv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/Xlzb/09P6f9PT+n/T0/p/5WOp//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9eXNv/T0/p/09P6f9PT+n/lY6n/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYF/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/15c2/9PT+n/T0/p/09P6f+Vjqf/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYPsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgR+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/Xlzb/09P6f9PT+n/T0/p/5WO
+ p//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg4gAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WAU4NFg/ODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP+vpY7/qaCU/6mglP+poJT/xLh7/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WCsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADg0WC64NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYFYAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYD/g0WD+4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WDW4NFgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAODRYJXg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg+eDRYDgAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgBeDRYKzg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYPng0WBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgAuDRYHjg0WD14NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WDW4NFgOAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YBng0WB84NFgxuDRYPDg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/ODR
+ YOTg0WCu4NFgV+DRYAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////wAAAAAAAAA////////
+ ///8AAAAAAAAAP///////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP//
+ /////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAA
+ AAD///////////wAAAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAAAAD///////////wA
+ AAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAAAAD///////////wAAAAAAAAA////////
+ ///8AAAAAAAAAP///////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP//
+ /////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAA
+ AAD///////////4AAAAAAAAA///////////+AAAAAAAAAP///////////wAAAAAAAAH///////////8A
+ AAAAAAAD////////////gAAAAAAAB////////////+AAAAAAAA8oAAAAQAAAAIAAAAABACAAAAAAAABA
+ AAAAAAAAAAAAAAAAAAAAAAAAT0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/TEzl/0dH4P9JSeL/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/8yGMf/KhDD/1Iwz/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/RUXc/zo6z/86Os//OjrP/z4+1P9NTeb/T0/p/09P
+ 6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/0ooy/7N1K/+tcSr/rXEq/65yKv/HgzD/2Y80/9mP
+ NP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/Skrj/zo6z/86Os//OjrP/zo6
+ z/86Os//QEDX/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/7Z3LP+tcSr/rXEq/61x
+ Kv+tcSr/rnEq/9KKMv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/0RE
+ 2/86Os//OjrP/zo6z/86Os//OjrP/zo60P9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9WM
+ M/+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv/GgjD/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9ERNv/OjrP/zo6z/86Os//OjrP/zo6z/87O9D/T0/p/09P6f9PT+n/T0/p/5ty
+ hf/ZjzT/2Y80/9mPNP/WjTP/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/xoIw/9mPNP/ZjzT/2Y80/9iO
+ NP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/S0vk/zo6z/86Os//OjrP/zo6z/86Os//QkLZ/09P
+ 6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/7l5Lf+tcSr/rXEq/61xKv+tcSr/r3Iq/9SM
+ M//ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9HR+D/OzvQ/zo6
+ z/86Os//QEDX/05O6P9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/VjDP/t3gs/61x
+ Kv+tcSr/sXMr/8yGMf/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/05O6P9KSuP/TEzl/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/SijL/0Iky/9iONP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/0p9g/9Olbf/TpW3/06Vt/9Olbf/TpW3/06Vt/9Olbf/TpW3/zYcy/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/0td7P9IaO7/SGju/0ho7v9IaO7/SGju/0ho7v9PUOn/T0/p/09P
+ 6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9OQO/+wmGX/sJhl/7CYZf+wmGX/sJhl/7CYZf/Fk0z/2Y80/9mP
+ NP/ZjzT/2I40/82GMP/NhjD/zYYw/9rNvP/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/86J
+ Nv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/ZxKj/3NTI/9zUyP/c1Mj/3NTI/9zU
+ yP/c1Mj/3NTI/9zUyP/OiTX/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mP
+ NP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P
+ 6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mP
+ NP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L
+ 9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KU
+ UP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5ty
+ hf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iO
+ NP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T
+ 6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ih
+ lv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mP
+ NP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82G
+ MP/RnFv/0qJn/9KiZ//Somf/0qJn/9KiZ//Somf/0qJn/9KiZ//NhzL/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P
+ 6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mP
+ NP/YjjT/zYYw/82GMP/NhjD/2s28/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/zok2/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/9nGrf/c187/3NfO/9zXzv/c187/3NfO/9zX
+ zv/c187/3NfO/86JNf/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP++fC3/xoEv/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P
+ 6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mP
+ NP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/vnwt/61xKv+6eiz/y4Uw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/VpUT/zogx/8WBLv+tcSr/rXEq/7BzK//Cfy7/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/2rtS/93GWf/QmDz/rXEq/61xKv+tcSr/rXEq/7Z3
+ LP/Jgy//zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mP
+ NP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9esSP/g0WD/4NFg/82t
+ TP+xeS7/rXEq/61xKv+tcSr/rnIq/758Lf/MhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P
+ 6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mP
+ NP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/FgS//v3wt/718
+ Lf/HlT3/4NFg/+DRYP/g0WD/3Mpc/8CVPv+tcSr/rXEq/61xKv+tcSr/s3Ur/718Lf+9fC3/vXwt/718
+ Lf+9fC3/vXwt/718Lf++fC3/wH0u/8mDL/9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8uE
+ MP+1dyz/rXEq/61xKv+tcSr/snsw/+DRYP/g0WD/4NFg/+DRYP/g0WD/07lS/7WAMv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/T0/p/09P6f9PT+n/T0/p/z2L
+ 9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KU
+ UP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP+6gDH/uoo4/7uMOf+7jDn/u4w5/7uMOf/ezF3/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/fzl//x6JF/7uMOf+7jDn/u4w5/7uMOf+7jDn/u4w5/7uMOf+7izn/toEz/61xKv+tcSr/rXEq/09P
+ 6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5ty
+ hf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iO
+ NP/NhjD/zYYw/82GMP/NhjD/zYYw/86LM//Zt1D/4NBg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/XwFb/t4U1/61xKv9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T
+ 6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ih
+ lv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82HMf/cwVX/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/93MXf+1gDL/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/UoUH/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/z7JO/09P6f9PT+n/T0/p/09P
+ 6f9OUen/TlPq/05T6v9OU+r/TlPq/05T6v9OU+r/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mP
+ NP/YjzX/05A7/9OQO//TkDv/05A7/9OQO//TkDv/1pA3/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82G
+ MP/NhjD/2bZO/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/6GZ
+ m/9UU+T/dnLE/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/93M
+ Xf9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/YjjT/zYYw/82GMP/NhjD/zYYw/9q6Uf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP+fl53/T0/p/3JuyP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/aulH/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/1MZr/5OMqf91ccb/YmDX/09P6f9XV+H/cm/I/4R+t//BtX7/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/2rpR/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/0sRt/2Be2f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/UVHn/7Gnjf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/zYYw/9q6Uf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/4qEsf9PT+n/Wlnf/5mR
+ o/+gmJ3/oJid/6CYnf+elp7/bmrM/09P6f9cW9z/3c9i/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/T0/pjU9P6Y1PT+mNT0/pjU9P6Y1PT+mNT0/pjU9P6Y1PT+mNT0/pjU9P6Y1PT+mNT0/pjU9P
+ 6Y1PT+mNm3KFjdmPNI3ZjzSN2Y80jdmPNI3ZjzSN2Y80jdmPNI3ZjzSN2Y80jdmPNI3ZjzSN2Y80jdmP
+ NI3ZjzSN2I40jc2GMI3NhjCNzYYwjc2GMI3cwlbc4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP9nZNL/T0/p/6Sbmf/g0WD/4NFg/+DRYP/g0WD/4NFg/9HEbv9PT+n/T0/p/8i7d//g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgsODRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/joit/4F8uv+/tH//4NFg/+DRYP/g0WD/4NFg/+DRYP+6r4T/T0/p/09P
+ 6f/PwnD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YLDg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/czmT/vbKB/5mR
+ o/91ccb/UlLm/09P6f9ybsj/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WCw4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/2Mpn/52V
+ n/91ccX/VFTk/09P6f9PT+n/T0/p/09P6f9nZdL/z8Jw/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgsODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/1MZr/2Vj1P9PT+n/T0/p/09P6f9RUef/bWrN/5GKq/+2rIf/3c9i/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYLDg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/4uFsP9PT+n/VlXi/5CKq/+2q4j/2Mpo/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADg0WCw4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9lY9T/T0/p/6GYnP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/9vNZP9ZWOD/WVjg/8m8dv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgsODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/aWbR/09P
+ 6f+Vjqf/4NFg/+DRYP/g0WD/4NFg/+DRYP/BtX7/T0/p/09P6f/Rw2//4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYLDg0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/5iRpP9PT+n/UFDo/3Ftyf94dMP/eHTD/3h0w/92csT/V1bi/09P6f9vbMr/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WCw4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/czWT/enXB/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9iYNf/y750/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFgsODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+6r4T/nJSg/3h0
+ wv9PT+n/YV/Y/5qSov+to5D/2sxl/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYK/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP+fl53/T0/p/3JuyP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WCW4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/s6mK/3x3vv+Ujaj/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgPuDR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYIwAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WCR4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YNHg0WAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgAeDRYGLg0WDQ4NFg++DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD+4NFg5ODRYIzg0WAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////+AA
+ AAD/////4AAAAP/////gAAAA/////+AAAAD/////4AAAAP/////gAAAA/////+AAAAD/////4AAAAP//
+ ///gAAAA/////+AAAAD/////4AAAAP/////gAAAA/////+AAAAD/////8AAAAP/////wAAABKAAAADAA
+ AABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAE9P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/Tk7o/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/05O6P9CQtj/OzvQ/zw8
+ 0v9ISOD/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/8+IMv+0diz/r3Iq/7h5Lf/VjDP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/0VF
+ 3P86Os//OjrP/zo6z/87O9D/TU3m/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/7J0K/+tcSr/rXEq/61x
+ Kv+8ey3/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/0FB2P86Os//OjrP/zo6z/86Os//Skri/09P6f9PT+n/iGqe/9mPNP/ZjzT/1Ywz/61x
+ Kv+tcSr/rXEq/61xKv+0diz/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/0ZG3v86Os//OjrP/zo6z/87O9H/TU3n/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/7R2LP+tcSr/rXEq/61xKv++fS7/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9ERNv/PDzS/z4+1P9KSuL/T0/p/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9KKMv+4eS3/sXQr/718Lv/WjTP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/Rnl7/2sq2/9rK
+ tv/ayrb/2sq2/9rKtv/ayrb/0ZlV/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zyQ9/8zrv3/M679/zOu/f8zrv3/R2nv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yZNI/z2y8f89svH/PbLx/z2y8f9Srdf/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/Somb/3NfO/9zXzv/c187/3NfO/9zXzv/c187/0Zxc/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1
+ //8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/QlU3/1bGF/9Wxhf/VsYX/1bGF/9Wxhf/VsYX/z5JH/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1
+ //8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/TpW3/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/0p9h/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/Oizr/0JZO/9CW
+ Tv/Qlk7/0JZO/9CWTv/Qlk7/zoo4/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8yFMP+6ei3/yoQv/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/z400/82GMP+0div/r3Mq/8B+
+ Lv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/169K/9ix
+ TP+8fy//rXEq/61xKv+1div/yIIv/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1
+ //8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/1KFB/+DRYP/bx1r/vpE8/61yKv+tcSr/rnEq/7x7Lf/MhTD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/xoEv/7Z3LP+ydCv/uIIz/+DRYP/g0WD/4NFg/9G0UP+0fjH/rXEq/61xKv+wcyr/sXQr/7F0
+ K/+xdCv/sXQr/7F0K/+ydCv/uXks/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/HgzD/t4M0/7iFNf+4hTX/uIY2/9/OX//g0WD/4NFg/+DRYP/dzF3/xZ1D/7iF
+ Nf+4hTX/uIU1/7iFNf+4hTX/t4U1/7J6L/+tcSr/rXEq/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/9OcPv/eylv/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DQYP/Or03/r3Us/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/z482/9/OXv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/yqdI/09P
+ 6f9PT+n/T0/p/0li7f9Ha+//R2vv/0dr7/9Ha+//TVfr/09P6f9PT+n/iGqe/9mPNP/ZjzT/1JA6/6uZ
+ bP+rmWz/q5ls/6uZbP+xmGT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/1ahF/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/6Kamv93c8P/2ctn/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/3Mpc/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/161J/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/2Mpo/4eBtP9PT+n/zcBy/9zOY//g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/161J/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9XHa/95dcH/UlHm/09P6f9PT+n/T0/p/11b
+ 3P+roZL/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/161J/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/4V/tv9QUOj/fnm9/4yF
+ sP+MhbD/i4Ww/2Be2f9TUub/yr11/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6WpPT+lqT0/pak9P
+ 6WpPT+lqT0/pak9P6WpPT+lqT0/pak9P6WpPT+lqiGqeatmPNGrZjzRq2Y80atmPNGrZjzRq2Y80atmP
+ NGrZjzRq2Y80atmPNGrZjzRqz4gxas2GMGrNhjBq27xTt+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2Be
+ 2f9sac3/4NFg/+DRYP/g0WD/4NFg/7Gnjf9PT+n/qqCT/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/8G1fv/GuXn/4NFg/+DRYP/XyWj/uK2F/3Rwxv9PT+n/v7N//+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/GuXn/lI2o/3Bsyv9UVOT/T0/p/09P6f+Mhq//39Bh/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/7Ooi/9SUeb/T0/p/1ta3f98d77/oJic/8e7
+ d//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2toz/9aWd//v7R//93O
+ Y//g0WD/4NFg/87Bcf+fl53/x7t3/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2Ff
+ 2P9mZNP/3s9i/+DRYP/g0WD/4NFg/6mglP9PT+n/rqWP/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/5KLqv9PT+n/YmDX/25qzP9uasz/bWrN/1NT5f9bWd7/1MZr/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/9zNZP+Vjqf/Z2XS/1dW4f9PT+n/YmDX/3h0wv/Dt3v/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/4uFsP9PT+n/1shp/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgZ+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/7Sq
+ if+Vjqf/28xl/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg4QAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgEODRYOPg0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFgbwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYCfg0WC34NFg+ODR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YOHg0WBv4NFgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////wAAAAAD////AAAAAAP///8AAAAAA////wAAAAAD////AAAAAAP///8AAAAAA////wAAA
+ AAD////AAAAAAP///8AAAAAA////wAAAAAD////gAAAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAA
+ AAAAAAAAAAAAAAAAAABPT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/dWG3/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/SijL/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f91Ybf/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/3Vh
+ t//ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/0ooy/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/0xM5v9CQtn/RETb/05O
+ 6P9PT+n/dWG3/9mPNP/ZjzT/zYcx/7x7Lf/JhDD/2Y80/9mPNP/SijL/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/QEDX/zo6
+ z/86Os//Rkbe/09P6f91Ybf/2Y80/9iONP+vcyv/rXEq/61xKv/SizP/2Y80/9KKMv/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9BQdf/OjrP/zo6z/9HR9//T0/p/3Vht//ZjzT/2I40/7BzK/+tcSr/rXEq/9OLM//ZjzT/0ooy/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/01N5/9DQ9v/RUXd/09P6f9PT+n/dWG3/9mPNP/ZjzT/0Iky/799Lv/LhjH/2Y80/9mP
+ NP/SijL/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f91Ybf/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/3Vht//ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/0ooy/82GMP/QlEv/0JZO/9CWTv/Qlk7/z45A/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/0CB9P88jvf/PI73/0Vw8P9PT+n/dWG3/9mP
+ NP/SkT3/caey/3Gnsv9xp7L/wJVS/9mPNP/SijL/zYYw/9vRw//d2tT/3drU/93a1P/VsYX/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/N6D6/zG1//8xtf//P4T0/09P
+ 6f91Ybf/2Y80/82SQv8xtf//MbX//zG1//+wmGX/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f83oPr/MbX//zG1
+ //8/hPT/T0/p/3Vht//ZjzT/zZJC/zG1//8xtf//MbX//7CYZf/ZjzT/0ooy/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/zeg
+ +v8xtf//MbX//z+E9P9PT+n/dWG3/9mPNP/NkkL/MbX//zG1//8xtf//sJhl/9mPNP/SijL/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/N6D6/zG1//8xtf//P4T0/09P6f91Ybf/2Y80/82SQv8xtf//MbX//zG1//+wmGX/2Y80/9KK
+ Mv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f83oPr/MbX//zG1//8/hPT/T0/p/3Vht//ZjzT/zZJC/zG1//8xtf//MbX//7CY
+ Zf/ZjzT/0ooy/82GMP/Xu5f/2MGj/9jBo//YwaP/06Rs/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/zeg+v8xtf//MbX//z+E9P9PT+n/dWG3/9mPNP/NkkL/MbX//zG1
+ //8xtf//sJhl/9mPNP/SijL/zYYw/9Sqd//Vrn//1a5//9Wuf//Rm1n/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/N6D6/zG1//8xtf//P4T0/09P6f91Ybf/2Y80/82S
+ Qv8xtf//MbX//zG1//+wmGX/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/FgS//v30t/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f83oPr/MbX//zG1//8/hPT/T0/p/3Vh
+ t//ZjzT/zZJC/zG1//8xtf//MbX//7CYZf/ZjzT/0ooy/82GMP/NhjD/zYYw/82GMP/NhjD/0ps9/9Ca
+ Pf+tcSr/s3Ur/8aCL//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/zeg+v8xtf//MbX//z+E
+ 9P9PT+n/dWG3/9mPNP/NkkL/MbX//zG1//8xtf//sJhl/9mPNP/SijL/zYYw/82GMP/NhjD/zYYw/8iC
+ L//KkTj/4NFg/8+wTv+yei//rXEq/7t6Lf/FgS//xYEv/8WBL//FgS//yYMv/09P6f9PT+n/N6D6/zG1
+ //8xtf//P4T0/09P6f91Ybf/2Y80/82SQv8xtf//MbX//zG1//+wmGX/2Y80/9KKMv/NhjD/zYYw/82G
+ MP+9gTH/tH4x/7WBM//f0F//4NFg/93LXf/CmED/tH4x/7R+Mf+0fjH/tH4x/691LP+tcSr/T0/p/09P
+ 6f83oPr/MbX//zG1//8/hPT/T0/p/3Vht//ZjzT/zZJC/zG1//8xtf//MbX//7CYZf/ZjzT/0ooy/82G
+ MP/NhjD/2bVO/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/3s1e/76Q
+ PP9PT+n/T0/p/0N58v8/hPT/P4T0/0dq7/9PT+n/dWG3/9mPNP/TkDv/gqOd/4Kjnf+Co53/xJRN/9mP
+ NP/SijL/zYYw/9KZPP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+tpJD/xbl5/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/28hb/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f91Ybf/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9KKMv/NhjD/1KBB/+DRYP/g0WD/4NFg/+DRYP/dzmP/sqiM/2hl0v+HgbT/wbV9/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/3Vht//ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/0ooy/82GMP/UoEH/4NFg/+DRYP/g0WD/4NFg/4N9uP9kYtX/d3PD/3dz
+ w/9XVuH/s6iL/+DRYP/g0WD/4NFg/+DRYP9PT+lGT0/pRk9P6UZPT+lGT0/pRk9P6UZPT+lGdWG3RtmP
+ NEfZjzRH2Y80R9mPNEfZjzRH2Y80R9mPNEfSijJGzYYwRtm3T4bg0WD/4NFg/+DRYP/g0WD/cW7J/8m8
+ dv/g0WD/4NFg/4qEsf+Nh67/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgWODRYP/g0WD/4NFg/+DR
+ YP/ez2L/taqJ/4+JrP9raM//VlXi/8C0fv/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBY4NFg/+DR
+ YP/g0WD/4NFg/4V/tv9hX9j/i4Ww/7Cmjv/Vx2r/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YFjg0WD/4NFg/+DRYP/g0WD/W1re/72ygf/g0WD/4NFg/5GKq/+Qiqv/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFgWODRYP/g0WD/4NFg/+DRYP+Piaz/WFfh/2Nh1v9jYdb/VlXj/7+zgP/g0WD/4NFg/+DR
+ YP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WBY4NFg/+DRYP/g0WD/4NFg/+DRYP/FuXn/bWrM/5OMqP/SxG3/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYDXg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+8sYL/zcBy/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYH3g0WDy4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYNvg0WA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP//gAD//4AA//+AAP//gAD//4AA//+AAP//wAAoAAAAEAAAACAAAAABACAAAAAAAAAE
+ AAAAAAAAAAAAAAAAAAAAAAAAT0/p/09P6f9PT+n/YljQ/9mPNP/ZjzT/2Y80/9aNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9LS+T/TEzl/2JY0P/ZjzT/z4gy/9WMM//WjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/PT3T/0BA1/9iWND/2Y80/65yKv/Afi7/1o0z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/0xM5f9NTeb/YljQ/9mPNP/QiTL/1o0z/9aN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9Ha+//SGfu/2JY0P/Xjzb/pZtz/7mW
+ W//WjTP/0Zxc/9a4kf/UrHr/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/NKr9/zic+v9iWND/05A7/zG1
+ //9xp7L/1o0z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/zSq/f84nPr/YljQ/9OQ
+ O/8xtf//caey/9aNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f80qv3/OJz6/2JY
+ 0P/TkDv/MbX//3Gnsv/WjTP/0Zxc/9a4kf/UrHr/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/NKr9/zic
+ +v9iWND/05A7/zG1//9xp7L/1o0z/82GMP/NhjD/zosz/8CCMf/FgS7/zYYw/82GMP/NhjD/T0/p/zSq
+ /f84nPr/YljQ/9OQO/8xtf//caey/9aNM//NhjD/yYUw/7+FM//byFv/v5Q9/7p+MP+9gDD/u3st/09P
+ 6f87lPj/Por2/2JY0P/VkDn/WqzO/4qhlP/WjTP/zosz/97KW//g0WD/4NFg/83Acv/g0WD/4NFg/9a9
+ Vf9PT+n/T0/p/09P6f9iWND/2Y80/9mPNP/ZjzT/1o0z/9CTOP/g0WD/4NFg/52Vn/93c8P/q6GS/+DR
+ YP/g0WD/T0/pI09P6SNPT+kjYljQI9mPNCPZjzQj2Y80I9aNMyPYs01J4NFg/+DRYP+zqYr/r6WP/4uF
+ sP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgLODRYP/g0WD/gHu7/7+z
+ f/+2q4j/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYCzg0WD/4NFg/6Oa
+ mv9ybsj/saeM/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WAN4NFg2+DR
+ YP/g0WD/0sVt/+DRYP/g0WD/4NFgvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAA=
+
+
205, 17
+
+ 398, 17
+
\ No newline at end of file
diff --git a/app/view/winform/Login.Designer.cs b/app/view/winform/Login.Designer.cs
new file mode 100644
index 0000000..30cc7a6
--- /dev/null
+++ b/app/view/winform/Login.Designer.cs
@@ -0,0 +1,362 @@
+
+namespace SIPP.view.winform
+{
+ partial class Login
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Login));
+ this.guna2Panel1 = new Guna.UI2.WinForms.Guna2Panel();
+ this.Tombol_Daftar = new Guna.UI2.WinForms.Guna2Button();
+ this.LihatPassword = new Guna.UI2.WinForms.Guna2CheckBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.Tombol_Masuk = new Guna.UI2.WinForms.Guna2Button();
+ this.label7 = new System.Windows.Forms.Label();
+ this.Password = new Guna.UI2.WinForms.Guna2TextBox();
+ this.label6 = new System.Windows.Forms.Label();
+ this.Username = new Guna.UI2.WinForms.Guna2TextBox();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.guna2Panel2 = new Guna.UI2.WinForms.Guna2Panel();
+ this.label1 = new System.Windows.Forms.Label();
+ this.Minimize = new Guna.UI2.WinForms.Guna2ControlBox();
+ this.Close = new Guna.UI2.WinForms.Guna2ControlBox();
+ this.guna2DragControl1 = new Guna.UI2.WinForms.Guna2DragControl(this.components);
+ this.guna2ShadowForm1 = new Guna.UI2.WinForms.Guna2ShadowForm(this.components);
+ this.ShowPassword = new Guna.UI2.WinForms.Guna2CheckBox();
+ this.guna2Panel1.SuspendLayout();
+ this.guna2Panel2.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // guna2Panel1
+ //
+ this.guna2Panel1.BackColor = System.Drawing.Color.Transparent;
+ this.guna2Panel1.Controls.Add(this.Tombol_Daftar);
+ this.guna2Panel1.Controls.Add(this.LihatPassword);
+ this.guna2Panel1.Controls.Add(this.label3);
+ this.guna2Panel1.Controls.Add(this.Tombol_Masuk);
+ this.guna2Panel1.Controls.Add(this.label7);
+ this.guna2Panel1.Controls.Add(this.Password);
+ this.guna2Panel1.Controls.Add(this.label6);
+ this.guna2Panel1.Controls.Add(this.Username);
+ this.guna2Panel1.Controls.Add(this.label5);
+ this.guna2Panel1.Controls.Add(this.label4);
+ this.guna2Panel1.Controls.Add(this.guna2Panel2);
+ this.guna2Panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.guna2Panel1.FillColor = System.Drawing.Color.White;
+ this.guna2Panel1.Location = new System.Drawing.Point(0, 0);
+ this.guna2Panel1.Name = "guna2Panel1";
+ this.guna2Panel1.ShadowDecoration.Parent = this.guna2Panel1;
+ this.guna2Panel1.Size = new System.Drawing.Size(430, 513);
+ this.guna2Panel1.TabIndex = 2;
+ //
+ // Tombol_Daftar
+ //
+ this.Tombol_Daftar.Animated = true;
+ this.Tombol_Daftar.BorderRadius = 3;
+ this.Tombol_Daftar.CheckedState.Parent = this.Tombol_Daftar;
+ this.Tombol_Daftar.CustomImages.Parent = this.Tombol_Daftar;
+ this.Tombol_Daftar.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(87)))), ((int)(((byte)(101)))), ((int)(((byte)(166)))));
+ this.Tombol_Daftar.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.Tombol_Daftar.ForeColor = System.Drawing.Color.White;
+ this.Tombol_Daftar.HoverState.Parent = this.Tombol_Daftar;
+ this.Tombol_Daftar.Location = new System.Drawing.Point(23, 401);
+ this.Tombol_Daftar.Name = "Tombol_Daftar";
+ this.Tombol_Daftar.ShadowDecoration.Parent = this.Tombol_Daftar;
+ this.Tombol_Daftar.Size = new System.Drawing.Size(381, 40);
+ this.Tombol_Daftar.TabIndex = 14;
+ this.Tombol_Daftar.Text = "Daftar";
+ this.Tombol_Daftar.Click += new System.EventHandler(this.Tombol_Daftar_Click);
+ //
+ // LihatPassword
+ //
+ this.LihatPassword.Animated = true;
+ this.LihatPassword.AutoSize = true;
+ this.LihatPassword.CheckedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(94)))), ((int)(((byte)(148)))), ((int)(((byte)(255)))));
+ this.LihatPassword.CheckedState.BorderRadius = 0;
+ this.LihatPassword.CheckedState.BorderThickness = 0;
+ this.LihatPassword.CheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(94)))), ((int)(((byte)(148)))), ((int)(((byte)(255)))));
+ this.LihatPassword.Location = new System.Drawing.Point(278, 319);
+ this.LihatPassword.Name = "LihatPassword";
+ this.LihatPassword.Size = new System.Drawing.Size(125, 21);
+ this.LihatPassword.TabIndex = 13;
+ this.LihatPassword.Text = "Lihat password";
+ this.LihatPassword.UncheckedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(125)))), ((int)(((byte)(137)))), ((int)(((byte)(149)))));
+ this.LihatPassword.UncheckedState.BorderRadius = 0;
+ this.LihatPassword.UncheckedState.BorderThickness = 0;
+ this.LihatPassword.UncheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(125)))), ((int)(((byte)(137)))), ((int)(((byte)(149)))));
+ this.LihatPassword.CheckedChanged += new System.EventHandler(this.guna2CheckBox1_CheckedChanged);
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label3.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
+ this.label3.Location = new System.Drawing.Point(20, 478);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(273, 19);
+ this.label3.TabIndex = 4;
+ this.label3.Text = "Dibuat oleh Muhammad Surya Jayadiprana";
+ //
+ // Tombol_Masuk
+ //
+ this.Tombol_Masuk.Animated = true;
+ this.Tombol_Masuk.BorderRadius = 3;
+ this.Tombol_Masuk.CheckedState.Parent = this.Tombol_Masuk;
+ this.Tombol_Masuk.CustomImages.Parent = this.Tombol_Masuk;
+ this.Tombol_Masuk.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Tombol_Masuk.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.Tombol_Masuk.ForeColor = System.Drawing.Color.White;
+ this.Tombol_Masuk.HoverState.Parent = this.Tombol_Masuk;
+ this.Tombol_Masuk.Location = new System.Drawing.Point(24, 355);
+ this.Tombol_Masuk.Name = "Tombol_Masuk";
+ this.Tombol_Masuk.ShadowDecoration.Parent = this.Tombol_Masuk;
+ this.Tombol_Masuk.Size = new System.Drawing.Size(380, 40);
+ this.Tombol_Masuk.TabIndex = 12;
+ this.Tombol_Masuk.Text = "Masuk";
+ this.Tombol_Masuk.Click += new System.EventHandler(this.Tombol_Masuk_Click);
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.BackColor = System.Drawing.Color.Transparent;
+ this.label7.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.label7.Location = new System.Drawing.Point(19, 240);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(83, 20);
+ this.label7.TabIndex = 8;
+ this.label7.Text = "Password";
+ //
+ // Password
+ //
+ this.Password.Animated = true;
+ this.Password.BorderRadius = 3;
+ this.Password.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.Password.DefaultText = "";
+ this.Password.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
+ this.Password.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
+ this.Password.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.Password.DisabledState.Parent = this.Password;
+ this.Password.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.Password.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Password.FocusedState.Parent = this.Password;
+ this.Password.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.Password.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Password.HoverState.Parent = this.Password;
+ this.Password.IconLeft = global::SIPP.Properties.Resources.icons8_lock_100px;
+ this.Password.IconLeftSize = new System.Drawing.Size(25, 25);
+ this.Password.Location = new System.Drawing.Point(23, 268);
+ this.Password.Name = "Password";
+ this.Password.PasswordChar = '•';
+ this.Password.PlaceholderText = "Password";
+ this.Password.SelectedText = "";
+ this.Password.ShadowDecoration.Parent = this.Password;
+ this.Password.Size = new System.Drawing.Size(380, 40);
+ this.Password.Style = Guna.UI2.WinForms.Enums.TextBoxStyle.Material;
+ this.Password.TabIndex = 7;
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.BackColor = System.Drawing.Color.Transparent;
+ this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.label6.Location = new System.Drawing.Point(19, 148);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(86, 20);
+ this.label6.TabIndex = 6;
+ this.label6.Text = "Username";
+ //
+ // Username
+ //
+ this.Username.Animated = true;
+ this.Username.BorderRadius = 3;
+ this.Username.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.Username.DefaultText = "";
+ this.Username.DisabledState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(208)))), ((int)(((byte)(208)))), ((int)(((byte)(208)))));
+ this.Username.DisabledState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(226)))), ((int)(((byte)(226)))), ((int)(((byte)(226)))));
+ this.Username.DisabledState.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.Username.DisabledState.Parent = this.Username;
+ this.Username.DisabledState.PlaceholderForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(138)))), ((int)(((byte)(138)))), ((int)(((byte)(138)))));
+ this.Username.FocusedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Username.FocusedState.Parent = this.Username;
+ this.Username.Font = new System.Drawing.Font("Segoe UI", 9F);
+ this.Username.HoverState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Username.HoverState.Parent = this.Username;
+ this.Username.IconLeft = global::SIPP.Properties.Resources.icons8_customer_100px;
+ this.Username.IconLeftSize = new System.Drawing.Size(25, 25);
+ this.Username.Location = new System.Drawing.Point(23, 176);
+ this.Username.Name = "Username";
+ this.Username.PasswordChar = '\0';
+ this.Username.PlaceholderText = "Username";
+ this.Username.SelectedText = "";
+ this.Username.ShadowDecoration.Parent = this.Username;
+ this.Username.Size = new System.Drawing.Size(380, 40);
+ this.Username.Style = Guna.UI2.WinForms.Enums.TextBoxStyle.Material;
+ this.Username.TabIndex = 5;
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label5.ForeColor = System.Drawing.SystemColors.ControlDarkDark;
+ this.label5.Location = new System.Drawing.Point(20, 100);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(233, 17);
+ this.label5.TabIndex = 2;
+ this.label5.Text = "Masuk untuk menggunakan aplikasi";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label4.Location = new System.Drawing.Point(18, 70);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(76, 25);
+ this.label4.TabIndex = 1;
+ this.label4.Text = "Masuk";
+ //
+ // guna2Panel2
+ //
+ this.guna2Panel2.BackColor = System.Drawing.Color.White;
+ this.guna2Panel2.Controls.Add(this.label1);
+ this.guna2Panel2.Controls.Add(this.Minimize);
+ this.guna2Panel2.Controls.Add(this.Close);
+ this.guna2Panel2.Dock = System.Windows.Forms.DockStyle.Top;
+ this.guna2Panel2.Location = new System.Drawing.Point(0, 0);
+ this.guna2Panel2.Name = "guna2Panel2";
+ this.guna2Panel2.ShadowDecoration.Parent = this.guna2Panel2;
+ this.guna2Panel2.Size = new System.Drawing.Size(430, 53);
+ this.guna2Panel2.TabIndex = 0;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.label1.ForeColor = System.Drawing.Color.Black;
+ this.label1.Location = new System.Drawing.Point(19, 15);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(91, 23);
+ this.label1.TabIndex = 13;
+ this.label1.Text = "Login SIPP";
+ //
+ // Minimize
+ //
+ this.Minimize.ControlBoxType = Guna.UI2.WinForms.Enums.ControlBoxType.MinimizeBox;
+ this.Minimize.Dock = System.Windows.Forms.DockStyle.Right;
+ this.Minimize.FillColor = System.Drawing.Color.White;
+ this.Minimize.HoverState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Minimize.HoverState.IconColor = System.Drawing.Color.White;
+ this.Minimize.HoverState.Parent = this.Minimize;
+ this.Minimize.IconColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.Minimize.Location = new System.Drawing.Point(282, 0);
+ this.Minimize.Name = "Minimize";
+ this.Minimize.ShadowDecoration.Parent = this.Minimize;
+ this.Minimize.Size = new System.Drawing.Size(74, 53);
+ this.Minimize.TabIndex = 5;
+ //
+ // Close
+ //
+ this.Close.Dock = System.Windows.Forms.DockStyle.Right;
+ this.Close.FillColor = System.Drawing.Color.White;
+ this.Close.HoverState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.Close.HoverState.IconColor = System.Drawing.Color.White;
+ this.Close.HoverState.Parent = this.Close;
+ this.Close.IconColor = System.Drawing.Color.FromArgb(((int)(((byte)(46)))), ((int)(((byte)(55)))), ((int)(((byte)(80)))));
+ this.Close.Location = new System.Drawing.Point(356, 0);
+ this.Close.Name = "Close";
+ this.Close.ShadowDecoration.Parent = this.Close;
+ this.Close.Size = new System.Drawing.Size(74, 53);
+ this.Close.TabIndex = 3;
+ this.Close.Click += new System.EventHandler(this.Close_Click);
+ //
+ // guna2DragControl1
+ //
+ this.guna2DragControl1.ContainerControl = this;
+ this.guna2DragControl1.TargetControl = this.guna2Panel2;
+ //
+ // ShowPassword
+ //
+ this.ShowPassword.AutoSize = true;
+ this.ShowPassword.CheckedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.ShowPassword.CheckedState.BorderRadius = 0;
+ this.ShowPassword.CheckedState.BorderThickness = 0;
+ this.ShowPassword.CheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(16)))), ((int)(((byte)(30)))), ((int)(((byte)(133)))));
+ this.ShowPassword.Location = new System.Drawing.Point(278, 319);
+ this.ShowPassword.Name = "ShowPassword";
+ this.ShowPassword.Size = new System.Drawing.Size(125, 21);
+ this.ShowPassword.TabIndex = 13;
+ this.ShowPassword.Text = "Lihat password";
+ this.ShowPassword.UncheckedState.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(125)))), ((int)(((byte)(137)))), ((int)(((byte)(149)))));
+ this.ShowPassword.UncheckedState.BorderRadius = 0;
+ this.ShowPassword.UncheckedState.BorderThickness = 0;
+ this.ShowPassword.UncheckedState.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(125)))), ((int)(((byte)(137)))), ((int)(((byte)(149)))));
+ //
+ // Login
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.White;
+ this.ClientSize = new System.Drawing.Size(430, 513);
+ this.Controls.Add(this.guna2Panel1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "Login";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Login";
+ this.Load += new System.EventHandler(this.Login_Load);
+ this.guna2Panel1.ResumeLayout(false);
+ this.guna2Panel1.PerformLayout();
+ this.guna2Panel2.ResumeLayout(false);
+ this.guna2Panel2.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+ private Guna.UI2.WinForms.Guna2Panel guna2Panel1;
+ private Guna.UI2.WinForms.Guna2Panel guna2Panel2;
+ private Guna.UI2.WinForms.Guna2ControlBox Minimize;
+ private Guna.UI2.WinForms.Guna2ControlBox Close;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label6;
+ private Guna.UI2.WinForms.Guna2TextBox Username;
+ private System.Windows.Forms.Label label7;
+ private Guna.UI2.WinForms.Guna2TextBox Password;
+ private Guna.UI2.WinForms.Guna2Button Tombol_Masuk;
+ private Guna.UI2.WinForms.Guna2DragControl guna2DragControl1;
+ private System.Windows.Forms.Label label1;
+ private Guna.UI2.WinForms.Guna2ShadowForm guna2ShadowForm1;
+ private Guna.UI2.WinForms.Guna2CheckBox LihatPassword;
+ private Guna.UI2.WinForms.Guna2CheckBox ShowPassword;
+ private Guna.UI2.WinForms.Guna2Button Tombol_Daftar;
+ }
+}
\ No newline at end of file
diff --git a/app/view/winform/Login.cs b/app/view/winform/Login.cs
new file mode 100644
index 0000000..fcacae1
--- /dev/null
+++ b/app/view/winform/Login.cs
@@ -0,0 +1,77 @@
+using SIPP.controller;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace SIPP.view.winform
+{
+ public partial class Login : Form
+ {
+ CekLogin login = new CekLogin();
+ public Login()
+ {
+ InitializeComponent();
+ }
+
+ private void Login_Load(object sender, EventArgs e)
+ {
+ guna2ShadowForm1.SetShadowForm(this);
+ }
+
+ private void Tombol_Masuk_Click(object sender, EventArgs e)
+ {
+ if(Username.Text =="" || Password.Text == "")
+ {
+ MessageBox.Show("Username dan Password tidak boleh kosong!", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
+ }
+ else
+ {
+ string username = Username.Text;
+ string password = login.HashMD5(Password.Text);
+
+ bool status = login.cek_login(username, password);
+ if (status)
+ {
+ SIPP sip = new SIPP();
+ MessageBox.Show("Selamat Datang!", "Informasi", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ sip.Show();
+ this.Hide();
+ }
+ else
+ {
+ MessageBox.Show("Periksa kembali username dan password anda!", "Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+ }
+
+ private void guna2CheckBox1_CheckedChanged(object sender, EventArgs e)
+ {
+ if(LihatPassword.Checked == true)
+ {
+ Password.PasswordChar = '\0';
+ }
+ else
+ {
+ Password.PasswordChar = '\u25CF';
+ }
+ }
+
+ private void Tombol_Daftar_Click(object sender, EventArgs e)
+ {
+ Daftar daftar = new Daftar();
+ daftar.Show();
+ this.Hide();
+ }
+
+ private void Close_Click(object sender, EventArgs e)
+ {
+ Application.Exit();
+ }
+ }
+}
diff --git a/app/view/winform/Login.resx b/app/view/winform/Login.resx
new file mode 100644
index 0000000..643f064
--- /dev/null
+++ b/app/view/winform/Login.resx
@@ -0,0 +1,1889 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+
+ AAABAAYAAAAAAAEAIAB4FgAAZgAAAICAAAABACAAKAgBAN4WAABAQAAAAQAgAChCAAAGHwEAMDAAAAEA
+ IACoJQAALmEBACAgAAABACAAqBAAANaGAQAQEAAAAQAgAGgEAAB+lwEAiVBORw0KGgoAAAANSUhEUgAA
+ AQAAAAEACAYAAABccqhmAAAWP0lEQVR42u3dWZAcd30H8G93z33sqWN1WFqt1pIP2bJkJBsfAdsFtoHY
+ gcIBDCFSpaDihEpBJU+8JE8pHvIQEkIqBCoqKsaYhMRgmxBjBRAgS9iWvLqv3R1p73tnds6ePvKwaC3J
+ q+mZnb77+6nChbWtmf+/vf3t/v/63/8WQGSxfX2Z2wA8CeB+AHcC2AggDUB0um0epgMoARgFcAHAmwBe
+ A3DkwM5urd4PEZzuBfnTvr5MGMCzAL4E4H1OtydALgP4FoBvHtjZPW+0MQOATLevL/MEgK8D2OZ0WwJs
+ FsBfA/jnAzu71ZttxAAg0+zry8SxeOB/wem20JJDAJ49sLN7ZLkfMgDIFPv6MqsBvAJgr9NtofcYA/DR
+ Azu7j9/4AwYANW1fX6YTwC8A7HC6LXRTcwAePbCz+51r/5ABQE3Z15eJADgI4CGn20KGxgDsPbCze/jq
+ H/A2DDXrb8GD3yvWAfjevr6MdPUPGAC0Yvv6MvcB+LLT7aCGPAzguav/wiEArcjn3xmAKIi/BvCg022h
+ hs0C6DmwszvLKwBaEVEQHwEPfq/qwO+uAhgAtFJ/6nQDqClf3HciI3AIQA3b15dJAJgCkHC6LdSU+0NO
+ t4A86UH47OD/xI9fxOrpyZrbfOePn4Mi+eqQ+ZCvekO28d1svw1jw9g4cqXmNoKuO91Ms+1lDYBWYrvT
+ DSBTbGMA0Ep0Od0AMkUXA4BWIup0A8gUKQYArQTvHvmDxAAgCjAGAFGAMQCIAoxjOWrYvr7MISw+VeYJ
+ kqpi6+BFbLt0DuvHhtExN4NYpXzdff2IXIGo1V5MtxyLL/1/XQDkSBRzrR0YXbcB/T3bcL73NlTDEae7
+ 2xAGADXMKwEQkSt46MghPHDkENL5nOXfV47F8Obu9+MXDz+GfDLtdPfrwgCghnkhAG4/fxoff/kHaM3N
+ 2/7d5VgcrzzxB3hz9/1O7wZDnApMviLoOj78fz/BI4d+5tjU3Vi5hE++9AK2XO7HD5/6NFRJav5DLcIi
+ IPnKUz/5Lzz6y9dcMW//3uO/xede/DfD2oKTGADkGw8f/jkeOHrI6WZc545zJ/H7P/1vp5txUwwA8oUN
+ Y8N48mcvO92MZT1w5BDuOHfK6WYsiwFAvvD0K/8BSVWb/yCLPPWTHyKkKE434z1YBCTP237xLDYPZere
+ XhcE5FPpphb3EDUNqcJC3aHTPj+L9x0/iiN73LWMIgOAPO++t35T13aFRBKvP/Ikjt99L0rx5hc0CitV
+ bL9wBo8ffBVrpiaM2/nmbxgARGaKVGVsv3jWcLuZjlX41v4vYb613bTvrobCOHXHTlzovR2ff+HbuLX/
+ fM3t14+PoHN2GjMdq5zebUtYAyBPu2X4suHYWhNEPP+p/aYe/NeSIxE8/4f7sZBqMdx2y+V+R/bTzTAA
+ yNNWTxtfep/bdgdG1m20tB2leByH7zOeHLl2cty2fVMPBgB5Wjq/YLhNf8+ttrSlv2ebcXsXrH8moREM
+ APK0em6tlWL2rGCeTyQNt4lUZVvaUi8GAHmaXMfjt212PRBUz3t2XDBF+VoMAPK0bGub4TZ3nDvpdDNd
+ i7cBydPGujYYbrNx5Ap2njyGvrt2W9qWajiCC7231dxm1OJiZKMYAORpY13rUUgkkSwWam73yR99H6V4
+ wvAAbUYu3YLvfP45p3dJQ9z7oDK51j3PfXk/gM1OtwNYnNbbOTeDjaNDNbeTVBW7TryNNdMTUMJh5FMt
+ UEI8/3EPkOcd3vsw9r512HANAEHXsfPkMew8eQyaKGJ03Ub0d/diYEsvMpu2ohyLOd0V23FJMGqYG5cE
+ +8x/fhf3nHh7xX//aiAMdPeif0svMpt6rlsE1K8YANQwNwZAeiGHr/zT1wxrAfXSRBGjXRswsOVWDHT3
+ YnCzPwOBAUANc2MAAIuPBe97/luWLMH1biD0YqC7F5nNW1HyQSAwAKhhbg0AANj9zpt45qXvWb4OnyaK
+ GOvasDRkGNy81ZNXCAwAapibAwBYnPjz6R/+O6KVsm3fqUoSzvfejjfue9jSW41mYwBQw9weAADQMTeD
+ T/z4RcNn9K0w2L0VL330GYyvXef0bjDEeQDUMDfNA7iZUjyBY/fsQWbzViRKJXTOTdu2VHj7/Bz2HD+C
+ fDKNkfW3OL0rauIVADXMC1cAN0oUC+gdvIiewYvoGbyENdMTtgTCa49+BAc/+LjT3b8pBgA1zIsBcKNU
+ fgE9mUuL/7M4EF762DN4Y+9DTnd5WQwAapgfAuBG1wbC1sFLWG1iIKiShG9+4SsYduFwgAFADfNjANzo
+ xkBYM9XcUl6jXRvwD8/9FXTBXU/g81kAomXkU2mc2LELJ3bsAvBuIGzNXELP4EWsnpqEgPqvENaPj2Dn
+ yeN45+57ne7adRgARHW4MRDSvwuEHWf6cNfpPgi68cSjh974JQOAyA8WUmn07diFvh270H1lAH/0wneQ
+ KuRr/p1bRi677r0ADADytG2XzuHuU8drbvPW7vuQ2dRjWRsym3pw4HNfxHP/+nVIWu1XhfUOXGAAEJll
+ 7eQY9hw7UnObzOYeSwMAAIY2bMaxXXuw5+3abVk/Nmz7PqrFXSVJIg87cecuw23a5uecbuZ1GADkfzat
+ xD3b3mm4TVSuOLwzrheaePrpPU43wm7nWjbhL3f/eeDCT1MUXatWmj4c1KqeksLumEKi1vGK73i5aEtb
+ InUc3KrkrsdvQgB+63Qj7CZc809qXGlBQaoj7HQzACxW441sudyPXz3wiOVt2XJ5wHCbQjJly36pV+DO
+ guQvk6vXGm5z+/nTTc/kMxJSqnjwyC+N27vKuL12YgCQp02u7kLR4J18oqbhsz84gKTBffqVEjUNn3zp
+ ++icnTbcNrPZ2rsRDbfd6QYQNUMXBJy5bYfhdl0TY/iLf/k73H3qOCRVreOT67NpOIMvHvgGdp14y3Db
+ YiKJwc1bHd1fN+I8APK8o/c+gPcdO2q4Xdv8HD77gwOoRKKYWrUGSmjldQxR09A+P4t0vv7Xfb+1a68r
+ i4BEnnbllm5c3Lq97uW/onLF8E1CZpMjEVsKkY3iEIB84eUnP+HqV30d/MDjyKVbnW7GezAAyBcm1nTh
+ 1cefdroZy7rUsw2HHnzU6WYsiwFAvnH4vt/Dr9//AaebcZ3xtevw/Kf2QxPdeai595qJaAVeeeLjqIYi
+ eORXP3O6KbiysRsHPvcFFOMJp5tyUwwA8hVdEPDTD30Mwxs24eMvv2j4jL4VNFHEr9//AfzvYx9zdV0C
+ YACQT5264270b+nFB3/1Ou5/6zeIla1/S5AuCDi7/U689uhHMNa1weldUBcGAPlWKZ7A/3z4KRz84BO4
+ /fwp3HbxDDaODKF9fgbharXpz9dEEQupFox1rcelnm04eec9mG9td7rbDWEAkO/JkQj67tqNvrt2AwAE
+ XYeoadct+/1n3/57bDCYG/A3X/0aqtdMHtJE0bXFvXoxAChwdEF4z4w8XTB+OlQJhVw/pm+Ut+OLiJrC
+ ACAKMAYAUYAxAKhhunlP05KDNEVjAFDjqrLxW3DI/aplhQFAjZMLvATwg3KubM5tQCGsQ4zb80uh5iVA
+ c8eCnq3SAtKi9SvOahAwWl3jdHeXFLOK000wXbalDfFS7f+Wus8Wki1MF80JgOimEloeM14PzQwz318P
+ NeeOe7H7O17CZ9tftfx7cmoKj/V/2+nuLsnPKtA1HYLonwPiu5/5E6ebYLvcWI5DAGqcpujITTU/lZac
+ Uy1VsTCRZwDQysxccdcbbqgxUxdnoGs6A4BWJjcpo5TzXy0gCDRFw8TZSQCcB0BNGD1rzyu3yFyjJ8dR
+ LS0O4RgAtGIL01XMDnEo4CXFuRLGTr37liQGADVl+HQB5QXOC/ACVVZx6RcD0NV3H4NmAFBTNFXHwJs5
+ yCXODnQzTdVw8ef9KGevXxmJAUBNk0saLh3JocIZgq6kVlVcONiP3NjCe37GACBTyEUVFw9nkZvk/AA3
+ Kc2XcebV88iNLv8KM3dMqSNfUOTF4UDnpijWbU8gFOH5xSm6qmP8zARG+sagKTcfnjEAyHQzVyqYH5Wx
+ alMYnZtjiCRW/hJOaoxaVTHdP4vxU+Oo5GXD7RkAZAlV0THRX8HI24NIrYqhdWMr0muSiLfFIUXc9YZc
+ L9MUDeVcBfmpPLKjOWRHcjXP+DdiAJB1BAFiog258Snkxt8tQIkhEVJYQh3rcBpaf/c6rLltte1dmx/K
+ YujtEaiyM7MhdSwe/GpVXfyXFWIAkKXEaBJitAitUlj6M03RGjpL1RJtidraH7lYxZWjQ5i9PGfr91qF
+ AUCWC6U7UVVk6Kr5dwiSnfa8d0/XdUyem8LwsdHFs65PMADIeoKIUOtaKPPj0DXzLpmjqQhCUet/hYuz
+ RQwevoLCdKH5D3MZBgDZQpBCCLV1QclOmHYlkOxMWtpmVdEwcnwUE2cnoWtNDLRdjAFAthGkEMLt66As
+ zFxXE1ipxCrrLv/nh7LIHL0CuY5baV7GACB7CSJCLauhVRJQC3PQ1ZUPCawY/8vFKi4fvYK5y/MO7iR7
+ COEYA4CcIUaTECMJaJU81NICdKXxM62ZAeDXIt9yxEgcYrwFYiTOACAHCQLEWBpiLA1dVaDLJWhKBbpS
+ BTQVun7zW4VmFgCLM0UMvmFRkU9wdjq0IIqAGIIghSGGoxAjcUB8dyIWA4BcQZBCEOJpiEjXtX3rukjT
+ 37lU5DszCV03ucgniJCSbZDiLVbsLtMwAMiT4q3N/erOD2WROXIFcsH8Ip8YTUBKdUIQ3T/lmQFAnpRY
+ YQDIRRmXjw5ZUuQTpBCkVAfEiD2Tk8zAACBPirc09qtrbZFPgJRIQ0q0w5QHHGzEACDPiSREhCL1H2iF
+ mSIyFhX5hFAUoXQnhFDzNQknMADIc+q9/NcUHcPvjGHi9LhFRb52SPH6ipZuxQAgz6mnAJidkDFyuoD8
+ 0ARg8sEvRpOQUh2eKPIZYQCQ59S6AqiWNQyfLiA7Li/OMtTNW614scjXuXgv3ScYAOQ5yxUAdR2YvlzG
+ +PkiVGXxjK8rZr20RICUaIGUaPNckc8IA4A8ZbkCYCmrYOhkAcXs9c8VrGR68Y2EcBShlHeLfEYYAOQp
+ 117+a4qOsQtFTGfKyw7zmwoAnxT5jDAAyFOuFgCvFvlqvZFIq65sCOCnIp8RBgB5SjgiYvDtBWTHa5/d
+ V1IA9GORzwgDgDxl6FS+ruO6sQKgf4t8RhgA5Cn1ntTrHf/7vchnhAFAvmR4BRCQIp8RBgD5kla9+RVA
+ kIp8RhgA5Ds3KwAGschnhAFAvvPey//gFvmMMADId64tAAa9yGeEAUC+oyuVxeXHk+0QA17kM8IAIP8R
+ wwh3rGaRrw4MAPKdULrT6SZ4hrOLlhORoxgARAHGACAKMNYAqKaOuIhndsScbsaSF06UkKv481XdTmAA
+ UE2pqIAnb4063YwlPzpbZgCYiEMAogBjABAFGAOAKMAYAEQBxgAgCjAGAFGAMQCIAozzAKimibyGr76+
+ 4HQzlsyWOAfATAwAqqmi6DgzqTT/QeRKHAIQBRgDgCjAGABEAcYAIAowBgBRgDEAiAKMAUAUYAwAogBj
+ ABAFGAOAKMAYAEQBxgAgCjAGAFGAMQCIAowBQBRgDACiAGMAEAUYA4AowBgARAHGACAKMAYAUYAxAIgC
+ jAFAFGAMAKIAYwAQBRgDgCjAGABEAcYAIAowBgBRgDEAiAKMAUAUYAwAogBjABAFWMjpBpC7tUQFPLIl
+ 6nQzlrw+UEFB1p1uhm8wAKimtriI/bvjTjdjydFhmQFgIg4BiAKMAUAUYKYMAXQd0FXB6b7YTtElVPSI
+ 5d8j62Gnu0o+ZUoAVAYSmBpION0X231j+ll8Y/pZp5tBtGIcAhAFGAOAKMAYAEQBxnkAVNNsUcM/Hik4
+ 3Ywl2QrnAJiJAUA15WUdBwdkp5tBFuEQgCjAGABEAcYAIAowBgBRgDEAiAKMAUAUYAwAogBjABAFGAOA
+ KMAYAEQBxgAgCjAGAFGAMQCIAowBQBRgDACiAGMAEAWYbQuCyNUqyrKMarUKRVWh6Ysru4iiiLAkIRIO
+ IxaNIiRJTu8T8+g61HIeajkPTS5BV2TomgZBECBIIQjhGKRYElK8BYLEtVnIfpb/1pUrFSwUi6gqyrI/
+ V1UVqqqiLMvIFQqIRiJoSSYRDnn4gNB1KPlZVHPT0NXqcj+GrqlAtQK1mAWEMYQSbQi3roEQ4jsAyD6W
+ HWWapmF+YQFlubHlpCqyjClZRjIeR0syCUHw1gtHtGoZ8vQwtGq5/r+k61AKc1CKWUTauxBKdTjdDQoI
+ SwJAUVXMZLNQVXXFn1EolVBVFHS0tkL0SAio5TwqU1cAXVvZB+ga5NlRaHIZkY71TneHAsD0IqCqaZiZ
+ n2/q4L9KrlYxm81C192/EqxaLqAydXnlB/81lPws5NlRp7tEAWBqAOgAZrNZqFrzB8FVcrWKbD5v935p
+ rN9qFfL00OLg3iRKfhZKftbprpHPmRoAhRrFvmYUy2VUGqwl2EmeHYOumd9veW582SIikVlMCwBN17FQ
+ LFrW0FzBPS+nuK7flSLUUs6aD9c1VLOTTneRfMy0ACiWSpaO1auKArnqvrNhdWHG0s9XCvOLtwyJLGBa
+ AJQqFcsba8d3NETXoJYWLP4O3borDAo8UwJA03VLxv43clsdQK2UTKn6G9HK7hz+kPeZEgCKDQc/sDi/
+ wE23BPVGJvs0oaFJRUQNMOcKwMTbfobf5aYAUO0JPru+h4LHlACw9ZB0UQDY1nNX9Zn8xJQAsHOqrque
+ DRBseppa9NETkuQqpvwGSzY9wisIAkTRPUsYCKGILd8j8glBsogpR1NIkmy5Coi47BFhMRK36XsSTneV
+ fMq002k0Yv3ZMBqNWv4djRDDUVuuAqR4yumukk+ZFgCJWMzShgqCgITLAgAAQql2a/sdikKMJp3uJvmU
+ qVcAVl6iJ2IxV43/rwqlOiBYWKQLt65yuovkY6YeUS3ptDWNFEWkE+4cBwuihHDbWmv6HU0glLT2CoOC
+ zdQAiIRCaEmaf7nank678ux/VSjVASnRYupnCqKEaOdGp7tGPmf6UZVKJJCMm1cdb0unbSkwNivaudG0
+ sbogioiu3mzbbUYKLktOq62pVNOX7IIgoL2lxfLiomkEEbE1m5u+EhCkMKJrtkCMunPIQ/5iWdUunUwi
+ Eokgu7AApcH1AaPhMFrTae+9I0AQEV21CUp+DtX58Yaf4w8l2xBuX2dpUZHoWpbOrImGw1jT0YFiuYxi
+ uVxzQQ9BEBANh5GMxz1xyV9LKNUOKdEKJT8LtTAHrXrzdQwEUYKUaEEo3Qkx7JGrHfINW6bWJWIxJGIx
+ aJoGWVGgqurSE4SiKCIUCiESCrlrnn+TBFFEuGUVwi2roCsyNLkETakCugpAgCCFIUZiiwe9j/pN3mLr
+ 3FpRFBHz+Nl9JYRQBFIoAl7Yk9u4994aEVmOAUAUYAwAogBjABAFGAOAKMAYAEQBxgAgCjAGAFGAMQCI
+ AowBQBRgDACiAGMAEAUYA4AowBgARAHGACAKMAYAUYAxAIgCjAFAFGAMAKIAYwAQBRgDgCjAGABEAcYA
+ IAowBgBRgDEAiALs/wH3VRPlGRc8ZwAAAABJRU5ErkJggigAAACAAAAAAAEAAAEAIAAAAAAAAAABAAAA
+ AAAAAAAAAAAAAAAAAABPT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/01N
+ 5v9FRd3/QUHX/z8/1f9BQdj/Rkbe/05O5/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/TizP/w4Av/7p6Lf+4eCz/vHst/8iDMP/XjjT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9GRt7/OzvQ/zo6z/86Os//OjrP/zo6z/86Os//OzvR/0dH
+ 4P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/wn8v/65yKv+tcSr/rXEq/61xKv+tcSr/rXEq/7F0
+ K//MhjH/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/RETc/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/0ZG3v9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/758
+ Lv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/65xKv/LhTH/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0pK4v86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrQ/0xM5f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/KhDD/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/69zK//VjDP/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/QEDW/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//QkLZ/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/7R2
+ LP+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/8J/L//ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/05O6P86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/88PNH/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/TizP/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/tXYs/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/TEzl/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/9OTuj/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/86H
+ Mf+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+vcyv/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9MTOX/OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/05O6P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/zogy/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/7BzK//ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f87O9D/OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/89PdP/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/WjTP/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/uHgs/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0JC2f86Os//OjrP/zo6z/86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/86Os//OjrP/0RE3P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+5eS3/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv/HgzD/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/TEzm/zs70P86Os//OjrP/zo6z/86Os//OjrP/zo6z/86Os//OjrP/zo6z/88PNL/Tk7n/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9CJMv+ucir/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/tHYs/9iO
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SUnh/zs70P86Os//OjrP/zo6
+ z/86Os//OjrP/zo6z/86Os//OzvR/0pK4/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/8mEMP+ucSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/7F0K//SijL/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/S0vk/z8/1f86Os//OjrP/zo6z/86Os//OjrP/0BA1v9MTOX/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/86HMf+1diz/rXEq/61xKv+tcSr/rXEq/61xKv+7ey3/1Iwz/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0tL
+ 5P9GRt7/RUXd/0dH3/9MTOX/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/QiTL/xoIw/8SBL//IhDD/1Isz/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/Uqnf/2cSp/9nEqf/ZxKn/2cSp/9nEqf/ZxKn/2cSp/9nE
+ qf/ZxKn/2cSp/9nEqf/ZxKn/2cSp/9nEqf/ZxKn/2cSp/9nEqf/Oijj/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9e7
+ l//e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/86MPP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/TVfr/0GA9P9BgPT/QYD0/0GA9P9BgPT/QYD0/0GA
+ 9P9BgPT/QYD0/0GA9P9BgPT/QYD0/0GA9P9OUur/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/8OUT/+IoZb/iKGW/4ihlv+IoZb/iKGW/4ih
+ lv+IoZb/iKGW/4ihlv+IoZb/iKGW/4ihlv+LoZP/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/17uX/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/zow8/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/Xu5f/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/OjDz/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9Sse//Zx6//2cev/9nHr//Zx6//2cev/9nH
+ r//Zx6//2cev/9nHr//Zx6//2cev/9nHr//Zx6//2cev/9nHr//Zx6//2cev/86LOf/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZ
+ bP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph
+ 7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/9OncP/Yvp3/2L6d/9i+nf/Yvp3/2L6d/9i+nf/Yvp3/2L6d/9i+nf/Yvp3/2L6d/9i+
+ nf/Yvp3/2L6d/9i+nf/Yvp3/2L6d/86KOP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/17uX/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/zow8/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/Xu5f/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/OjDz/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9e7l//e4OD/3uDg/97g
+ 4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/86M
+ PP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/1bCC/9rNvP/azbz/2s28/9rNvP/azbz/2s28/9rNvP/azbz/2s28/9rN
+ vP/azbz/2s28/9rNvP/azbz/2s28/9rNvP/azbz/zos6/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZ
+ bP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/8J/Lv/Bfi7/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/xoEv/61x
+ Kv+1dyz/yIMv/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph
+ 7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/MhTD/rnEq/61xKv+ucir/vXwt/8yFMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP+zdSv/rXEq/61xKv+tcSr/snQr/8WBL//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/SmDv/zYYw/82GMP/NhjD/zYYw/7l5LP+tcSr/rXEq/61xKv+tcSr/rXEq/7l5
+ LP/LhDD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9u8Uv/aulH/z482/82G
+ MP/NhjD/wH0t/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/7BzKv/Bfi7/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/161J/+DRYP/fzV7/1adF/82HMf/GgS//rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+1diz/yIMv/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/Tnj//4NFg/+DR
+ YP/g0WD/3MJX/9CVOv+ucSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+ucir/vXwt/8yF
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/8+PNf/g0WD/4NFg/+DRYP/g0WD/4NBf/8qoSf+wdi3/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/snQr/8WBL//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/97K
+ XP/g0WD/4NFg/+DRYP/g0WD/4NFg/9rGWv+9jzv/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/7l5LP/LhDD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/27xS/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/Qs0//s3ww/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/7BzKv/Bfi7/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8OALv+5eSz/snQr/65yKv+ucir/rnIq/65y
+ Kv/Io0b/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/ezF3/xJtC/65yK/+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+ucir/rnIq/65yKv+ucir/rnIq/65yKv+ucir/rnIq/65y
+ Kv+ucir/rnIq/65yKv+ucir/rnIq/65yKv+ucir/sHMr/7V2LP+/fS3/y4Uw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8eC
+ L/+zdSv/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/72PO//g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/1r5V/7eFNf+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+vcir/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/EgC7/rnIq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/s3ww/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/39Bf/8qo
+ Sf+wdi3/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/x4Iv/65y
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/3Mlb/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9rHWv+9kDv/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZ
+ bP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP+3fC//vpE8/8ahRf/Jpkj/yaZI/8mmSP/Jpkj/yaZI/8mm
+ SP/Jpkj/yaZI/8mmSP/bx1r/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/StlH/yaZI/8mmSP/Jpkj/yaZI/8mmSP/Jpkj/yaZI/8mmSP/Jpkj/yaZI/8mm
+ SP/Jpkj/yaZI/8mmSP/Jpkj/yaVH/8ScQv+5hzb/rnIr/61xKv+tcSr/rXEq/61xKv+tcSr/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//01W6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//ze0+P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/PjTX/2LRN/9/O
+ X//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/axlr/wphA/61yKv+tcSr/rXEq/61xKv9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph
+ 7f8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP+rmWz/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/0po9/9/MXf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/07hS/7B3Lv+tcSr/rXEq/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W
+ 1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9KZPP/fz1//4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/1b1V/691LP+tcSr/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9KYe3/MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//01W
+ 6/9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/q5ls/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//ze0
+ +P/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/OizP/3spb/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/y6lK/61x
+ Kv9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/0ph7f8xtf//MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//TVbr/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP+rmWz/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//N7T4/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9euSf/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/f0F//tYAy/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/SmHt/zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9NVuv/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/6uZbP8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1//8xtf//MbX//zG1
+ //83tPj/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhzH/3stc/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/JpUf/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PUOn/TVbr/01W6/9NVuv/TVbr/01W
+ 6/9NVuv/TVbr/01W6/9NVuv/TVbr/01W6/9NVuv/TVbr/09Q6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/1pA4/82SQv/NkkL/zZJC/82S
+ Qv/NkkL/zZJC/82SQv/NkkL/zZJC/82SQv/NkkL/zZJC/86SQv/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9GVOf/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2dl0v9ZWOD/WVjg/1lY4P+akqL/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9a/Vv9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/059A/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/Xlzb/09P6f9PT+n/T0/p/5WOp//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/3s1e/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/UokL/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9eXNv/T0/p/09P6f9PT+n/lY6n/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/9SiQv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/15c2/9PT+n/T0/p/09P6f+Vjqf/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/1KJC/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/97QYf+9sYH/n5ae/5aOpv+Vjqf/Vlbi/09P6f9PT+n/T0/p/3Ft
+ yf+Vjqf/lo+m/6adl//Lv3P/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/UokL/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+xp43/YmDX/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f94dML/y750/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9Si
+ Qv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/lI2o/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9XVuL/vbGB/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/1KJC/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/6eelf9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9YV+D/z8Fw/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/15W1v/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/XjTP/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/UokL/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/Yymj/WVjg/09P6f9PT+n/T0/p/09P6f9RUef/X13a/2Be2f9gXtn/YF7Z/2Be
+ 2f9gXtn/YF7Z/2Be2f9aWd7/T0/p/09P6f9PT+n/T0/p/09P6f+BfLn/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/XlbW/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9eN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9SiQv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/6iflf9PT+n/T0/p/09P
+ 6f9PT+n/e3bA/9PFbP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+8sYL/XFvd/09P
+ 6f9PT+n/T0/p/1JR5v/WyGr/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9eVtb/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/1KJC/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/hYC2/09P6f9PT+n/T0/p/1ta3v/azGb/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+wpo3/T0/p/09P6f9PT+n/T0/p/7ariP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P
+ 6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P
+ 6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGk9P6RpPT+kaT0/pGl5W
+ 1RrYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iP
+ NBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iPNBvYjzQb2I80G9iP
+ NBvWjTMbzYYwGs2GMBrNhjAazYYwGs2GMBrNhjAazYYwGs2GMBrdxllx4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP94dML/T0/p/09P
+ 6f9PT+n/eXXB/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9TG
+ a/9PT+n/T0/p/09P6f9PT+n/qqCT/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/3dzw/9PT+n/T0/p/09P6f98d77/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/wLR+/09P6f9PT+n/T0/p/09P6f+xp43/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/wLR//7Op
+ iv+zqYr/s6mK/8G1ff/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9jJ
+ aP9vbMr/T0/p/09P6f9PT+n/T0/p/8y/cv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/0MNv/6yjkf+IgrP/XFrd/09P6f9PT+n/T0/p/09P6f9ua8z/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9HDb/+so5H/iIKz/2Ri1f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/UFDo/7uwg//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/RxG7/raOR/4iC
+ s/9kYtX/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bk6H/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/BtX7/dXHF/1BQ6P9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9YV+H/qJ+V/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/pJuZ/1FR5/9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/1dW4v95dML/oZmb/9bIav/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/7Gnjf9QT+j/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9XVuL/eXXB/52V
+ n//BtX3/3s9i/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/ay2b/XFvd/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/V1bh/3l1wf+dlZ//wrZ9/97PYv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/6mflP9PT+n/T0/p/09P6f9PT+n/a2jO/76ygf/ez2L/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/g324/09P6f9PT+n/T0/p/1ZW
+ 4v/Uxmz/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/XyWj/Y2HW/2Nh
+ 1v9jYdb/Y2HW/7Wqif/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP9yb8j/T0/p/09P6f9PT+n/eHTC/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/9bIav9PT+n/T0/p/09P6f9PT+n/rqSP/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/3ZyxP9PT+n/T0/p/09P
+ 6f9ua8v/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/xrp4/09P
+ 6f9PT+n/T0/p/09P6f+1qon/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/joeu/09P6f9PT+n/T0/p/09P6f+1q4j/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/97QYf9+eb3/T0/p/09P6f9PT+n/T0/p/83Acv/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+9soH/T0/p/09P
+ 6f9PT+n/T0/p/1JS5v+GgLX/oJed/6CYnP+gmJz/oJic/6CYnP+gmJz/oJic/6CYnP+bk6H/bWrM/09P
+ 6f9PT+n/T0/p/09P6f9raM7/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAODRYGHg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP91ccX/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/7Sqif/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9DC
+ b/9eXdr/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f+Nh67/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WBh4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/83Acv9sac3/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9RUef/l5Cl/9/QYf/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYGHg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/97QYv+to5D/eXXB/11b3P9UU+X/U1Pl/09P6f9PT+n/T0/p/09P6f9RUef/U1Pl/1VV
+ 4/9nZNP/jYav/8m8dv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgYeDRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/Xlzb/09P6f9PT+n/T0/p/5WOp//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBh4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9eXNv/T0/p/09P6f9PT+n/lY6n/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYF/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/15c2/9PT+n/T0/p/09P6f+Vjqf/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYPsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgR+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/Xlzb/09P6f9PT+n/T0/p/5WO
+ p//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg4gAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WAU4NFg/ODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP+vpY7/qaCU/6mglP+poJT/xLh7/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WCsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADg0WC64NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYFYAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYD/g0WD+4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WDW4NFgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAODRYJXg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg+eDRYDgAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgBeDRYKzg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYPng0WBUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgAuDRYHjg0WD14NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WDW4NFgOAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YBng0WB84NFgxuDRYPDg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/ODR
+ YOTg0WCu4NFgV+DRYAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////wAAAAAAAAA////////
+ ///8AAAAAAAAAP///////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP//
+ /////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAA
+ AAD///////////wAAAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAAAAD///////////wA
+ AAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAAAAD///////////wAAAAAAAAA////////
+ ///8AAAAAAAAAP///////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP//
+ /////////AAAAAAAAAD///////////wAAAAAAAAA///////////8AAAAAAAAAP///////////AAAAAAA
+ AAD///////////4AAAAAAAAA///////////+AAAAAAAAAP///////////wAAAAAAAAH///////////8A
+ AAAAAAAD////////////gAAAAAAAB////////////+AAAAAAAA8oAAAAQAAAAIAAAAABACAAAAAAAABA
+ AAAAAAAAAAAAAAAAAAAAAAAAT0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/TEzl/0dH4P9JSeL/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/8yGMf/KhDD/1Iwz/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/RUXc/zo6z/86Os//OjrP/z4+1P9NTeb/T0/p/09P
+ 6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/0ooy/7N1K/+tcSr/rXEq/65yKv/HgzD/2Y80/9mP
+ NP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/Skrj/zo6z/86Os//OjrP/zo6
+ z/86Os//QEDX/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/7Z3LP+tcSr/rXEq/61x
+ Kv+tcSr/rnEq/9KKMv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/0RE
+ 2/86Os//OjrP/zo6z/86Os//OjrP/zo60P9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9WM
+ M/+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv/GgjD/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9ERNv/OjrP/zo6z/86Os//OjrP/zo6z/87O9D/T0/p/09P6f9PT+n/T0/p/5ty
+ hf/ZjzT/2Y80/9mPNP/WjTP/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/xoIw/9mPNP/ZjzT/2Y80/9iO
+ NP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/S0vk/zo6z/86Os//OjrP/zo6z/86Os//QkLZ/09P
+ 6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/7l5Lf+tcSr/rXEq/61xKv+tcSr/r3Iq/9SM
+ M//ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9HR+D/OzvQ/zo6
+ z/86Os//QEDX/05O6P9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/VjDP/t3gs/61x
+ Kv+tcSr/sXMr/8yGMf/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/05O6P9KSuP/TEzl/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/SijL/0Iky/9iONP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/0p9g/9Olbf/TpW3/06Vt/9Olbf/TpW3/06Vt/9Olbf/TpW3/zYcy/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/0td7P9IaO7/SGju/0ho7v9IaO7/SGju/0ho7v9PUOn/T0/p/09P
+ 6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9OQO/+wmGX/sJhl/7CYZf+wmGX/sJhl/7CYZf/Fk0z/2Y80/9mP
+ NP/ZjzT/2I40/82GMP/NhjD/zYYw/9rNvP/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/86J
+ Nv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/ZxKj/3NTI/9zUyP/c1Mj/3NTI/9zU
+ yP/c1Mj/3NTI/9zUyP/OiTX/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mP
+ NP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P
+ 6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mP
+ NP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L
+ 9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KU
+ UP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5ty
+ hf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iO
+ NP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T
+ 6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ih
+ lv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mP
+ NP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82G
+ MP/RnFv/0qJn/9KiZ//Somf/0qJn/9KiZ//Somf/0qJn/9KiZ//NhzL/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P
+ 6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mP
+ NP/YjjT/zYYw/82GMP/NhjD/2s28/97g4P/e4OD/3uDg/97g4P/e4OD/3uDg/97g4P/e4OD/zok2/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1
+ //9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1
+ //+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/9nGrf/c187/3NfO/9zXzv/c187/3NfO/9zX
+ zv/c187/3NfO/86JNf/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1
+ //8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P
+ 6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP++fC3/xoEv/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P
+ 6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mP
+ NP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/vnwt/61xKv+6eiz/y4Uw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//TlPq/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1
+ //8xtf//iKGW/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/VpUT/zogx/8WBLv+tcSr/rXEq/7BzK//Cfy7/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/09P6f9PT+n/PYv2/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1
+ //8xtf//MbX//zG1//8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/2rtS/93GWf/QmDz/rXEq/61xKv+tcSr/rXEq/7Z3
+ LP/Jgy//zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mP
+ NP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/9esSP/g0WD/4NFg/82t
+ TP+xeS7/rXEq/61xKv+tcSr/rnIq/758Lf/MhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P
+ 6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mP
+ NP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/FgS//v3wt/718
+ Lf/HlT3/4NFg/+DRYP/g0WD/3Mpc/8CVPv+tcSr/rXEq/61xKv+tcSr/s3Ur/718Lf+9fC3/vXwt/718
+ Lf+9fC3/vXwt/718Lf++fC3/wH0u/8mDL/9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//05T6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1
+ //8xtf//MbX//4ihlv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8uE
+ MP+1dyz/rXEq/61xKv+tcSr/snsw/+DRYP/g0WD/4NFg/+DRYP/g0WD/07lS/7WAMv+tcSr/rXEq/61x
+ Kv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/rXEq/61xKv+tcSr/T0/p/09P6f9PT+n/T0/p/z2L
+ 9v8xtf//MbX//zG1//8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KU
+ UP8xtf//MbX//zG1//8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP+6gDH/uoo4/7uMOf+7jDn/u4w5/7uMOf/ezF3/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/fzl//x6JF/7uMOf+7jDn/u4w5/7uMOf+7jDn/u4w5/7uMOf+7izn/toEz/61xKv+tcSr/rXEq/09P
+ 6f9PT+n/T0/p/09P6f89i/b/MbX//zG1//8xtf//MbX//zG1//8xtf//TlPq/09P6f9PT+n/T0/p/5ty
+ hf/ZjzT/2Y80/9mPNP/ClFD/MbX//zG1//8xtf//MbX//zG1//8xtf//iKGW/9mPNP/ZjzT/2Y80/9iO
+ NP/NhjD/zYYw/82GMP/NhjD/zYYw/86LM//Zt1D/4NBg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/XwFb/t4U1/61xKv9PT+n/T0/p/09P6f9PT+n/PYv2/zG1//8xtf//MbX//zG1//8xtf//MbX//05T
+ 6v9PT+n/T0/p/09P6f+bcoX/2Y80/9mPNP/ZjzT/wpRQ/zG1//8xtf//MbX//zG1//8xtf//MbX//4ih
+ lv/ZjzT/2Y80/9mPNP/YjjT/zYYw/82GMP/NhjD/zYYw/82HMf/cwVX/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/93MXf+1gDL/T0/p/09P6f9PT+n/T0/p/z2L9v8xtf//MbX//zG1
+ //8xtf//MbX//zG1//9OU+r/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/8KUUP8xtf//MbX//zG1
+ //8xtf//MbX//zG1//+IoZb/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/UoUH/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/z7JO/09P6f9PT+n/T0/p/09P
+ 6f9OUen/TlPq/05T6v9OU+r/TlPq/05T6v9OU+r/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mP
+ NP/YjzX/05A7/9OQO//TkDv/05A7/9OQO//TkDv/1pA3/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82G
+ MP/NhjD/2bZO/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/6GZ
+ m/9UU+T/dnLE/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/93M
+ Xf9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f+bcoX/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/YjjT/zYYw/82GMP/NhjD/zYYw/9q6Uf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP+fl53/T0/p/3JuyP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/m3KF/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2I40/82GMP/NhjD/zYYw/82GMP/aulH/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/1MZr/5OMqf91ccb/YmDX/09P6f9XV+H/cm/I/4R+t//BtX7/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/5tyhf/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9iONP/NhjD/zYYw/82GMP/NhjD/2rpR/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/0sRt/2Be2f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/UVHn/7Gnjf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f+bcoX/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/YjjT/zYYw/82G
+ MP/NhjD/zYYw/9q6Uf/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/4qEsf9PT+n/Wlnf/5mR
+ o/+gmJ3/oJid/6CYnf+elp7/bmrM/09P6f9cW9z/3c9i/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/T0/pjU9P6Y1PT+mNT0/pjU9P6Y1PT+mNT0/pjU9P6Y1PT+mNT0/pjU9P6Y1PT+mNT0/pjU9P
+ 6Y1PT+mNm3KFjdmPNI3ZjzSN2Y80jdmPNI3ZjzSN2Y80jdmPNI3ZjzSN2Y80jdmPNI3ZjzSN2Y80jdmP
+ NI3ZjzSN2I40jc2GMI3NhjCNzYYwjc2GMI3cwlbc4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP9nZNL/T0/p/6Sbmf/g0WD/4NFg/+DRYP/g0WD/4NFg/9HEbv9PT+n/T0/p/8i7d//g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgsODRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/joit/4F8uv+/tH//4NFg/+DRYP/g0WD/4NFg/+DRYP+6r4T/T0/p/09P
+ 6f/PwnD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YLDg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/czmT/vbKB/5mR
+ o/91ccb/UlLm/09P6f9ybsj/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WCw4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/2Mpn/52V
+ n/91ccX/VFTk/09P6f9PT+n/T0/p/09P6f9nZdL/z8Jw/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgsODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/1MZr/2Vj1P9PT+n/T0/p/09P6f9RUef/bWrN/5GKq/+2rIf/3c9i/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYLDg0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/4uFsP9PT+n/VlXi/5CKq/+2q4j/2Mpo/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADg0WCw4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP9lY9T/T0/p/6GYnP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/9vNZP9ZWOD/WVjg/8m8dv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgsODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/aWbR/09P
+ 6f+Vjqf/4NFg/+DRYP/g0WD/4NFg/+DRYP/BtX7/T0/p/09P6f/Rw2//4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYLDg0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/5iRpP9PT+n/UFDo/3Ftyf94dMP/eHTD/3h0w/92csT/V1bi/09P6f9vbMr/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WCw4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/czWT/enXB/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9iYNf/y750/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFgsODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+6r4T/nJSg/3h0
+ wv9PT+n/YV/Y/5qSov+to5D/2sxl/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYK/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP+fl53/T0/p/3JuyP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WCW4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/s6mK/3x3vv+Ujaj/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgPuDR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYIwAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WCR4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YNHg0WAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgAeDRYGLg0WDQ4NFg++DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD+4NFg5ODRYIzg0WAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////+AA
+ AAD/////4AAAAP/////gAAAA/////+AAAAD/////4AAAAP/////gAAAA/////+AAAAD/////4AAAAP//
+ ///gAAAA/////+AAAAD/////4AAAAP/////gAAAA/////+AAAAD/////8AAAAP/////wAAABKAAAADAA
+ AABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAE9P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/Tk7o/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/140z/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/05O6P9CQtj/OzvQ/zw8
+ 0v9ISOD/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/8+IMv+0diz/r3Iq/7h5Lf/VjDP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/0VF
+ 3P86Os//OjrP/zo6z/87O9D/TU3m/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/7J0K/+tcSr/rXEq/61x
+ Kv+8ey3/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/0FB2P86Os//OjrP/zo6z/86Os//Skri/09P6f9PT+n/iGqe/9mPNP/ZjzT/1Ywz/61x
+ Kv+tcSr/rXEq/61xKv+0diz/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/0ZG3v86Os//OjrP/zo6z/87O9H/TU3n/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/7R2LP+tcSr/rXEq/61xKv++fS7/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9ERNv/PDzS/z4+1P9KSuL/T0/p/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9KKMv+4eS3/sXQr/718Lv/WjTP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/Rnl7/2sq2/9rK
+ tv/ayrb/2sq2/9rKtv/ayrb/0ZlV/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zyQ9/8zrv3/M679/zOu/f8zrv3/R2nv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yZNI/z2y8f89svH/PbLx/z2y8f9Srdf/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/Somb/3NfO/9zXzv/c187/3NfO/9zXzv/c187/0Zxc/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1
+ //8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/QlU3/1bGF/9Wxhf/VsYX/1bGF/9Wxhf/VsYX/z5JH/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1
+ //8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/TpW3/3uDg/97g4P/e4OD/3uDg/97g
+ 4P/e4OD/0p9h/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/Oizr/0JZO/9CW
+ Tv/Qlk7/0JZO/9CWTv/Qlk7/zoo4/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/8yFMP+6ei3/yoQv/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/z400/82GMP+0div/r3Mq/8B+
+ Lv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/169K/9ix
+ TP+8fy//rXEq/61xKv+1div/yIIv/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1
+ //8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/1KFB/+DRYP/bx1r/vpE8/61yKv+tcSr/rnEq/7x7Lf/MhTD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/zYYw/82G
+ MP/NhjD/xoEv/7Z3LP+ydCv/uIIz/+DRYP/g0WD/4NFg/9G0UP+0fjH/rXEq/61xKv+wcyr/sXQr/7F0
+ K/+xdCv/sXQr/7F0K/+ydCv/uXks/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1//8xtf//R2vv/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/zYYw/82GMP/HgzD/t4M0/7iFNf+4hTX/uIY2/9/OX//g0WD/4NFg/+DRYP/dzF3/xZ1D/7iF
+ Nf+4hTX/uIU1/7iFNf+4hTX/t4U1/7J6L/+tcSr/rXEq/09P6f9PT+n/T0/p/zqV+P8xtf//MbX//zG1
+ //8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1//9IsOP/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/zYYw/9OcPv/eylv/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DQYP/Or03/r3Us/09P6f9PT+n/T0/p/zqV
+ +P8xtf//MbX//zG1//8xtf//R2vv/09P6f9PT+n/iGqe/9mPNP/ZjzT/yJNJ/zG1//8xtf//MbX//zG1
+ //9IsOP/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/z482/9/OXv/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/yqdI/09P
+ 6f9PT+n/T0/p/0li7f9Ha+//R2vv/0dr7/9Ha+//TVfr/09P6f9PT+n/iGqe/9mPNP/ZjzT/1JA6/6uZ
+ bP+rmWz/q5ls/6uZbP+xmGT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/1ahF/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/6Kamv93c8P/2ctn/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/3Mpc/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82GMP/NhjD/161J/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/2Mpo/4eBtP9PT+n/zcBy/9zOY//g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/z4gx/82G
+ MP/NhjD/161J/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/9XHa/95dcH/UlHm/09P6f9PT+n/T0/p/11b
+ 3P+roZL/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P
+ 6f9PT+n/T0/p/09P6f9PT+n/iGqe/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/z4gx/82GMP/NhjD/161J/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/4V/tv9QUOj/fnm9/4yF
+ sP+MhbD/i4Ww/2Be2f9TUub/yr11/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/09P6WpPT+lqT0/pak9P
+ 6WpPT+lqT0/pak9P6WpPT+lqT0/pak9P6WpPT+lqiGqeatmPNGrZjzRq2Y80atmPNGrZjzRq2Y80atmP
+ NGrZjzRq2Y80atmPNGrZjzRqz4gxas2GMGrNhjBq27xTt+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2Be
+ 2f9sac3/4NFg/+DRYP/g0WD/4NFg/7Gnjf9PT+n/qqCT/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/8G1fv/GuXn/4NFg/+DRYP/XyWj/uK2F/3Rwxv9PT+n/v7N//+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/GuXn/lI2o/3Bsyv9UVOT/T0/p/09P6f+Mhq//39Bh/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/7Ooi/9SUeb/T0/p/1ta3f98d77/oJic/8e7
+ d//g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2toz/9aWd//v7R//93O
+ Y//g0WD/4NFg/87Bcf+fl53/x7t3/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/2Ff
+ 2P9mZNP/3s9i/+DRYP/g0WD/4NFg/6mglP9PT+n/rqWP/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/5KLqv9PT+n/YmDX/25qzP9uasz/bWrN/1NT5f9bWd7/1MZr/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFghODR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/9zNZP+Vjqf/Z2XS/1dW4f9PT+n/YmDX/3h0wv/Dt3v/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFghODRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/4uFsP9PT+n/1shp/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA4NFgZ+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/7Sq
+ if+Vjqf/28xl/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg4QAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgEODRYOPg0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFgbwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYCfg0WC34NFg+ODR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DR
+ YOHg0WBv4NFgAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA////wAAAAAD////AAAAAAP///8AAAAAA////wAAAAAD////AAAAAAP///8AAAAAA////wAAA
+ AAD////AAAAAAP///8AAAAAA////wAAAAAD////gAAAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAA
+ AAAAAAAAAAAAAAAAAABPT+n/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/dWG3/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/SijL/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f91Ybf/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/3Vh
+ t//ZjzT/2Y80/9mPNP/ZjzT/2Y80/9mPNP/ZjzT/0ooy/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/0xM5v9CQtn/RETb/05O
+ 6P9PT+n/dWG3/9mPNP/ZjzT/zYcx/7x7Lf/JhDD/2Y80/9mPNP/SijL/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/QEDX/zo6
+ z/86Os//Rkbe/09P6f91Ybf/2Y80/9iONP+vcyv/rXEq/61xKv/SizP/2Y80/9KKMv/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P
+ 6f9BQdf/OjrP/zo6z/9HR9//T0/p/3Vht//ZjzT/2I40/7BzK/+tcSr/rXEq/9OLM//ZjzT/0ooy/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP9PT+n/T0/p/01N5/9DQ9v/RUXd/09P6f9PT+n/dWG3/9mPNP/ZjzT/0Iky/799Lv/LhjH/2Y80/9mP
+ NP/SijL/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f91Ybf/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/3Vht//ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/0ooy/82GMP/QlEv/0JZO/9CWTv/Qlk7/z45A/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/0CB9P88jvf/PI73/0Vw8P9PT+n/dWG3/9mP
+ NP/SkT3/caey/3Gnsv9xp7L/wJVS/9mPNP/SijL/zYYw/9vRw//d2tT/3drU/93a1P/VsYX/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/N6D6/zG1//8xtf//P4T0/09P
+ 6f91Ybf/2Y80/82SQv8xtf//MbX//zG1//+wmGX/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f83oPr/MbX//zG1
+ //8/hPT/T0/p/3Vht//ZjzT/zZJC/zG1//8xtf//MbX//7CYZf/ZjzT/0ooy/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/zeg
+ +v8xtf//MbX//z+E9P9PT+n/dWG3/9mPNP/NkkL/MbX//zG1//8xtf//sJhl/9mPNP/SijL/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P
+ 6f9PT+n/N6D6/zG1//8xtf//P4T0/09P6f91Ybf/2Y80/82SQv8xtf//MbX//zG1//+wmGX/2Y80/9KK
+ Mv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/T0/p/09P6f83oPr/MbX//zG1//8/hPT/T0/p/3Vht//ZjzT/zZJC/zG1//8xtf//MbX//7CY
+ Zf/ZjzT/0ooy/82GMP/Xu5f/2MGj/9jBo//YwaP/06Rs/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP9PT+n/T0/p/zeg+v8xtf//MbX//z+E9P9PT+n/dWG3/9mPNP/NkkL/MbX//zG1
+ //8xtf//sJhl/9mPNP/SijL/zYYw/9Sqd//Vrn//1a5//9Wuf//Rm1n/zYYw/82GMP/NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9PT+n/N6D6/zG1//8xtf//P4T0/09P6f91Ybf/2Y80/82S
+ Qv8xtf//MbX//zG1//+wmGX/2Y80/9KKMv/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/FgS//v30t/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/09P6f83oPr/MbX//zG1//8/hPT/T0/p/3Vh
+ t//ZjzT/zZJC/zG1//8xtf//MbX//7CYZf/ZjzT/0ooy/82GMP/NhjD/zYYw/82GMP/NhjD/0ps9/9Ca
+ Pf+tcSr/s3Ur/8aCL//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/T0/p/zeg+v8xtf//MbX//z+E
+ 9P9PT+n/dWG3/9mPNP/NkkL/MbX//zG1//8xtf//sJhl/9mPNP/SijL/zYYw/82GMP/NhjD/zYYw/8iC
+ L//KkTj/4NFg/8+wTv+yei//rXEq/7t6Lf/FgS//xYEv/8WBL//FgS//yYMv/09P6f9PT+n/N6D6/zG1
+ //8xtf//P4T0/09P6f91Ybf/2Y80/82SQv8xtf//MbX//zG1//+wmGX/2Y80/9KKMv/NhjD/zYYw/82G
+ MP+9gTH/tH4x/7WBM//f0F//4NFg/93LXf/CmED/tH4x/7R+Mf+0fjH/tH4x/691LP+tcSr/T0/p/09P
+ 6f83oPr/MbX//zG1//8/hPT/T0/p/3Vht//ZjzT/zZJC/zG1//8xtf//MbX//7CYZf/ZjzT/0ooy/82G
+ MP/NhjD/2bVO/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP/g0WD/3s1e/76Q
+ PP9PT+n/T0/p/0N58v8/hPT/P4T0/0dq7/9PT+n/dWG3/9mPNP/TkDv/gqOd/4Kjnf+Co53/xJRN/9mP
+ NP/SijL/zYYw/9KZPP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+tpJD/xbl5/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/28hb/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/09P6f91Ybf/2Y80/9mPNP/ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9KKMv/NhjD/1KBB/+DRYP/g0WD/4NFg/+DRYP/dzmP/sqiM/2hl0v+HgbT/wbV9/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/T0/p/09P6f9PT+n/T0/p/09P6f9PT+n/T0/p/3Vht//ZjzT/2Y80/9mP
+ NP/ZjzT/2Y80/9mPNP/ZjzT/0ooy/82GMP/UoEH/4NFg/+DRYP/g0WD/4NFg/4N9uP9kYtX/d3PD/3dz
+ w/9XVuH/s6iL/+DRYP/g0WD/4NFg/+DRYP9PT+lGT0/pRk9P6UZPT+lGT0/pRk9P6UZPT+lGdWG3RtmP
+ NEfZjzRH2Y80R9mPNEfZjzRH2Y80R9mPNEfSijJGzYYwRtm3T4bg0WD/4NFg/+DRYP/g0WD/cW7J/8m8
+ dv/g0WD/4NFg/4qEsf+Nh67/4NFg/+DRYP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgWODRYP/g0WD/4NFg/+DR
+ YP/ez2L/taqJ/4+JrP9raM//VlXi/8C0fv/g0WD/4NFg/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WBY4NFg/+DR
+ YP/g0WD/4NFg/4V/tv9hX9j/i4Ww/7Cmjv/Vx2r/4NFg/+DRYP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODR
+ YFjg0WD/4NFg/+DRYP/g0WD/W1re/72ygf/g0WD/4NFg/5GKq/+Qiqv/4NFg/+DRYP/g0WD/4NFg/wAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAA4NFgWODRYP/g0WD/4NFg/+DRYP+Piaz/WFfh/2Nh1v9jYdb/VlXj/7+zgP/g0WD/4NFg/+DR
+ YP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAADg0WBY4NFg/+DRYP/g0WD/4NFg/+DRYP/FuXn/bWrM/5OMqP/SxG3/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYDXg0WD/4NFg/+DRYP/g0WD/4NFg/+DRYP+8sYL/zcBy/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYH3g0WDy4NFg/+DRYP/g0WD/4NFg/+DR
+ YP/g0WD/4NFg/+DRYP/g0WD/4NFg/+DRYNvg0WA7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP//gAD//4AA//+AAP//gAD//4AA//+AAP//wAAoAAAAEAAAACAAAAABACAAAAAAAAAE
+ AAAAAAAAAAAAAAAAAAAAAAAAT0/p/09P6f9PT+n/YljQ/9mPNP/ZjzT/2Y80/9aNM//NhjD/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9LS+T/TEzl/2JY0P/ZjzT/z4gy/9WMM//WjTP/zYYw/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/PT3T/0BA1/9iWND/2Y80/65yKv/Afi7/1o0z/82G
+ MP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/0xM5f9NTeb/YljQ/9mPNP/QiTL/1o0z/9aN
+ M//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f9Ha+//SGfu/2JY0P/Xjzb/pZtz/7mW
+ W//WjTP/0Zxc/9a4kf/UrHr/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/NKr9/zic+v9iWND/05A7/zG1
+ //9xp7L/1o0z/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/T0/p/zSq/f84nPr/YljQ/9OQ
+ O/8xtf//caey/9aNM//NhjD/zYYw/82GMP/NhjD/zYYw/82GMP/NhjD/zYYw/09P6f80qv3/OJz6/2JY
+ 0P/TkDv/MbX//3Gnsv/WjTP/0Zxc/9a4kf/UrHr/zYYw/82GMP/NhjD/zYYw/82GMP9PT+n/NKr9/zic
+ +v9iWND/05A7/zG1//9xp7L/1o0z/82GMP/NhjD/zosz/8CCMf/FgS7/zYYw/82GMP/NhjD/T0/p/zSq
+ /f84nPr/YljQ/9OQO/8xtf//caey/9aNM//NhjD/yYUw/7+FM//byFv/v5Q9/7p+MP+9gDD/u3st/09P
+ 6f87lPj/Por2/2JY0P/VkDn/WqzO/4qhlP/WjTP/zosz/97KW//g0WD/4NFg/83Acv/g0WD/4NFg/9a9
+ Vf9PT+n/T0/p/09P6f9iWND/2Y80/9mPNP/ZjzT/1o0z/9CTOP/g0WD/4NFg/52Vn/93c8P/q6GS/+DR
+ YP/g0WD/T0/pI09P6SNPT+kjYljQI9mPNCPZjzQj2Y80I9aNMyPYs01J4NFg/+DRYP+zqYr/r6WP/4uF
+ sP/g0WD/4NFg/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4NFgLODRYP/g0WD/gHu7/7+z
+ f/+2q4j/4NFg/+DRYP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAODRYCzg0WD/4NFg/6Oa
+ mv9ybsj/saeM/+DRYP/g0WD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg0WAN4NFg2+DR
+ YP/g0WD/0sVt/+DRYP/g0WD/4NFgvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAA=
+
+
+
+ 205, 17
+
+
\ No newline at end of file