diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..0c7a570 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + # Maintain dependencies for GitHub Actions + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/CI_build.yml b/.github/workflows/CI_build.yml new file mode 100644 index 0000000..4729381 --- /dev/null +++ b/.github/workflows/CI_build.yml @@ -0,0 +1,46 @@ +name: Continuous Integration + +on: + push: + paths-ignore: + - 'docs/**' + - '*.md' + - '*.txt' + - 'TestFiles/**' + - 'Meta/**' + - '*.log' +jobs: + build: + runs-on: windows-2022 + strategy: + max-parallel: 4 + matrix: + build_configuration: [Release, Debug] + build_platform: [x64, x86] + + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Add msbuild to PATH + uses: microsoft/setup-msbuild@v1.3.1 + + - name: MSBuild of solution + run: msbuild CsvQuerySolution.sln /p:configuration="${{ matrix.build_configuration }}" /p:platform="${{ matrix.build_platform }}" /m /verbosity:minimal + + - name: Archive artifacts for x64 + if: matrix.build_platform == 'x64' && matrix.build_configuration == 'Release' + uses: actions/upload-artifact@v3 + with: + name: plugin_dll_x64 + path: CsvQuery\bin\${{ matrix.build_configuration }}-x64\CsvQuery.dll + + - name: Archive artifacts for x86 + if: matrix.build_platform == 'x86' && matrix.build_configuration == 'Release' + uses: actions/upload-artifact@v3 + with: + name: plugin_dll_x86 + path: CsvQuery\bin\${{ matrix.build_configuration }}-x86\CsvQuery.dll + + #- name: run tests + # run: TODO: figure out command to run for this \ No newline at end of file diff --git a/CsvGen/App.config b/CsvGen/App.config index 8fc0551..4bfa005 100644 --- a/CsvGen/App.config +++ b/CsvGen/App.config @@ -1,6 +1,6 @@ - + diff --git a/CsvGen/CsvGen.csproj b/CsvGen/CsvGen.csproj index 53f9bac..2019ba8 100644 --- a/CsvGen/CsvGen.csproj +++ b/CsvGen/CsvGen.csproj @@ -8,7 +8,7 @@ Exe CsvGen CsvGen - v4.7.1 + v4.8 512 true diff --git a/CsvQuery/Csv/CsvSettings.cs b/CsvQuery/Csv/CsvSettings.cs index 8d306aa..84494aa 100644 --- a/CsvQuery/Csv/CsvSettings.cs +++ b/CsvQuery/Csv/CsvSettings.cs @@ -120,10 +120,10 @@ public IEnumerable ParseCustom(TextReader reader) { var c = (char)ch; - if (c == '\n' || (c == '\r' && (char)reader.Peek() == '\n')) + if (c == '\n' || c == '\r') { // If it's a \r\n combo consume the \n part and throw it away. - if (c == '\r') + if (c == '\r' && ((char)reader.Peek() == '\n')) reader.Read(); if (inQuotes) diff --git a/CsvQuery/CsvQuery.csproj b/CsvQuery/CsvQuery.csproj index 429ec6a..b129383 100644 --- a/CsvQuery/CsvQuery.csproj +++ b/CsvQuery/CsvQuery.csproj @@ -9,7 +9,7 @@ Properties CsvQuery CsvQuery - v4.7.1 + v4.8 bin\$(Configuration)-$(Platform)\ diff --git a/CsvQuery/Forms/QueryWindow.Designer.cs b/CsvQuery/Forms/QueryWindow.Designer.cs index 0867ebd..01dedb5 100644 --- a/CsvQuery/Forms/QueryWindow.Designer.cs +++ b/CsvQuery/Forms/QueryWindow.Designer.cs @@ -53,9 +53,10 @@ private void InitializeComponent() this.txbQuery.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; this.txbQuery.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource; this.txbQuery.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.txbQuery.Location = new System.Drawing.Point(2, 1); + this.txbQuery.Location = new System.Drawing.Point(3, 1); + this.txbQuery.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.txbQuery.Name = "txbQuery"; - this.txbQuery.Size = new System.Drawing.Size(110, 21); + this.txbQuery.Size = new System.Drawing.Size(145, 24); this.txbQuery.TabIndex = 0; this.txbQuery.KeyDown += new System.Windows.Forms.KeyEventHandler(this.OnQueryTextboxKeyDown); // @@ -68,15 +69,15 @@ private void InitializeComponent() | System.Windows.Forms.AnchorStyles.Right))); this.dataGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dataGrid.ContextMenuStrip = this.contextMenuStrip; - this.dataGrid.Location = new System.Drawing.Point(13, 27); + this.dataGrid.Location = new System.Drawing.Point(17, 33); + this.dataGrid.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.dataGrid.Name = "dataGrid"; this.dataGrid.ReadOnly = true; this.dataGrid.RowHeadersVisible = false; - this.dataGrid.Size = new System.Drawing.Size(259, 223); - this.dataGrid.TabIndex = 1; + this.dataGrid.RowHeadersWidth = 51; + this.dataGrid.Size = new System.Drawing.Size(345, 274); + this.dataGrid.TabIndex = 3; this.dataGrid.DataBindingComplete += new System.Windows.Forms.DataGridViewBindingCompleteEventHandler(this.OnDataBindingComplete); - //this.dataGrid.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders; - //this.dataGrid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; // // contextMenuStrip // @@ -89,37 +90,37 @@ private void InitializeComponent() this.createNewCSVToolStripMenuItem, this.contextmenuShowRowNumbers}); this.contextMenuStrip.Name = "contextMenuStrip"; - this.contextMenuStrip.Size = new System.Drawing.Size(173, 76); + this.contextMenuStrip.Size = new System.Drawing.Size(205, 130); // // copyToolStripMenuItem // this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; - this.copyToolStripMenuItem.Size = new System.Drawing.Size(172, 22); + this.copyToolStripMenuItem.Size = new System.Drawing.Size(204, 24); this.copyToolStripMenuItem.Text = "&Copy"; this.copyToolStripMenuItem.Click += new System.EventHandler(this.OnContextmenuCopy); // // copyWithHeadersToolStripMenuItem // this.copyWithHeadersToolStripMenuItem.Name = "copyWithHeadersToolStripMenuItem"; - this.copyWithHeadersToolStripMenuItem.Size = new System.Drawing.Size(172, 22); + this.copyWithHeadersToolStripMenuItem.Size = new System.Drawing.Size(204, 24); this.copyWithHeadersToolStripMenuItem.Text = "Copy with &headers"; this.copyWithHeadersToolStripMenuItem.Click += new System.EventHandler(this.OnContextmenuCopyWithHeaders); // // contextmenuSelectAll // this.contextmenuSelectAll.Name = "contextmenuSelectAll"; - this.contextmenuSelectAll.Size = new System.Drawing.Size(172, 22); + this.contextmenuSelectAll.Size = new System.Drawing.Size(204, 24); this.contextmenuSelectAll.Text = "Select &All"; // // toolStripMenuItem1 // this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(169, 6); + this.toolStripMenuItem1.Size = new System.Drawing.Size(201, 6); // // createNewCSVToolStripMenuItem // this.createNewCSVToolStripMenuItem.Name = "createNewCSVToolStripMenuItem"; - this.createNewCSVToolStripMenuItem.Size = new System.Drawing.Size(172, 22); + this.createNewCSVToolStripMenuItem.Size = new System.Drawing.Size(204, 24); this.createNewCSVToolStripMenuItem.Text = "Create &new CSV..."; this.createNewCSVToolStripMenuItem.Click += new System.EventHandler(this.OnMenuClickCreateNewCSV); // @@ -127,7 +128,7 @@ private void InitializeComponent() // this.contextmenuShowRowNumbers.CheckOnClick = true; this.contextmenuShowRowNumbers.Name = "contextmenuShowRowNumbers"; - this.contextmenuShowRowNumbers.Size = new System.Drawing.Size(295, 36); + this.contextmenuShowRowNumbers.Size = new System.Drawing.Size(204, 24); this.contextmenuShowRowNumbers.Text = "Show row numbers"; this.contextmenuShowRowNumbers.Click += new System.EventHandler(this.OnContextmenuShowRowNumbers); // @@ -135,9 +136,10 @@ private void InitializeComponent() // this.btnAnalyze.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnAnalyze.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnAnalyze.Location = new System.Drawing.Point(197, 0); + this.btnAnalyze.Location = new System.Drawing.Point(263, 0); + this.btnAnalyze.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btnAnalyze.Name = "btnAnalyze"; - this.btnAnalyze.Size = new System.Drawing.Size(75, 23); + this.btnAnalyze.Size = new System.Drawing.Size(100, 28); this.btnAnalyze.TabIndex = 2; this.btnAnalyze.Text = "&Read File"; this.btnAnalyze.UseVisualStyleBackColor = true; @@ -147,23 +149,25 @@ private void InitializeComponent() // this.btnExec.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.btnExec.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.btnExec.Location = new System.Drawing.Point(116, 0); + this.btnExec.Location = new System.Drawing.Point(155, 0); + this.btnExec.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btnExec.Name = "btnExec"; - this.btnExec.Size = new System.Drawing.Size(75, 23); - this.btnExec.TabIndex = 3; + this.btnExec.Size = new System.Drawing.Size(100, 28); + this.btnExec.TabIndex = 1; this.btnExec.Text = "&Execute"; this.btnExec.UseVisualStyleBackColor = true; this.btnExec.Click += new System.EventHandler(this.OnClickExecButton); // // QueryWindow // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(284, 262); + this.ClientSize = new System.Drawing.Size(379, 322); this.Controls.Add(this.btnExec); this.Controls.Add(this.btnAnalyze); this.Controls.Add(this.dataGrid); this.Controls.Add(this.txbQuery); + this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.Name = "QueryWindow"; this.Text = "QueryWindow"; ((System.ComponentModel.ISupportInitialize)(this.dataGrid)).EndInit(); diff --git a/CsvQuery/Forms/QueryWindow.cs b/CsvQuery/Forms/QueryWindow.cs index 331e226..09b463b 100644 --- a/CsvQuery/Forms/QueryWindow.cs +++ b/CsvQuery/Forms/QueryWindow.cs @@ -372,7 +372,11 @@ private void OnClickExecButton(object sender, EventArgs e) private void OnQueryTextboxKeyDown(object sender, KeyEventArgs e) { - if (e.KeyCode == Keys.Return) this.btnExec.PerformClick(); + switch (e.KeyCode) + { + case Keys.Enter: this.btnExec.PerformClick(); e.Handled = true; break; + case Keys.Tab: e.Handled = true; break; + } } private void OnMenuClickCreateNewCSV(object sender, EventArgs e) diff --git a/Meta/Screenshot.png b/Meta/Screenshot.png index 332421c..db55f29 100644 Binary files a/Meta/Screenshot.png and b/Meta/Screenshot.png differ diff --git a/README.md b/README.md index 505d0be..3f5a0dd 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ CSV Query - Notepad++ plugin [![Build status](https://ci.appveyor.com/api/projects/status/j1r9m77jwiyfsn4u?svg=true)](https://ci.appveyor.com/project/jokedst/csvquery) A plugin to Notepad++ to parse different types of CSV files and display them in a table. -The data is stored in a in-memory SQLite database (or MSSQL if configured), so you can write SQL queries against the data. +The data is stored in a in-memory SQLite database, so you can write SQL queries against the data. It tries to auto-detect separators, headers and column types. If it fails it asks you for it. @@ -13,10 +13,10 @@ It tries to auto-detect separators, headers and column types. If it fails it ask Use modern SQL -------------- -CsvQuery has a built-in SQLite engine. This is quite old, 3.7.7.1, so new features like windowing functions doesn't work. +CsvQuery has a built-in SQLite engine. This is *quite old*, 3.7.7.1, so new features like common table expressions (`WITH` subqueries) and common table expressions don't work. There is no plans on updating this (unless someone else makes a new C# port of SQLite). -However, CsvQuery can also use SQL Server as backend. Then all features in SQL Server can be used right from CsvQuery. +*In principle*, CsvQuery can also use SQL Server as backend. Then all features in SQL Server can be used right from CsvQuery. __*In practice, the ability of CsvQuery to connect to SQL Server has not been tested recently and is probably broken until further notice.*__ To use SQL Server you must first install SQL Server locally. Any version should work (there are free ones). Make sure "Integrated security" is checked during install of SQL Server (it is by default). @@ -52,6 +52,8 @@ CSV Query detects the separator by calculating the variance in occurrence of cha If the first line is "significantly different" from the rest it assumes the first line is a header and use it for the column names in the database. +Prior to 2023, this plugin did not work correctly with files that had CR (Macintosh) newlines, and only worked if the line terminator was LF (Unix) or CRLF (Windows). + Used Libraries -------------- diff --git a/Tests/CsvColumnTypesFacts.cs b/Tests/CsvColumnTypesFacts.cs index c3adfda..740d21e 100644 --- a/Tests/CsvColumnTypesFacts.cs +++ b/Tests/CsvColumnTypesFacts.cs @@ -52,6 +52,24 @@ public void CanDetectNoHeader() Assert.IsTrue(result.Columns[6].DataType == ColumnType.Decimal); } + /// + /// With CR as the newline (rare but not unheard of), + /// the plugin should act the same as if CRLF or LF was the newline + /// + [TestMethod] + public void WorksWithCRNewline() + { + var data = CsvSettings.Comma.Parse(File.ReadAllText(@"TestFiles\random100x10 CR newline.csv")).ToList(); + var result = new CsvColumnTypes(data, null); + // if there are more than 10 columns it's probably because CsvQuery didn't properly recognize CR as a newline + Assert.AreEqual(result.Columns.Count, 10); + // same tests as for previous data with header + Assert.AreEqual(true, result.HasHeader); + Assert.IsTrue(result.Columns[0].DataType == ColumnType.Integer); + Assert.IsTrue(result.Columns[7].DataType == ColumnType.Decimal); + Assert.IsTrue(result.Columns[8].DataType == ColumnType.String); + } + [TestMethod] public void CanDetectLocalCurrency() { diff --git a/Tests/TestFiles/random100x10 CR newline.csv b/Tests/TestFiles/random100x10 CR newline.csv new file mode 100644 index 0000000..14a91ca --- /dev/null +++ b/Tests/TestFiles/random100x10 CR newline.csv @@ -0,0 +1 @@ +AaoboInteger,LebhxShortString,GftghLongString,VnsbqChar,NzgubDate,TuyceDateAndTime,VrnpkDecimal,AnpcfDecimal,LbncsShortString,QofayDate 1173333428,Xo,Btuauqgydcpsevhhxpve,l,2016-05-29,2017-04-17 23:51:14,62.2397037512808,433.096209276978,P,2030-02-11 373796183,Kty,Jgtoiofdkacxjjsqqvbjqppsp,p,2005-12-29,2016-10-09 02:43:07,763.137470820517,504.290156301246,Wtr,2017-05-09 54221135,Jhh,Ibdynvffnaospxtrbzsmyjwigdsxs,c,2011-06-02,2015-09-22 06:56:46,773.22317742427,418.649902762216,Om,2025-03-28 118534601,Wbfn,Dettjnkouayeurjchnlta,y,2008-11-28,2015-07-15 00:34:21,192.684391137531,184.029884722098,Xy,2021-04-23 1872828542,J,Czzeipwzzkjjrcrronutcf,z,2008-09-21,2015-10-06 01:19:23,185.590230014916,231.085224650374,Qe,2008-02-28 1722046836,Opkd,Fvwbytgvneggbijpcxzuq,d,2014-03-23,2016-04-09 03:26:41,333.418010889282,802.05337181783,Op,2007-04-29 1080017296,Ol,Yxbhfxsrbfkdvlelrkimbml,s,2008-04-16,2015-11-20 10:39:08,696.407362211685,222.510836656443,Rz,2023-07-14 1315843898,Ksbp,Wxlifyrlckrvwfyhmljdsfnhjgr,n,2026-06-12,2017-09-25 21:15:01,467.575868343737,404.549003767105,R,2016-06-29 1272050868,Dgt,Bpvswdmrsygsmarkezygeqby,g,2024-03-13,2017-02-16 10:40:40,770.007772729736,355.396203396561,Ifp,2022-05-10 1420186216,Som,Fvcdfspquflehmhkowmdx,s,2012-09-15,2017-10-09 14:48:53,601.170652360269,53.3035770306846,V,2014-07-19 72318779,Pmv,Ioysodpzegdxcjgcvcif,m,2018-10-07,2017-09-08 11:48:03,518.128362259887,159.370356313591,Ugt,2017-09-25 1802748489,Mly,Pdyaitduldzldywneqpumkoyjifr,k,2017-02-25,2016-03-12 12:14:14,664.781667601681,426.951513358835,Mr,2008-06-19 664466638,Tjgb,Qicuqinvvdkeoaranmkz,s,2013-05-26,2017-11-04 15:22:07,764.797215706109,467.481629675013,J,2027-11-17 1659566892,Lfjo,Afkbbzpvhzhddqwgxwchhii,i,2015-12-14,2014-01-05 22:43:22,639.987759124482,67.4724672303873,Seva,2023-04-29 1373638273,Clia,Ntuebffypnjghaswcqcin,v,2019-10-17,2014-08-24 23:30:46,455.904355019286,118.984066936646,Ab,2008-06-09 995879086,Bet,Oejukdkevosryxavfrpsezsyt,f,2027-12-14,2016-02-09 19:40:20,64.3183077053718,788.760765822959,D,2011-06-01 283496643,Xg,Xjljaxkucddqikobkplkafh,y,2007-08-17,2017-10-22 02:05:44,379.254199741061,602.005396318624,Up,2006-05-31 1185057601,Ufgu,Vozdshkluoessmwiscmgznujhobcl,p,2013-02-12,2014-09-05 00:37:57,627.710928501427,637.003943155056,Wac,2019-08-10 1376150664,Ppa,Cwpspcdunzitpwdfiaegjc,c,2027-12-06,2013-12-20 11:27:02,279.451316818339,611.257382021871,Wok,2029-08-20 1640627006,F,Mkwnfacqhclfkkkokuvzutshmo,y,2031-03-11,2015-07-21 09:05:18,400.540806073947,996.860730925976,Ql,2024-11-24 1971313199,R,Izlpxvjdldvozifxtrob,q,2007-03-21,2017-06-19 06:54:01,56.5904886725314,881.220888291123,Z,2020-02-29 2053967186,Mls,Mzjevlclmvtwadloagopkgwjsuw,u,2009-01-28,2014-11-01 15:08:40,666.780633696719,390.293017211507,Gvfo,2020-01-16 1829850071,Y,Phhacwdkqgwcigczlbphgs,e,2014-08-02,2017-09-27 16:12:44,768.208204660662,307.751624988276,A,2016-06-04 830824553,Rf,Pcrszqudlnsxocodvnryxcxzio,y,2015-01-03,2017-02-24 06:44:19,854.139414548007,402.438637522253,Dq,2018-03-19 1920315319,Iqqm,Twiwtclioyzgsmesjlsjyodgu,x,2020-07-22,2015-03-31 22:03:56,356.160215267986,472.206817694105,Alhj,2005-11-17 1365798448,Uv,Whlmwyasbzeycqesccwnuzcbzuldd,b,2029-05-07,2015-06-03 17:26:50,874.713768658561,433.221519195112,H,2022-08-23 1691460321,Zpyh,Scjreiojyiexekmbnwpzbobrp,w,2005-08-14,2016-09-16 09:08:16,189.261967870063,888.54061387877,Vrpj,2028-08-28 973793549,Yuno,Ogechhvmsjhmdarbhhgebkigpb,p,2021-02-11,2014-12-28 19:34:25,915.238562466222,817.623531360935,Nw,2018-04-19 876354942,Tu,Jkfmjdfwusqmhjqdxxnf,s,2010-01-04,2014-12-20 09:43:52,799.24911018426,536.294515960056,Zgnh,2022-03-06 1146772376,Gvq,Wwlvsvagiedgjmmgohdrk,y,2019-01-16,2017-04-06 06:01:03,965.127924906615,359.717977866399,Bdz,2005-04-19 1155809720,Y,Bbkzjsnfqvaduehzyryu,y,2013-02-25,2016-09-29 02:54:41,861.233299067818,365.641653242354,Zd,2013-06-28 319875085,Gll,Ediuzwsxiyfswvacwbdcsuoq,a,2023-06-11,2016-05-08 04:34:06,874.935555679228,493.402015181911,T,2023-05-29 729214502,Dvq,Zxflyxdqdiibtfhiskpsthmwkdfn,j,2008-11-01,2015-02-06 07:47:51,204.474331906286,459.434805651863,Bfxh,2026-10-01 1375464963,Kp,Olmokazsfydsljavsqgy,p,2007-04-12,2015-07-14 01:40:39,760.706768259735,127.432827897106,L,2015-07-28 1231895130,Fisk,Zqqcjezznvjunhzyweqllv,s,2015-12-19,2016-06-26 02:55:58,563.00580388075,583.757626164592,G,2023-09-08 1700564864,A,Bfbnwuqdbxtgxdpajeby,v,2007-10-05,2014-04-17 01:21:22,218.197787282149,750.535864732478,Pvtv,2005-06-29 806872102,Lfux,Hwviturcqlogipycgyhvtbe,u,2014-10-19,2016-11-20 11:05:32,876.491386851525,373.675583570113,Mxu,2007-10-05 31283427,Fcnj,Oredgnmllrfhmbpgrayny,h,2020-01-30,2017-03-30 15:28:06,539.124935185129,765.668804648178,I,2024-08-03 1601329438,Soeh,Wbnwulywhphbkqncoweg,c,2031-08-03,2015-07-11 22:05:27,499.064356321033,398.671155515439,R,2022-12-24 1476923644,Th,Mjpmbsmjsxylaxdfxdsabawlbmq,t,2011-04-20,2017-04-09 16:35:06,799.051597155189,870.001930682921,H,2029-07-08 532933829,Pnds,Jcrbjfomuiahsmmelobscocblszw,h,2012-01-30,2015-05-22 02:25:37,579.071731576264,312.137139175151,R,2025-07-28 1691575851,Dkfu,Mvsplttdybztuappqgrenrl,z,2018-04-07,2014-09-05 08:13:27,706.381755278624,367.949166040844,Lq,2018-08-11 685240342,Q,Tdocndrnilxuekmenpwukt,c,2021-08-07,2017-09-11 10:07:44,399.168753251046,696.67506250398,Kl,2016-06-26 1237500836,Kw,Sorjayqcyyebzmasjvvaaxbdl,f,2007-02-25,2014-05-20 17:15:46,975.653521239596,308.488444568817,Uo,2030-06-23 1030866314,Ymum,Asdfqnylsfoovmunoyvv,t,2007-05-06,2015-06-14 11:06:46,554.878907536566,395.263186839997,Az,2006-03-01 1674999681,Bjxa,Yxurelgcvfsmrlknzqixc,o,2026-08-02,2017-03-29 19:32:00,503.034985858498,953.349723458919,Yi,2018-01-21 433810477,Mpoq,Driwnsetohqjjbspdcjcq,e,2010-01-02,2017-08-08 14:51:33,296.965208508524,767.378565747002,Au,2004-03-30 199495905,Ujvz,Aovqkyqsozlmiimfnnzl,g,2019-11-06,2014-11-21 19:51:44,408.942355033449,140.41124709901,Ofup,2030-12-03 506475578,Oco,Lffojsuxolrprgwwnulvlnlkl,y,2030-05-23,2013-12-14 23:38:04,193.113895688725,738.66403323536,Fyrc,2012-11-10 1598824850,Wvyn,Nwpcjdjfurtcyuvdkuvsurlra,d,2018-12-09,2017-05-20 23:31:54,643.451646735636,898.618564428118,Wxx,2028-11-02 1133267351,Vpwv,Zofoenyumbdvuwlycgpfoxbwf,a,2028-08-12,2016-10-13 03:31:18,277.60508762561,564.017964789652,Y,2027-11-09 597537664,Xll,Afwkoscdbcxsihpzcmiidqqmxwfyn,e,2018-07-02,2015-12-15 11:31:14,652.541022120296,245.150029773428,Asm,2018-03-25 384204762,X,Ejvwrgipkdcwjojmrmdqxpkbcsph,q,2031-04-07,2017-04-26 06:57:07,232.223610967502,244.333290608755,Mcca,2019-05-23 1512528749,O,Jokfmizvrzhypzttyrbzk,z,2028-05-05,2015-06-26 23:25:59,581.955357725711,83.9138324763225,Kq,2029-12-26 922675693,Im,Nsndyqdmgzwwdigpbdps,k,2022-04-07,2014-10-15 20:50:36,615.364677559289,386.888439015899,O,2009-06-12 1597115386,Vpd,Gblocihnqqtfdcjikhttqwyxsxbys,s,2007-10-20,2016-12-13 13:03:56,739.522210666687,205.262592157937,F,2009-02-17 1060208991,G,Xadweymukeovjhjdnvegiuxn,m,2017-03-06,2014-04-04 08:17:34,11.4275850408839,163.330898696245,X,2010-04-12 1114956255,Tv,Aozpdiookjxscqrwzdccqksalqg,g,2013-08-24,2016-08-13 12:23:04,37.1465096423153,563.923548703978,Jng,2010-03-24 1404301184,M,Yccahbnfjnfqtdqwydnbhfb,i,2013-07-11,2017-01-22 14:18:24,751.617511618704,130.622410741924,Qi,2030-04-28 1381779465,Shp,Eptbzuvyufxkgnrkcsat,r,2006-02-07,2016-08-31 00:05:30,374.642776499802,801.826465316967,Fgz,2031-07-31 919911617,Gy,Yhgfhnklngakvhfqzhvicgjghpozu,u,2019-08-02,2017-04-24 12:06:23,309.447229052636,534.321509084814,Dwm,2024-06-28 554262494,Qu,Uikztjlblqwrxzysylqtr,w,2006-04-25,2016-10-07 20:16:09,561.015125159647,91.2663857877564,Nnob,2017-03-01 1049476014,L,Fpfkinsrrbfwoaivzalygckrpynwo,k,2008-12-28,2015-04-04 00:34:45,539.993887087327,975.747420441242,Jgf,2015-06-02 374301574,K,Mwxymgfmmunscenvkzwchxoion,z,2020-11-07,2014-11-29 01:12:20,614.61031744937,280.563756954187,Wmxu,2022-06-02 2113372697,P,Xswagkeskaeghipipkzhptw,n,2023-10-23,2014-06-03 15:18:13,616.818534031891,276.296647859875,Eky,2012-03-07 1621984815,Er,Iduxjpcoodimbpbhtewjhju,w,2030-04-15,2017-02-02 16:05:30,587.743311462804,234.411217381438,Nzkq,2011-12-20 157012336,Msjg,Ehmyhcvxaafiizyixyeawpbe,x,2026-08-15,2014-09-29 23:34:40,520.887321103777,218.466348116503,Bupy,2008-02-23 154353716,Yr,Tiyntcihdnptffoogibli,h,2022-09-27,2017-01-27 18:35:05,950.328717450764,412.90044058715,Jww,2004-07-28 2136301494,Bg,Qnkvmnksfipkjovawfulrtojj,z,2015-12-09,2016-11-15 07:23:51,504.385947950364,582.141482542335,Ez,2005-08-20 2016979684,Xfz,Xzzqvizhbadbguwxybmncdfqwll,i,2021-07-15,2017-07-24 08:40:19,100.11380077345,663.897635724348,Z,2019-03-05 1480379917,Ynbz,Fmmjxefbtvtmsuujtkxrq,z,2029-02-11,2016-02-10 21:14:43,830.034024468639,262.214907567117,Ed,2004-11-13 1161350030,Ny,Semngdpigxthtxkeddhmgpaoqxaxt,h,2013-02-21,2014-03-07 15:04:08,776.215439092468,865.512566578348,F,2011-12-02 1872671209,Obq,Nbzmgtwlgflrddyxjcrpypvnxv,e,2028-08-24,2016-12-09 22:18:22,525.70585698155,762.667263281842,Py,2017-04-23 1057161230,Lue,Wbsieybjzhlkbsyfmpkoyetmaber,l,2010-11-02,2014-03-23 10:06:27,298.024342068482,486.444588977119,Bnd,2009-02-07 1515538493,Dogg,Zogngevjpysighcujxtjeyj,q,2015-07-07,2017-07-04 02:05:18,297.979389921752,891.403275957053,Kkx,2017-11-07 342921369,N,Debcxwtjfwwpctqnxdbepdewyvenu,v,2006-07-20,2016-11-19 07:24:27,581.738872258802,830.409748400752,T,2022-08-16 553543143,B,Gffkhlrujpazjiaaeecrgpkuqa,g,2018-11-24,2014-05-17 15:59:57,860.532709332431,631.816008422438,Aojy,2029-11-25 1001782227,Kns,Fbhfmfsmcdjjruluhedxnzcy,v,2030-12-24,2017-07-16 14:25:06,74.8857553465691,717.171295414293,Ren,2009-03-01 418643298,Iuu,Ejntqesdnrigkvxgyikncqu,o,2017-01-30,2017-02-05 14:24:30,866.892748450345,480.753636211508,Slm,2014-12-28 1702483216,Dlj,Qhyoaeltshztzkgfnpzhlhf,o,2026-05-20,2017-01-07 08:06:29,845.546683224638,839.198871440812,Btu,2020-10-20 87356704,Gect,Aleeqylcdpgombwjbktvipd,q,2019-04-04,2017-03-29 23:28:12,160.778900217628,952.069265279951,Abk,2028-01-03 1267846764,Zd,Xwttsbvfineketixbkio,q,2016-11-20,2014-10-28 17:29:36,509.079515705388,466.829910160429,N,2026-10-04 1453459633,Uwfa,Wbpxcujvqtgvicyowroklcgh,p,2018-05-07,2017-11-15 18:20:38,520.314649455396,449.103784025229,Ied,2010-12-11 969236729,Lngt,Qdtggftsiyfqqbuuiiouvk,x,2016-05-23,2017-09-20 02:58:13,691.692580791047,65.6540314972652,Ccj,2015-09-04 1733057093,V,Nbihhuduconfrbcerzlfghepdcqfp,u,2027-03-05,2015-10-05 05:19:22,218.227408927971,829.828477385374,Hz,2011-08-19 1077491043,H,Inewzazetvqpsfwteedxf,i,2023-06-12,2014-01-15 21:35:33,977.703983419437,840.111032985203,Vfkm,2015-09-04 2044227101,Z,Khdqfkaaxpdblgcixjxavfxdfe,z,2013-12-04,2016-08-17 19:32:34,224.703164410174,654.022933288488,Gej,2028-04-18 55919765,Ru,Rbjsskzhenpgzwekalblrs,r,2030-06-19,2015-08-08 22:37:27,829.379337760331,242.713629381132,Giks,2007-08-12 1543791416,D,Kmuzbesbihiemabpipzkkdxec,b,2027-06-26,2017-06-15 22:26:16,875.075307150872,114.694632177565,T,2005-06-17 1843767176,Yhm,Nzwgoxsthjcuddtdhppxaipffa,p,2007-08-23,2015-05-19 12:14:16,403.971978185685,96.7027578021878,Wz,2016-04-17 925376200,Wig,Hotuidphtijropfjrbnipcx,g,2025-06-10,2014-03-10 23:13:03,126.226132328727,713.087808672845,Pk,2011-02-17 818304747,Stv,Wxavxctqhkfbvuvxufqnakaw,z,2008-03-10,2014-05-06 09:18:09,109.46002467976,295.197032995148,W,2016-08-16 1191154763,Ep,Tfvndqsmgtqlmsncikmxdvt,f,2021-05-12,2016-07-13 14:16:47,249.298189417132,531.335944091592,Mppf,2020-02-12 53020073,Vzwt,Jtkgrvijigwrseylqxukfs,t,2008-11-10,2017-11-12 16:15:30,217.479036756549,898.019051597463,Nhi,2018-12-07 1598492593,Tcj,Ynyelgtxnkcnfccjcqzfgmxqvbxiy,c,2015-07-16,2014-06-24 15:26:45,100.790313026305,693.588021999965,Glah,2017-12-19 940820608,S,Qzbgljodcdrmpijjjkzkzfln,d,2027-01-12,2014-04-21 13:51:58,70.3287413671281,356.163310052903,Ue,2024-08-30 903297819,Varw,Ohtzamqdrydadhnkoncpmmtqi,n,2024-05-03,2017-02-27 01:29:22,321.26705410018,523.280520701446,So,2015-05-27 1862043622,Mmn,Etklitblxpgnogccndqntlvdpl,m,2023-09-22,2016-03-04 22:19:12,820.812451104081,937.072934087866,A,2016-02-11 917817476,Bih,Mhhtgvdhiuejvzytyhvxhiacq,e,2017-11-15,2017-06-06 23:51:59,822.483462664524,369.751151357662,F,2026-08-12 90469809,L,Cwthekqrpgamsuumkhdhf,c,2006-10-08,2016-07-24 20:38:34,20.3692633753499,479.912752043415,Uynu,2029-08-14 \ No newline at end of file diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj index 73f429b..1bd4a65 100644 --- a/Tests/Tests.csproj +++ b/Tests/Tests.csproj @@ -11,7 +11,7 @@ Properties Tests Tests - v4.7.1 + v4.8 512 {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} @@ -125,6 +125,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/appveyor.yml b/appveyor.yml index a3291ab..5cbf6ed 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,5 +1,5 @@ -version: 1.2.1.{build} -image: Visual Studio 2017 +version: 1.2.9.{build} +image: Visual Studio 2022 environment: access_token: