Claris Engineering Blog

Please check the Claris™ Engineering Blog with a lot of interesting articles. Just recently they added one for plugin installation for FileMaker Server 19.3 with Data API:


Introducing Tesseract 4 to FileMaker

Years ago we added OCR functions to MBS FileMaker Plugin. We decided to go with the Tesseract engine, which was available as C++ library with an open source license. We integrated Tesseract in version 3.02 and stayed with that version for a long time. Since each version requires compatible data files, we could not easily change the library without you guys changing data files.

That brings us to the version 4.11 of Tesseract. We had plans to use the new version and looked for a way to make the transition easy for our plugin users. But since the newer tesseract library exports a C interface, we can load it dynamically at runtime. This way we can give you a OCR.Load function to opt-in to use the newer library. If you don't do an OCR.Load, you would keep the older version and your existing scripts continue to work as before. But once you loaded the newer library, you need the newer data files matching the library version. (more)

MBS FileMaker Plugin, version 11.3pr5

New in this prerelease of version 11.3 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

Render pictures from PDF

Sometimes you need a preview picture of a PDF document. Our PDF Library example shows how to browse a PDF with each page being shown in a record with a preview picture. Great to avoid interactive containers and especially avoid the user getting the whole PDF transferred from server to the client computer.

We have several ways to render PDF pictures:

DynaPDF.GeneratePreview

With DynaPDF Pro you can render PDF pages cross platform (macOS, Windows, iOS and Linux) as you have your own PDF engine on hand. DynaPDF.GeneratePreview is a convenience function to quickly pass in a container value with a PDF inside and get back a PDF with preview. Great way to add previews when inserting a PDF on Windows or Linux. With a preview, the PDF can be shown in a non-interactive container.

Set Variable [ $OutputPDF ; Value: MBS( "DynaPDF.GeneratePreview"; $InputPDF) ]

The function has a flag to only give you an image, so you can also use it like this:

Set Variable [ $OutputPicture; Value: MBS( "DynaPDF.GeneratePreview"; $InputPDF; 1; "preview.jpg") ]

Of course you can do more with DynaPDF.RenderPage as you see before.

PDFKit.GeneratePreview

PDFKit is the PDF library coming with macOS and iOS. You can use PDFKit.GeneratePreview function to add a preview to a PDF container value like the one above and then store the PDF with preview in the database.

Set Variable [ $OutputPDF ; Value: MBS( "PDFKit.GeneratePreview"; $InputPDF) ]

You may run a bot to look through PDF containers, check with our Container.GetTypes function if a preview is there and add it if necessary.

DynaPDF.RenderPage

With DynaPDF we can initialize the library with DynaPDF.Initialize function and then load a PDF in memory and render individual pages. The following script imports the whole PDF and then renders a given page specified by the page number:

# Start new PDF workspace
Set Variable [$pdf; Value:MBS("DynaPDF.New")]
# Load PDF from container
Set Variable [$r; Value:MBS("DynaPDF.OpenPDFFromContainer"; $pdf; Test::data)]
# Import all pages
Set Variable [$r; Value:MBS("DynaPDF.ImportPDFFile"; $pdf)]
# Render one page as Picture
Set Variable [$r; Value:MBS("DynaPDF.RenderPage"; $pdf; $pageNumber)]
# Put in Container
Set Field [Test::PageImage; $r]
# cleanup
Set Variable [$r; Value:MBS("DynaPDF.Release"; $pdf)]


The DynaPDF.RenderPage function can take much more parameters and you may specify the DPI you like to get. And you may specify various flags like for excluding form fields. You can specify the desired image file format (TIFF, JPEG, PNG, BMP or JPC) and pixel format (1bit, gray, RGB, BGR, RGBA, BGRA, ARGB, ABGR, CMYK, CMYKA and GrayA) or compression filter (Flate, JPEG, CCITT3, CCITT4, LZW or JP2K). For example the following call creates a 300 dpi CMYK tiff file:

Set Variable [ $r ; Value: MBS("DynaPDF.RenderPage"; $pdf; 1; 300; 0; 0; "default"; "CMYK"; "Flate"; "Tiff"; "test.tif") ]

If you need a DynaPDF Pro license, please check our pricing website and there we have a bundle of MBS Plugin for Server with DynaPDF Pro license.

PDFKit.GetPDFPageImage

With the PDFKit.GetPDFPageImage function you can query the picture for a page using PDFKit on macOS or iOS:

Set Variable [ $OutputPicture; Value: MBS( "PDFKit.GetPDFPageImage"; MyTable::PDFContainer; $pageNumber; "jpeg"; "test.jpg"; 300; 1 ) ]As you see we can specify page number, desired image type (JPEG, PNG, GIF or BMP), the DPI for the resolution and what box to use. Like DynaPDF we prefer crop box, but fall back to media box for the page. Media box defines the paper size, while crop box would tell the printing company, where to crop the paper to get the desired final page size.


Sending email with a huge custom function

A client surprised me by presenting me a big calculation to send emails:

 

SMail(htmlText, EmRecipient, FromEmail, FromName, plainText, Subject, SMTPServer, SMTPName, SMTPpw, EmailID, Send)

Let ( [

$ToEmail    = MBS ( "FM.executesql" ; "SELECT \"Email\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'TO' " ) ;

$ToName     = MBS ( "FM.executesql" ; "SELECT \"Name\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'TO' " ) ;

$ToEmailcc  = MBS ( "FM.executesql" ; "SELECT \"Email\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'CC' " ) ;

$ToNamecc   = MBS ( "FM.executesql" ; "SELECT \"Name\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'CC' " ) ;

$ToEmailbcc = MBS ( "FM.executesql" ; "SELECT \"Email\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'BCC' " ) ;

$ToNamebcc  = MBS ( "FM.executesql" ; "SELECT \"Name\" FROM \"RM\" WHERE \"EmailID\" = " & EmailID & " AND \"Type\" = 'BCC' " ) ;

$AttCont    = MBS ( "FM.sql.execute" ; "" ; "SELECT \"Container\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NULL " ) ; AttCount = MBS("FM.SQL.RowCount"; $AttCont ) ;

$AttPath    = MBS ( "FM.executesql" ; "SELECT \"Path\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NOT NULL "   ) ; AttCountP = ValueCount ( $AttPath ) ;

$AttNameC   = MBS ( "FM.executesql" ; "SELECT \"Name\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NULL "  ) ;

$AttTypeC   = MBS ( "FM.executesql" ; "SELECT \"Type\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NULL "  ) ;

$AttNameP   = MBS ( "FM.executesql" ; "SELECT \"Name\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NOT NULL "  ) ;

$AttTypeP   = MBS ( "FM.executesql" ; "SELECT \"Type\" FROM \"AT\" WHERE \"EmailID\" = " & EmailID & " AND \"Path\" IS NOT NULL "  ) ;


(more)

dotfmp 21 MBS Plugin Talk

The video of the MBS Plugin Talk session from dotfmp conference 2021 is now available on YouTube:



Watch the MBS FileMaker Plugin, June 2021 News video, which shows what is new in our plugins.
Thanks for Egbert to organize the conference and provide the videos.

Allow FMP URL for WebView2 and skip dialog

You saw the following dialog in FileMaker 19.3?



You can use the checkbox, but it's not permanent. To make it permanent, you need to use regedit and edit the registry:
  • Go to HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft
  • Create new key "Edge" if it is missing
  • Inside Edge, create a new "WebView2" key.
  • Inside WebView2, please create a new string value named "AutoLaunchProtocolsFromOrigins" with this value: [{"allowed_origins":["*"],"protocol":"fmp"}]
  • Exit Regedit and start FileMaker Pro to check if fmp URL works now.
Sadly we can't do those commands with our plugin as it needs to happen with administrator permissions. It should then look like this in RegEdit:



If you automatically install FileMaker, you may do this via command line with a script or regedit import file.
Let us know if you have questions.

FileMaker Server with Data API Plugins

With Claris FileMaker 19.3.1 you can install the MBS Plugin 11.2 for the Data API process.

To install our plugin manually, just copy the plugin to /FileMaker Server/Web Publishing/publishing-engine/wip/Plugins/ folder. Then check in Admin Console to make sure you have plugins enabled for the Data API. The Admin Console doesn't list plugins for Data API. If the plugin is not yet available, you may need to restart the wip process or the whole server to recognize the new plugin.



The exact location is for macOS:

/Library/FileMaker Server/Web Publishing/publishing-engine/wip/Plugins/

For Windows:

C:\Program Files\FileMaker\FileMaker Server\Web Publishing\publishing-engine\wip\Plugins

And for Ubuntu Linux:

/opt/FileMaker/FileMaker Server/Web Publishing/publishing-engine/wip/Plugins

If you have no toggle for Data API plugins in your Admin Console, you may need to get a newer FileMaker Server version.

Our plugins creates you log files in the Logs folder for the output: StdErrDataAPI.log and StdOutDataAPI.log. This way you can watch messages written out via our Trace function in scripts run via Data API.

Please try and don't hesitate to contact us with questions.

PS: This was actually asked to Claris via Ideas section: Support plugins in Data API and older idea Support plugins in Data API.

MBS Plugin 11.2 supports FileMaker 19.3 with Data API Plugins and Apple M1

Nickenich, Germany - (June 24th, 2021) -- MonkeyBread Software today is pleased to announce their support for FileMaker version 19.3. Our MBS FileMaker Plugin 11.2 for macOS, iOS, Linux and Windows has been tested with FileMaker 19.3 and we like to report on compatibility:

Apple M1
Our MBS Plugin in version 11.2 ships with Apple Silicon support included. We built the plugin for macOS to include both code for Intel and ARM, so you have only one file to install. If you load external libraries like dynapdf.dylib or libxl.dylib please refer to the included updated libraries.

Ubuntu
Our plugin supports the new Ubuntu Linux distribution for server as well as the older CentOS 7.x distributions. One plugin version for both environments makes installing our plugin easy.

Data API
Since FileMaker 19.3 supports plugins for the DATA API, you can install our plugin into the right folder and enable plugins. Just copy the plugin to Web Publishing/publishing-engine/wip/Plugins folder for your server on macOS, Windows or Linux. Or install it by using the Install Plugin Script Step.

Windows Microsoft Edge
On Windows Claris moved the Web Viewer to use Microsoft Edge. Instead of the deprecated Internet Explorer engine, they now use new components based on the Chrome project. As of today our WebView functions do not support the newer engine.

All customers are welcome to try the new FileMaker version, update their plugin if needed. We can provide trial licenses for testing or assist with ordering a newer license.
Please test your solution with the new FileMaker versions before updating all your clients and servers.

FileMaker 19.3.1 releases

As you may have seen, Claris Inc. released the new version 19.3.1 of its FileMaker product family.
This update brings a lot of improvements to the product with Native Apple silicon support, Microsoft Edge support for Windows, Ubuntu Linux for Linux and the updated quick start experience. Read more in the releases notes.

MBS Plugin has been updated in version 11.2 to take advantage of the latest FileMaker Plugin SDK for version 19.3. Our plugin works well natively on Apple Silicon as well as Ubuntu.

See
Announcement in the community: Claris FileMaker 19.3 is now available!
Claris Blog: More power. No limits. The latest Claris product release.
Claris FileMaker Pro 19.3.1 Release Notes
Claris FileMaker Server 19.3.1 Release Notes
Claris FileMaker Cloud 2.19.3.1 Release Notes
Downloads

To download the new version, you may use the download page for your licensed software (see your license email for a link) or use the in-product updater next week.

MBS FileMaker Plugin, version 11.3pr4

New in this prerelease of version 11.3 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

Using zbar library with FileMaker

You may know that our MBS FileMaker Plugin has functions for barcode generation and recognition. The Barcode.Detect function is based on the open source zxing library can recognize various types, but sadly not all QRCodes recently.

To solve this we add support for the zbar open source library with our new Barcode.Scan function. Since the library is GPL, you have to include the library file with the application and load it at runtime with Barcode.LoadLibrary function. You may get a zbar library from the project website or from our Libs folder in download section. Our example project shows how to load the library at startup of application. On Linux you may just be able to install libzbar0 package and get libzbar installed.



When you like to scan a barcode, get a picture for the barcode. Make sure contrast is good and your barcodes are fully visible with a bit of border space around. Since scanning is done in black and white, you can preprocess the image to increase visibility with auto leveling, e.g. GMImage.Level function. You call Scan() function and pass the picture and you receive a JSON array with barcodes found. You may get multiple result with different quality values, so you may pick the highest one. Sometimes a few lines or some text is recognized as a barcode. To increase reliability you may limit the list of barcodes types you like to have and thus ignore all others.

Supported types includes EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR Code.

Our tests show that zbar can recognize a few barcodes, which didn't work with Barcode.Detect. But since we also found EAN and UPC barcodes recognized in zxing, but not in zbar. Well, you may eventually use both to see what recognizes what. (more)

Convert HEIF images if needed

Recently a client contacted us for a problem they have. A solution hosted via FileMaker Server with Web Direct shows a layout with a container. Users can click on a button to upload an image, which uses Insert from Device script step. But if the user has an iPhone, the uploaded image may be an HEIF one. The High Efficiency Image File Format is great to preserve images in high quality, but other tools may not be able to read it. And we run into the problem, that the container is marked to be of type JPEG, which confuses other scripts (see Container.GetTypes function).

 

Here is a script to look on the inserted image and convert it to PNG with our Container.ReadImage function:  

 

# let user take a picture

Insert from Device [ Contacts::Photo Container ; Type: Camera ; Camera: Back; Resolution: Full ] 

# check filename

Set Variable [ $name ; Value: GetAsText(Contacts::Photo Container) ] 

Set Variable [ $extension ; Value: Right ( $name ; 5 ) ] 

If [ $extension = ".heif" or $extension = ".heic" ] 

# we got a HEIF image

# get new file name

Set Variable [ $name ; Value: Substitute($name; ".heif"; ".png") ] 

Set Variable [ $name ; Value: Substitute($name; ".heic"; ".png") ] 

# now convert to PNG

Set Variable [ $image ; Value: MBS( "Container.ReadImage"; Contacts::Photo Container; "PNG"; $name ) ] 

If [ MBS("IsError") = 0 ] 

# save on success to container

Set Field [ Contacts::Photo Container ; $image ] 

Else

Show Custom Dialog [ "Read Image Failed?" ; $image ] 

End If

End If 

 

As you see we also rename the name for the container, so it matches the content. You can decide if you prefer JPEG (smaller, no alpha channel), PNG (higher quality and alpha channel possible) or another type.

This script can be used on FileMaker Server on macOS where our plugin can use the built-in system functions. Otherwise you can run it in FileMaker Pro or in your iOS app based on the FileMaker iOS SDK.

PS: fixed set field line to use $image instead of $name.


Custom Functions stored in a database

Since we got this nice database for JavaScript to do custom functions (see blog article: Custom Functions in JavaScript), we further thought about doing this with FileMaker directly. Imaging to have your custom function in a central start database. Your solution opens, defines your own environment to store them and then loads all your custom functions from a table in the database. You may even have flags to define which are active vs. inactive, testing vs. production quality or maybe limited to admins. Once you have them loaded in memory, you can call them anywhere in any open file as long as FileMaker is running.

Here is our example database:

As you see we can define functions with as many parameters as needed. Then you enter the body of the function with whatever code you have in your custom functions. We got a button for macOS to format the calculation with our Syntaxcoloring functions. Then we got a button to check errors, which will let FileMaker parse your code with the parameter definition included, so we can find syntax errors. Sadly we can't tell where the error is exactly, but we may tell you if the syntax is okay or what error code we got. (more)

MBS FileMaker Plugin, version 11.3pr3

New in this prerelease of version 11.3 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

Custom Functions in JavaScript

We saw a presentation at dotfmp conference from Philipp Puls about him storing his custom functions in a table inside the database. With help of one custom function in FileMaker itself, he can run them all. This dispatcher function would use execute SQL functions in MBS FileMaker Plugin to query the expression by name, then add the parameter inside and evaluate it. Quite convenient to have all custom functions stored in one database. Based on that idea we developed two new ways at MBS to do custom functions in JavaScript and later without.

Custom Functions in JavaScript

Since MBS FileMaker Plugin comes with a built-in JavaScript engine, which works without web viewer and even on a server side script, we can use it to define custom functions, which we can call anywhere in FileMaker:



This example database included with 11.3pr2 shows how to do it. It sets up the whole thing in the start script. With JS.New we make a new JavaScript environment with the special name "js". Instead of getting a handle number from the plugin, we define the identifier ourselves. This way we can refer to this JavaScript environment everywhere. It's global for all files and all solutions opened in FileMaker and can be initialized in FileMaker Pro, Server (Scripting + Web Direct) as well as FileMaker iOS SDK based applications. (more)

Follow up on good virtual conferences

Event planning strategies for virtual conferences, online events and hybrid meetings

After my blog post What is needed for a good virtual conference from last weekend, I got some feedback. Thanks for everyone replying. The setup listed in the blog post was heavily inspired from the dotfmp conference, but other conferences may have a different and less chaos in the setup.

After over a year of virtual conferences, online meetings and a lot of cancellations, people are eager to get back to normal live. While some enjoy the virtual conferences, others dislike them. When we talked about the user group, it looks like some groups like to stay virtual, but others want to go back to local meetings in-person. Other groups may mix virtual meetings for presentations and in-person restaurant meetings for the social gathers. Like one month virtual and other month in-person. Quite a few people want to travel again, so long term virtual only conferences may no longer happen. (more)

MBS @ FMTraining.TV

Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.

A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.


Do you like this video?
Please let Richard know and send him your wishes or ideas for future live broadcast as well as topics for training videos. And check out the FileMaker Training bundles as well as their new book for FileMaker, updated for2021.

Check for Adobe Reader for IE11

If you use WebViewer in FileMaker or HTMLViewer in Xojo on Windows with IE11 engine and you show PDF documents, you need a PDF plugin for IE. To check whether you have Adobe PDF Reader browser support installed for IE11, please start Internet Explorer (not Edge!), then go to the menu (gear icon in the toolbar on the right) and to the Manage Add-ons dialog:



Select toolbars and extensions first on the left, then go down to pick all add-ons in the popup menu. Then on the right, you should see Adobe PDF Reader in the list. This should show 32-bit and 64-bit versions there. If one is missing, repair your Adobe Reader installation. Seems like one version of Adobe Reader shipped this year where the 64-bit part was missing. You may get current one where it is included again.

PS: See also Windows updates breaks PDF display in FileMaker

Windows updates breaks PDF display in FileMaker

Please be aware that Microsoft Windows got an update KB5003637, which breaks FileMaker displaying PDFs in an interactive container.

You may want to not install this update for some time or uninstall it when you find it installed.

An upcoming FileMaker release may switch to use Edge/Chrome for rendering PDF documents, so this will get fixed soon by Claris.

Alternatively you can use our MBS FileMaker Plugin to render PDF pages (DynaPDF.RenderPage) and have them show as JPEG or PNG pictures in a container.

See also posting in Claris Community: Suddenly PDF are not shown in FileMaker (since today !) in multiple computer / different customer

PS: the newer KB5004760 patch for Windows 10 may fix this.

MBS FileMaker Plugin, version 11.3pr2

New in this prerelease of version 11.3 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

MBS @ FMTraining.TV

Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.

On Wednesday, 9th June 2021 at 1 PM PDT (22:00 o'clock in Germany), we may show you a few MBS Plugin examples and answer questions:



Please bring questions!

What is needed for a good virtual conference


Let's collect what you may need to run a virtual conference. This blog post may be updated later to add more details, so please send us feedback. MBS has hosted over 10 conferences/events in the past, but since we may run a virtual one someday, let's think about what may be needed for a company to run such a virtual conference:


Attendees

  • Virtual conference, so no per person cost like food or chairs, so make it free to join.
  • Use existing logins for company's forum/community to avoid people register again. Preferable single sign-on for everything.
  • Email all your users, prospects and customers to let them know, early to mark dates in calendar and later to remind them.
  • Take signups before and while the conference runs.
  • Let attendees sign a checkbox or so for them being okay with recordings showing them if they ask a question or present in a session.
(more)

MBS @ FMTraining.TV

Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.

A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the DynaPDF functions in the MBS FileMaker Plugin. Watch it on YouTube.



Next video stream with MBS will be on Wednesday, 9th June 2021. And the recording from the Q&A session from 4th June 2021 should be available soon.

Do you like this video?
Please let Richard know and send him your wishes or ideas for future live broadcast as well as topics for training videos. And check out the FileMaker Training bundles as well as their new book for FileMaker, updated for2021.

MBS FileMaker Plugin, version 11.3pr1

New in this prerelease of version 11.3 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in Dropbox folder or ask for being added to the dropbox shared folder.

MBS FileMaker Plugin, June 2021 News

For dotfmp 2021 we present what is new this year in MBS FileMaker Plugin:

ThumbnailMBS FileMaker Plugin, June 2021 News

(English)

36:32 minutes

Watch on Youtube

Subscribe to our podcast feed
(more)

Archives

Jul 2024
Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008